Оператор PHP IF ELSE не выполняется должным образом

У меня есть 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, даже если форма пуста.

После использования header вам нужно выйти, чтобы программа не продолжила работу.

Dave 07.04.2019 14:51

Разве ваш elseif ( ... ) не должен быть просто else?

Niet the Dark Absol 07.04.2019 14:52

$mail, вероятно, должен быть $mail From right ?

jonathan Heindl 07.04.2019 14:54

а в другом, если ! учитывается только для первой замены empty() на else

jonathan Heindl 07.04.2019 14:55

Ваша проблема заключается в отсутствии квадратных скобок, содержащих код, который будет выполняться при выполнении условия. В вашем elseif этого нет. if (condition) { /* code */ }

Qirel 07.04.2019 14:57
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
5
438
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Выход из заголовка:

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 в вашем коде.

Другие вопросы по теме