0

我目前在 php 中工作。我当前的表单应该为电子邮件模板生成一些标准。它有一个收件人、抄送和密件抄送字段。我当前的“To”代码工作正常。然后我想一次验证多封电子邮件。例如,如果有人输入了 example@example.com、test@test.com 等。我希望它检查每一个。由于某种原因,它抛出了一个错误。以下是我当前的 php.ini 文件。我想知道是否有办法可以看到错误是什么。有什么想法或建议吗?

$errTo = $_POST['To'];
$errCC = $_POST['CC'];
$errBCC = $_POST['BCC'];
function died() 
{
$error = false;
return $error;
}

我在这里遇到了我的问题

if($_POST['submit'] == 'Submit')
{
if(filter_var($errTo, FILTER_VALIDATE_EMAIL))
{
    if(isset($errCC))
    {
        $errCC = explode(",", $errCC);
        $count = count($errCC);
        for($i=0; $i<$count; ++$i)
        {
            $errCC[$i] = str_replace(" ", "",$errCC[$i]);
            echo $errCC[$i];
            if(!filter_var($errCC[$i], FILTER_VALIDATE_EMAIL))
            {
                $error = died();
            }
        }
    }
4

1 回答 1

0

此函数在失败时总是返回 false,因此您需要自己处理原因。原因始终是它不是有效的电子邮件地址。它不会告诉你This email is missing a @ symbol

$errors = array();
if($_POST['submit'] == 'Submit')
{
    // Check the to field and add it to the error array if its wrong
    if(!filter_var($errTo, FILTER_VALIDATE_EMAIL))
    {
       $errors[] = $errTo;
    }

    if(isset($errCC))
    {
      $errCC = explode(",", $errCC);
      $count = count($errCC);
      for($i=0; $i<$count; ++$i)
      {
          $errCC[$i] = str_replace(" ", "",$errCC[$i]);
          echo $errCC[$i];
          if(!filter_var($errCC[$i], FILTER_VALIDATE_EMAIL))
          {
              // Add to our array the invalid emails
              $errors[] = $errCC[$i];
          }
      }
    }

    // Check if we have any invalid emails    
    if(count($errors))
    {
      // Display each email, remember to strip out 'badness' if you are outputting user variable to the browser
      foreach($errors as $err)
      {
          echo strip_tags($err) . " is not an email address<br />";
      }
    }
}
于 2013-08-01T16:33:57.410 回答