PHP使一个字段不是强制性的


PHP making a field not mandatory

如何使"email"字段不是必填的?即使没有人填写该字段,表单也应该提交。

在下面的代码中,"email"字段是必填的。

我试图添加如果!isset电子邮件字段,以便$email_from将得到单词"空",但它不适合我。

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

    // EDIT THE 2 LINES BELOW AS REQUIRED
    $email_to = "aaaaa@aaaaa.com";
    $email_subject = "Messeage from your site";


    function died($error) {
    ?>

 <?php
        die();
    } 

    // validation expected data exists
    if(!isset($_POST['name']) ||
        //!isset($_POST['email']) || /* i tried to comment this line, but didnt work. */
        !isset($_POST['telephone']))
{
        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

    $error_message = "";
    $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+'.[A-Za-z]{2,4}$/';
  if(!preg_match($email_exp,$email_from)) {
    $error_message .= 'The Email Address you entered does not appear to be valid.<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 .= "Telephone: ".clean_string($telephone)."'n";



// create email headers
$headers = 'מאת: '.$email_from."'r'n".
'חזור ל: '.$email_from."'r'n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);  
?>
 <?php
    echo '<META HTTP-EQUIV="Refresh" Content="0; URL=thank_you.html">';    
    exit;   
    ?>

<?php

}
?>
 if(!isset($_POST['name']) ||
 !isset($_POST['telephone'])){
 if(isset($_POST['email'])){
//all code for email inside here
}
}
如果$_POST['email']为空,应该不会再给您带来麻烦了。

preg_match$email_form是必需的。


如果您先检查$email_form是否设置,然后再执行preg_match,它必须工作

:

if(!empty($_POST['email'])){
     if(!preg_match($email_exp,$email_from)) {
         $error_message .= 'The Email Address you entered does not appear to be valid.<br/>';
     }
} else {
     $email_from = '';
}

我照做了,而且成功了:

    if(!empty($_POST['email'])){
  if(!preg_match($email_exp,$email_from)) {
    $error_message .= 'The Email Address you entered does not appear to be valid.<br />';
  }
    }

在php5中使用FILTER_VALIDATE_EMAIL检查email是否有效

if(isset($_POST['email']))
{
  $email = $_POST['email'];
  if(!filter_var($email, FILTER_VALIDATE_EMAIL))
  {
    echo $email." E-mail is not valid.";
  }
  else
  {
    echo $email." E-mail is valid.";
  }
}