私の PHP プロジェクトには登録フォーム用の 6 ページがあります。
エクスプローラーバーから戻るボタンを押すと、いずれかのページの間に次のエラーが表示されます。
ウェブページの有効期限が切れています
私は$_POST
データを送信するために使用しています。なぜこれが起こるのか理解できませんか?
このメッセージは、IE が POST データから生成されたページを処理する方法に関係しています。
一般に、この問題を回避するには、過去の履歴で、ユーザーが POST リクエストから生成されたページにアクセスできないようにする必要があります。jspcalが示唆したように、POST 応答は、GET によって要求された別のページへのリダイレクトである必要があります。これは、フォームを 2 回送信するリスクを軽減するため、ベスト プラクティスと見なされます。
投稿を受け取った後にページをリダイレクトします。
$name = $_POST['name'];
...
header('Location: next.php');
これは、ブラウザーの履歴をさかのぼって投稿データを再送信しようとすると、特定のブラウザー (おそらく Internet Explorer を使用している) で常に発生します。ただし、多くのブラウザー (Firefox など) では、履歴をさかのぼったときに、投稿データを再度送信する機会が与えられます。
「$_GET」を試しましたか?これはおそらく、POST 情報が前のページから取得され、ページの遷移よりも長くどこにも保存されないために発生する可能性がありますが、GET は URL を使用して情報を送信するため、情報はどこかに保存されます。GET で何が起こるかを確認します。
本当の答えは、「戻るボタンを押すと、最初にそのページにアクセスしたときに最初に送信した POST 要求がブラウザーから送信されない」ということです。 AJAX を使用するか、POST の代わりに GET を使用します。