我在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);
解释是因为如果脚本死了,它就不会到达邮件中。