重定向到失败页面时出错
我有一个表格,需要在几个领域。
在输入所有字段后,电子邮件会发送给我详细信息。
如果缺少任何字段,表单将重定向到fail.html文件。
如果我至少选择了其中一个选择值,我将重定向到fail.html页面。
但是,问题是,如果我不选择任何选择多个下拉列表,我得到这个错误。
警告:implode()[function.implode]:第6行传递给/home/mydomain/public_html/iComm/contact.php的参数无效
警告:无法修改标头信息 - 已在第19行的/home/mydomain/public_html/iComm/contact.php(由/home/mydomain/public_html/iComm/contact.php:6开始的输出)发送的标头
这是HTML。
<div id="form">
<form method="post" action="contact.php">
<input type="text" name="fullName" placeholder="Full Name">
<input type="email" name="email" placeholder="Email Address">
<input type="text" name="number" placeholder="Phone">
<div class="styled-select">
<select multiple="multiple" name="choices[]">
<option style="color:grey";" value="Fri 8AM">Fri 20 Mar 8PM</option>
<option style="color:grey";" value="Sat 8AM">Sat 21 Mar 8AM</option>
<option style="color:grey";" value="Sat 2PM">Sat 21 Mar 2PM</option>
<option style="color:grey";" value="Sat 8PM">Sat 21 Mar 8PM</option>
<option style="color:grey";" value="Sun 8AM">Sun 22 Mar 8AM</option>
</select>
</div>
<input type="submit" class="button" value="Sign Up">
</form>
这是PHP文件。
$fullName= $_POST['fullName'];
$email=$_POST['email'];
$tel=$_POST['number'];
$choice = implode(',', $_POST['choices']);
if(!empty($fullName) && !empty($email) && !empty($tel) && !empty($choice)){
$to = 'm@gmail.com';
$subject = '2015';
$msg = "$fullName is keen to join. His/her email address is $email and number is $tel. He/She chose $choice.";
mail($to, $subject, $msg, 'From: ' .$email);
header("Location: success.html");
}
else{
if(empty($fullName) || empty($email) || empty($tel) || empty($choice)){
header("Location: fail.html");
}
}
?>
使用isset()
if(isset($_POST['choices'])) { // This will check if this variable is set or not.
$choice = implode(',', $_POST['choices']);
}
检查$_POST['choices']
并且是数组而不是空,如果是 - implode
。 第二个错误也会消失。
在尝试使用它之前,在'选择'后置变量中使用isset
。 当您已经向浏览器输出文本时(也许有错误),您还试图传递标头信息。
上一篇: Error redirecting to failure page
下一篇: How can I properly validate for a unique email address?