我如何编写这段代码,使其在提交空字段时响应响应?

时间:2017-02-07 作者:Daniel

因此,我正在开发一个时事通讯订阅插件,我正在尝试创建一个邮件程序,这样我就可以发送一封电子邮件,收到一个请求,更新我的表单并给我一条消息。在新闻稿订阅邮件中。php文件,我试图检查是否已发送帖子,但我编写的代码似乎毫无用处。如果我尝试在不添加post数据的情况下进行订阅,但没有添加post数据,那么它应该会回显一个响应,相反,它成功地提交了完全没有内容的空字段。我要做的就是确保填写好姓名和电子邮件。

<?php
        if($_SERVER[\'REQUEST_METHOD\'] == "POST"){
                // Get Post Data
                $name = strip_tags(trim($_POST[\'name\']));
                $email = filter_var(trim($_POST[\'email\']), FILTER_VALIDATE_EMAIL);
                $recipient = $_POST[\'recipient\'];
                $subject = $_POST[\'subject\'];

                // Validation
                if(empty($name) || empty($email)){
                        // Send Error
                        http_response_code(400);
                        echo \'Please Fill Out All Fields\';
                        exit;
                }
        }
我知道我可以在newsletter subscriber类的Name和Email字段中添加required。php和我确实有它,但我暂时删除了它,以确保上面的代码片段正常工作。

<?php

class Newsletter_Subscriber_Widget extends WP_Widget {

        /**
         * Sets up the widgets name etc
         */
        public function __construct() {
                // widget actual processes
                parent::__construct(
                        \'newsletter_subscriber_widget\', // Base ID
                        __( \'Newsletter Subscriber\', \'ns_domain\' ), // Name
                        array( \'description\' => __( \'A simple email subscriber\', \'ds_domain\' ), ) // Args
                );
        }

        /**
         * Outputs the content of the widget
         *
         * @param array $args
         * @param array $instance
         */
        public function widget( $args, $instance ) {
                // outputs the content of the widget
                echo $args[\'before_widget\'];

                echo $args[\'before_title\'];
                if(!empty($instance[\'title\'])){
                        echo $instance[\'title\'];
                }
                echo $args[\'after_title\'];
                ?>
                        <div id="form-msg"></div>
                        <form id="subscriber-form" method="post" action="<?php echo plugins_url(). \'/newsletter-subscriber/includes/newsletter-subscriber-mailer.php\'; ?>">
                          <div class="form-group">
                            <label for="name">Name: </label><br>
                            <input type="text" id="name" name="name" class="form-control" >
                          </div>
                          <div class="form-group">
                            <label for="email">Email: </label><br>
                            <input type="text" id="email"  name="email" class="form-control" >
                          </div>
                          <br>
                          <input type="hidden" name="recipient" value="<?php echo $instance[\'recipient\']; ?>">
                          <input type="hidden" name="subject" value="<?php echo $instance[\'subject\']; ?>">
                          <input type="submit" class="btn btn-primary"  name="subscriber_submit" value="Subscribe">

1 个回复
最合适的回答,由SO网友:pants 整理而成

尝试执行print_r() 在设置post变量和验证以查看其中的内容之间。

echo \'<pre>\';
print_r( $email );
print_r( $name );
echo \'</pre>\';

相关推荐

Displaying Widgets

在主题开发期间,我了解如何在functions.php 文件然而,当谈到在主题中显示小部件时,是否有一种首选的方式来显示它们-primary,使用the_widget() 功能与dynamic_sidebar() 作用