错误重定向到失败页面

时间:2015-02-02 07:14:51

标签: php forms

我有一个包含几个字段的表单。

进入所有字段后,我们会将详细信息发送给我。

如果缺少任何字段,表单将重定向到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中开始输出)< / p>

这是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");
        }
    }
?>

3 个答案:

答案 0 :(得分:3)

检查$_POST['choices']是否设置并且是否为数组且不为空,如果是 - implode。 第二个错误也会消失。

答案 1 :(得分:2)

使用isset()

if(isset($_POST['choices'])) {  // This will check if this variable is set or not.
    $choice = implode(',', $_POST['choices']);  
}

答案 2 :(得分:1)

在&#39;选项&#39;上使用isset在尝试使用它之前发布变量。当您已经将文本输出到浏览器时,您也尝试传递标题信息(可能有错误)。