0

サーバーサイドにあるPHPコンタクトフォームを別のページに含めて、送信時にサンキューページにリダイレクトしようとしています。

フォームは、次のようなインクルードとしてページページにあります。

<div id="formArea">
<?php include 'form.php'; ?>
</div>

現在、リダイレクトは次のように設定されています。

header("Location: thankyou.php");

フォームは正常に機能し、メッセージは受信トレイに送信されます。また、form.phpページをインクルードせずにそのまま開くと、実際にはthankyou.phpにリダイレクトされることに注意してください。

このタスクをどのように達成できるか考えていますか?

ありがとう

4

1 に答える 1

1

ヘッダーが送信された後にHTTP ヘッダーを設定しようとしているため (すでに HTML の出力を開始しているため)、リダイレクト ヘッダーLocationはサーバーへの要求と共に送信されません。

サーバー側のソリューション

出力の前header()に関数を呼び出す必要があります。

クライアント側のソリューション

それでもform.phpでリダイレクトを行いたい場合は、JavaScript (クライアント側) リダイレクトを行うことができます:

<script type="text/javascript">window.location = "someurl.php";</script>

デバッグ

また、コードでheaders_sent警告が生成されているはずなので、アプリケーションの開発中に警告とエラーを有効にすることをお勧めします (本番環境では無効にすることを忘れないでください!) 。.

ini_set( 'display_errors', 'on' );
error_reporting( E_ALL );
于 2013-02-27T16:47:59.727 に答える