0

请帮助这个 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

4 回答 4

2

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

您可以重新排列您的代码,以便表单处理出现在表单之前,或者开始您的代码ob_start以绕过限制(但如果您确实打算将回调传递给函数,这只是一个好主意)

于 2013-02-18T01:02:39.450 回答
0

在使用函数之前,您不得输出(或回显)任何内容header()

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

于 2013-02-18T01:02:49.983 回答
0

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

第二次使用 header("Location: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>
于 2013-02-18T01:07:05.057 回答
-1

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

header('Location: http://www.example.com/about.html');
于 2013-02-18T01:05:00.873 回答