У меня есть html-форма и php-скрипт, обрабатывающий ввод формы для целей проверки, но я столкнулся с проблемой. если форма пуста, она не будет выполнять первый заголовок в операторе if, который является header("Location: error.html?mailerror");
, вместо этого он сразу же выполнит заголовок в операторе elseif, который является header("Location: thanks.html?mailsend");
. Я написал этот скрипт проверки php, чтобы убедиться, что пользователи не отправляют пустую форму, но похоже, что это не сработает. Очень ценю, если вы могли бы мне помочь.
Я попытался поместить эхо в первый оператор if, и он выполняется правильно, например, когда пользователь отправляет пустую форму, он будет повторять «Пожалуйста, заполните все поля». Теперь я пытаюсь поместить заголовок, указывающий на ошибку .html документ. Вот почему я заменил эхо на заголовок точно так же, как и оператор else if, с той лишь разницей, что он указывает на страницу error.html.
<?php
if (isset($_POST['submit'])){
$salutation=$_POST['salutation'];
$name=$_POST['name'];
$subject=$_POST['subject'];
$contact=$_POST['contact'];
$mailFrom=$_POST['mail'];
$date=$_POST['date'];
$event=$_POST['event'];
$address=$_POST['address'];
/* If form IS empty it will execute the code below */
if (empty($salutation)||empty($name)||empty($subject)||empty($contact)||empty($mail)||empty($date)||empty($event)||empty($address)){
header("Location: error.html?mailerror");
}
/* If the form is NOT empty it will execute the code below */
elseif (!empty($salutation)||empty($name)||empty($subject)||empty($contact)||empty($mail)||empty($date)||empty($event)||empty($address))
$mailTo = "[email protected]";
$headers = "From: ".$mailFrom;
$txt = "You have receive a booking from\n".$salutation." ".$name."\nContact Number: ".$contact.".\nEvent Date: ".$date.".\nType of Event: ".$event.".\nPackage Selected : ".$subject.".\nEvent Address: ".$address;
mail($mailTo,$subject,$txt,$headers);
header("Location: thanks.html?mailsend");
}
Как только пользователь нажмет «Отправить», он выполнит второй оператор if else, даже если форма пуста.
Разве ваш elseif ( ... )
не должен быть просто else
?
$mail, вероятно, должен быть $mail From right ?
а в другом, если ! учитывается только для первой замены empty() на else
Ваша проблема заключается в отсутствии квадратных скобок, содержащих код, который будет выполняться при выполнении условия. В вашем elseif
этого нет. if (condition) { /* code */ }
Выход из заголовка:
header("Location: error.html?mailerror");
exit;
В противном случае скрипт продолжит работу. А поскольку у вас нет квадратных скобок {}
вокруг второго if ()
, он будет запускать каждый оператор (после оператора сразу после оператора if ()
).
Я думаю, это потому, что вы пытаетесь проверить первую !пустую строку в elseif, это означает.. если $salutation не пусто и имя пусто .. и т. д. Итак, есть неправильный метод if else.
elseif (!empty($salutation)||!empty($name)||!empty($subject)||!empty($contact)||!empty($mail)||!empty($date)||!empty($event)||!empty($address)){
// your code
}
и я не видел {} в else if в вашем коде.
После использования
header
вам нужно выйти, чтобы программа не продолжила работу.