下記の start.php ページから始まります。
<?php
session_cache_limiter('private, must-revalidate');
?>
<form method="POST" action="next.php">
<select name="items" >
<option value="aa">aa</option>
<option value="bb">bb</option>
<option value="cc">cc</option>
</select>
セレクトボックスのデータをPOSTで次のページ("next.php")に渡しています。
【←】(戻る)ボタンで start.php に戻った後、
【→】(進む)ボタンで next.php を表示する際、下記のメッセージページが表れます。
「フォーム再送信の確認
このウェブページを正しく表示するには、先ほど入力したデータが必要です。...[再読み込み] をクリックしてください。」
これはどういう理由ですか?また、この表示を出さずに次のページに進む方法を教えてください。
よろしくお願いします。
※URLはダミー
これはどういう理由ですか?
ブラウザのキャッシュにnext.phpの表示状態が保持されてしまっているからです。
戻るをクリックした事で「next.phpに表示していた内容と整合性が取れなくなったよ」
とブラウザが警告しています。
また、この表示を出さずに次のページに進む方法を教えてください。
session_cache_limiter でキャッシュは無効に出来ます。
ただしキャッシュを無効にしたからといって問題解決になる訳ではありません。
先の画面に進めてしまいます。戻る/進むボタンを使えないようにする根本的な解決方法はありません。
Ajaxを使って1ページ内で画面を遷移(させた様にみえる様に)するか、next.phpでリダイレクトしてしまってPOST行為を消してしまうのも有効です。
※回答の中に間違っている回答がある様なので気をつけて。
これはどういう理由ですか?
FORMタグの "items" の option が選択されていないためです。
また、この表示を出さずに次のページに進む方法を教えてください。
"items" の option を選択してからページを進んでください。
または、選択した値を Cookie に入れておけばできます。
参考 「Cookieの読み書き」
※URLはダミー
これはどういう理由ですか?
ブラウザのキャッシュにnext.phpの表示状態が保持されてしまっているからです。
戻るをクリックした事で「next.phpに表示していた内容と整合性が取れなくなったよ」
とブラウザが警告しています。
また、この表示を出さずに次のページに進む方法を教えてください。
session_cache_limiter でキャッシュは無効に出来ます。
ただしキャッシュを無効にしたからといって問題解決になる訳ではありません。
先の画面に進めてしまいます。戻る/進むボタンを使えないようにする根本的な解決方法はありません。
Ajaxを使って1ページ内で画面を遷移(させた様にみえる様に)するか、next.phpでリダイレクトしてしまってPOST行為を消してしまうのも有効です。
※回答の中に間違っている回答がある様なので気をつけて。
ありがとうございます。
ブラウザの仕様だから仕方ないのでしょうか(?)
form で送信する内容によりますが、回避するだけだったら、form の method を POST → GET にすれば、あのメッセージは出なくなります。
ただ、「form の内容により」と書いたのは、POST にしている意味があるからです。
こういったあたりを無視しても構わないのであれば、method を変えちゃうのがお手軽です。
参考になります。ありがとうございました。
ありがとうございます。
ブラウザの仕様だから仕方ないのでしょうか(?)