2

ページのサイドバーに含めたフォームがサイトにあります。基本的には、いくつかのデータを収集し、そのデータが正しく入力されている場合は、別のページのより大きなフォームに渡します。

問題は、送信時に「ヘッダーは既に送信されました」というエラーが発生し続けることです。奇妙なことに、私の開発サーバーではフォームが正常に動作します。

基本的に私のコードは次のようになります。

    <?php
    if($_SERVER['REQUEST_METHOD'] == 'POST'){

        // Checks for errors are here (omitted for brevity)

        if(!$errors){
            header('Location:'.bloginfo('url').'?page_id=xxx');
        }
    }
    ?>

エラーをチェックする必要があることを念頭に置いて、header() を使用せずにサイトの別のページにリダイレクトできる別の方法はありますか?

4

2 に答える 2

2

HTTP ヘッダーを送信または変更する関数は、出力の前に呼び出す必要があります。そうしないと、失敗することがわかりました。

以下のリンクに、これに関する適切な投稿/説明があります。 PHP の「Headers already sent」エラーを修正する方法

于 2013-03-21T12:16:04.533 に答える
2

問題ありません。 のキー/値を使用し$_POSTてリダイレクトを生成できます。

<?php
if($_SERVER['REQUEST_METHOD'] == 'POST'){

    // Checks for errors are here (omitted for brevity)

    if(!$errors){
        $xxx = 'valueofxxxhere';
        echo '<script>document.location="'.bloginfo('url').'?page_id='.$xxx.'";</script>';
        die();
    }
}
?>

私の選択によるデザインではありませんが(常にヘッダーからリダイレクトする方が良いです)、時には便利です。

于 2013-03-21T12:39:17.330 に答える