PHP IF ELSE语句无法正确执行

时间:2019-04-07 12:48:31

标签: php

我有一个html表单和一个php脚本,用于处理表单输入以进行验证,但我遇到了问题。如果表单为空,它将不会执行if语句中的第一个标头header("Location: error.html?mailerror");,而是立即执行elseif语句中的标头header("Location: thanks.html?mailsend");。我写了这个php验证脚本,以确保用户不提交空表格,但看起来不起作用。非常感谢您能帮助我。

我尝试在第一个if语句中添加回显,并且它可以正确执行,例如,当用户提交空表单时,它将回显“请填写所有字段”。现在,我尝试放置一个指向到error.html文档。这就是为什么我将echo替换为header的原因,就像一个是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="test@fairus-test-site.webstarterz.com";
     $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语句

2 个答案:

答案 0 :(得分:0)

退出标题:

header("Location: error.html?mailerror");
exit;

否则,脚本将继续运行。而且由于第二个{}周围没有括号if(),所以它将运行每个语句(在if()语句之后的语句之后)。

答案 1 :(得分:0)

我认为这是因为您试图在elseif中检查第一个!空行,这意味着.. 如果$ salutation不为空且名称为空..等等 因此,如果没有其他方法,那是错误的。

elseif(!empty($salutation)||!empty($name)||!empty($subject)||!empty($contact)||!empty($mail)||!empty($date)||!empty($event)||!empty($address)){
 // your code
}

如果在您的代码上,我在其他地方看不到{}。