【发布时间】:2019-08-28 18:17:01
【问题描述】:
我有一个 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 语句
【问题讨论】:
-
使用
header后需要退出,程序无法继续运行。 -
你的
elseif( ... )不应该是else吗? -
$mail 应该是 $mailFrom 吧?
-
如果 !只计算第一个 empty() 替换为 else
-
您的问题是缺少括号,其中包含满足条件时将运行的代码。你的
elseif没有这个。if (condition) { /* code */ }
标签: php