PHPコーディングを行っています。ブラウザで[戻る]ボタンを押すと、次のエラーが発生します。
Document Expired
This document is no longer available.
この状況に対応するためにどのコードを実装できますか
PHPコードの最初にこれを追加します:
ini_set('session.cache_limiter','public');
session_cache_limiter(false);
メインページでCache-Controlヘッダーを設定します。
<?php
header('Cache-Control: max-age=900');
?>
Post/Redirect/Getルールを使用すると、これを回避できます。
この問題は、以下によって発生します。
example1.php
、example2.php
、example3.php
があるとしますexample1.php
からexample2.php
に投稿しています。その後、必要に応じてすべてのDB処理を行い、ページをレンダリングしました(リダイレクトされません-投稿され、ページがレンダリングされました)。example2.php
からexample3.php
にリダイレクトしました。今ブラウザをクリックするとドキュメントは期限切れになります。これを回避するには、example1.php
からexample2.php
に値を投稿し、ユーザーを他のページにすぐにリダイレクトします。
これは Post/Redirect/Get のパターンであり、ドキュメントの期限切れを回避するために従うことができます。また、DBへの冗長なエントリを回避するのにも役立ちます。
サーバーのphp.iniに行き、これを変更してください
session.cache_limiter = nocache
なので
session.cache_limiter = public
問題は解決されるでしょう。私はこれで私の問題を解決しました。
この行をページに挿入してください。
<?php
header("Cache-Control: max-age=300, must-revalidate");
?>
のようなヘッダーでキャッシュが無効になっているかどうかを確認してください
<HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
私は同じ問題を経験しました。戻りたいページにフォームの値が投稿されていたため、[戻る]リンクをクリックすると、ドキュメントの期限切れエラーが表示されていました。例を見る
3つのページ、page1.php、page2.php、およびpage3.phpがあります。 POSTメソッドを使用して、page1.phpからpage2.phpにフォームを送信しています。page2.phpからpage3.phpのリンクをクリックしました。
ここで、page3.phpからpage2.phpに戻ってきます。しかし、page2.phpにはPOSTメソッドを使用してフォーム値が投稿されており、page3.phpからpage2.phpにアクセスすると、ブラウザにエラー「Docuemnt Expired」が表示されます。
だから私は GET 方法 代わりに の POST。したがって、page2.phpに戻ると、POSTのフォームとページの値は正しく読み込まれません。また、フォームの値がURLに存在するため、ページは期待どおりに読み込まれます。
この問題は、次の2つのシナリオによって発生します。
Post
を使用した検索の実装ハックなしでこの問題を簡単に解決するには2つの方法があります。
ために search form
post
メソッドを使用せず、代わりにgetメソッドを使用してください。すべて正常に動作します。
何らかの理由でフォーム入力を非表示にする必要があり、postメソッドを使用したい場合は、他のページへのリダイレクトを引き起こすリンク/アクションを、JavaScriptを介してリダイレクトさせます。
location.replace('http://example.com/page2');
これにより、参照URLが削除され、新しいhttpリクエストが強制されます。ブラウザの[戻る]ボタンを押しても、ドキュメントが期限切れになることはありません。