请告知为什么表单没有重定向到网址?

时间:2013-02-18 00:59:57

标签: php

请帮助这个php联系表格。但是,它有效,我想将访问者重定向到另一个.html页面,而不是显示一条谢谢你的消息,但我不想丢失联系表单信息。谢谢 !

我使用非常简单的联系表格:

<form method="POST" action="sendmail.php" class="form">
        <p class="yourName"> Submit Name:</p>
        <input name="text" class="name" placeholder="Name" name="name">
        <p class="yourEmail">Submit Email:</p>
        <input type="text" class="email" placeholder="Email" name="email">
        <p class="yourInquiry">Submit Inquiry:</p>
        <input type="submit" value="Submit" class="Button">    
    </form>






<?php
    $to = "xyz@hotmail.com";
    $subject = "Inquiry from ". $_POST['name'];
    $headers = "MIME-Version: 1.0" . "\r\n";
    $headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";
    $html`enter code here` = "";
    foreach ($_POST as $name => $value) {
        $html .= "<strong>$name</strong><br>";
        $html .= "<p>$value</p><br>";
    }
    if (mail($to, $subject, $html,$headers)) {
        /* Success Message */   
    } else {
        /* Error message */
    }


    header('Location:about.html');

    } else {
    echo "You didnt enter anything";
    ?>

4 个答案:

答案 0 :(得分:2)

header和相关功能(特别是setcookie)必须出现在页面上的任何内容之前。在这种情况下,您的表单将在其之前发送。

您可以重新安排代码,以便在表单之前显示表单处理,或者使用ob_start启动代码以绕过限制(但如果您确实打算将回调传递给功能)

答案 1 :(得分:0)

在使用函数header()

之前,不得输出(或回显)任何内容

将所有逻辑放在脚本顶部,并在底部放置html标记,这样您就可以执行header('Location:about.html');

答案 2 :(得分:0)

首先,如果您想使用标题位置重定向,则无法显示任何消息,如成功消息或错误消息。

第二次使用标题(“位置:about.html”);

尝试更改代码的顺序,如下所示

<?php

if(isset($_POST["yourName"])){
    $to = "xyz@hotmail.com";
    $subject = "Inquiry from ". $_POST['name'];
    $headers = "MIME-Version: 1.0" . "\r\n";
    $headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";
    $html`enter code here` = "";
    foreach ($_POST as $name => $value) {
        $html .= "<strong>$name</strong><br>";
        $html .= "<p>$value</p><br>";
    }
    if (mail($to, $subject, $html,$headers)) {
        /* Success Message */   
    } else {
        /* Error message */
    }


    header("Location:about.html");

    } else {
    echo "You didnt enter anything";
}
    ?>

<form method="POST" action="sendmail.php" class="form">
        <p class="yourName"> Submit Name:</p>
        <input name="text" class="name" placeholder="Name" name="name">
        <p class="yourEmail">Submit Email:</p>
        <input type="text" class="email" placeholder="Email" name="email">
        <p class="yourInquiry">Submit Inquiry:</p>
        <input type="submit" value="Submit" class="Button">    
    </form>

答案 3 :(得分:-1)

您不能在header语句之前输出任何内容,并且必须将header()语句更改为:

header('Location: http://www.example.com/about.html');