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

まず、ヘッダーの場所を使用してリダイレクトする場合は、成功メッセージやエラー メッセージなどのメッセージを表示できません。

2 番目に使用する 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 に答える
0

関数を使用する前に何も出力 (またはエコー) してはなりませんheader()

すべてのロジックをスクリプトの上部に配置し、html マークアップを下部に配置すると、実行できるようになります。 header('Location:about.html');

于 2013-02-18T01:02:49.983 に答える
-1

header ステートメントの前には何も出力できず、 header() ステートメントを次のように変更する必要があります。

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