foreach中的if/else继续发送邮件


if/else in foreach keep sending mail

我在foreach中有一个if/else语句,但当表单正常时,由于foreach,电子邮件被发送了7次。。

我怎么能检查每张表格,但只发一次邮件?

这是代码:

foreach($required as $field) {
    if (empty($_POST[$field])) {
        echo'<script>alert("vul a.u.b. het complete formulier in")</script>';
        die(); 
    } else {
        mail($settings['email'], 'Donateur formulier website', $contents_mail, $headers);
        header("Location: ".$urlClass->buildUrl(38));
    }
}

谢谢!

您可以使用一个标志变量:

$flagSendMail = true;
foreach($required as $field) {
  if (empty($_POST[$field])) {
    $flagSendMail = false;
  } 
}
if($flagSendMail){
  //Can send
  mail($settings['email'], 'Donateur formulier website', $contents_mail, $headers);
  header("Location: ".$urlClass->buildUrl(38));
} else {
   //Validation handling
}

您可以这样做:

foreach($required as $field) {
    if (empty($_POST[$field])) {
        echo'<script>alert("vul a.u.b. het complete formulier in")</script>';
        die(); 
    }
}
mail($settings['email'], 'Donateur formulier website', $contents_mail, $headers);
header("Location: ".$urlClass->buildUrl(38));

因为如果有一个必填字段没有填写,die函数将停止此后的任何操作。因此,除非所有字段都已填充,否则mail不会运行。

    foreach($required as $field) {
      if (empty($_POST[$field])) {
        echo'<script>alert("vul a.u.b. het complete formulier in")</script>';
        die(); 
      } else {
        header("Location: ".$urlClass->buildUrl(38));
      }
    }
    mail($settings['email'], 'Donateur formulier website', $contents_mail, $headers);

解释是因为如果脚本死了,它就不会到达邮件中。