我有一个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语句
答案 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
}
如果在您的代码上,我在其他地方看不到{}。