复选框为空时,不显示$ error_message

时间:2018-10-08 15:17:24

标签: php html5 forms checkbox

<form name="contactform" method="post" action="send_form_email.php">

<!--Name input-->
<input placeholder="Full Name *" type="text" name="name" maxlength="50">
<br />      

<!--Email input-->
<input placeholder="Email Address *" type="email" name="email" maxlength="80">
<br />

<!--Phone number input (not required)-->
<input placeholder="Telephone Number" type="tel" name="telephone" maxlength="15">
<br />

<!--Company name input (not required)-->
<input placeholder="Company" type="text" name="company" maxlength="50">
<br />

<!--Comments & messege input-->
<textarea  placeholder="Please include as much information as possible *" name="comments" maxlength="500" cols="25" rows="5"></textarea>
<br />

<!--Check for privacy policy-->
<label class="GDRP">
I consent to having this website store my submitted information so they can respond to my inquiry.
  <input type="checkbox" name="GDRP">
</label>

<!--Submit button-->
<input type="submit" value="SUBMIT">

</form>

这是我的HTML-我不知道它对帮助我找到解决方案有多重要,但我想,为什么不呢?我尝试清理它,以便您尽快获得帮助。唯一重要的字段是“名称”,“电子邮件”,“评论”和有关“ GDRP”的问题

<?php if(isset($_POST['email'])) {

                // EDIT THE 2 LINES BELOW AS REQUIRED
                $email_to = "email@adress.com";
                $email_subject = "www.Adress.com - CONTACT FORM";


                function died($error) {
                    // error code can go here
                    echo "We are very sorry, but there were error(s) found with the form you submitted: ";
                    echo $error."<br />";
                    echo "Please fix these errors.";
                    die();
                }

                // validation expected data exists
                if(
                    !isset($_POST['name']) ||
                    !isset($_POST['email']) ||
                    !isset($_POST['company']) ||
                    !isset($_POST['telephone']) ||
                    !isset($_POST['comments']) ||
                    !isset($_POST['GDRP'])
                ) { 
                died('We are sorry, but there appears to be a problem with the form you submitted.'); 
                }

                $name = $_POST['name']; // required
                $email_from = $_POST['email']; // required
                $telephone = $_POST['telephone']; // not required
                $company = $_POST['company']; // not required
                $comments = $_POST['comments']; // required
                $GDRP = $_POST['GDRP']; // required

                $error_message = "";
                $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
                $string_exp = "/^[A-Za-z .'-]+$/";
              if(!preg_match($string_exp,$name)) {
                $error_message .= '<br /><br /><font color="red">Full Name</font><br /><br />';
              }
              if(!preg_match($email_exp,$email_from)) {
                $error_message .= '<font color="red">Email Address</font><br /><br />';
              }
              if(strlen($comments) < 2) {
                $error_message .= '<font color="red">Comments</font><br /><br />';
              }
              if(!empty($GDRP)) {
                $error_message .= '<font color="red">GDRP Agreement</font><br /><br />';
              }

              if(strlen($error_message) > 0) {
                died($error_message);
              }
                $email_message = "Form details below.\n\n";

                function clean_string($string) {
                  $bad = array("content-type","bcc:","to:","cc:","href");
                  return str_replace($bad,"",$string);
                }

                $email_message .= "First Name: ".clean_string($name)."\n";
                $email_message .= "Email: ".clean_string($email_from)."\n";
                $email_message .= "Company: ".clean_string($company)."\n";
                $email_message .= "Telephone: ".clean_string($telephone)."\n";
                $email_message .= "Comments: ".clean_string($comments)."\n";


            // create email headers
            $headers = 'From: '.$email_from."\r\n".
            'Reply-To: '.$email_from."\r\n" .
            'X-Mailer: PHP/' . phpversion();
            @mail($email_to, $email_subject, $email_message, $headers);  
        ?>

        <body>
        Thank you for contacting us. We will be in touch with you as soon as possible.
        </body>

        <?php
        }
        ?>

我的问题是,未填写复选框(GDRP)时未显示$ error_message。实际上,当GDRP为空时,没有复选框显示。如果您填写“ GDRP”,但将其他[必填字段]留空,则将显示除“ GDRP”外的所有$ error_message。

2 个答案:

答案 0 :(得分:1)

if(!empty($GDRP)) { // if not empty
    $error_message .= '<font color="red">GDRP Agreement</font><br /><br />';
}

看起来您正在检查$ GDPR是否为空,这应该是相反的。

if(!empty($GDRP)) {更改为if(empty($GDRP)) {

答案 1 :(得分:0)

仅选中的复选框发送并在POST中可用。因此,看起来在以下几行中您的脚本已完成,其他错误未显示:

                  !isset($_POST['GDRP'])
                ) { 
                died('We are sorry, but there appears to be a problem with the form you submitted.'); 
                }