人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

フォームデータの再送信 についてお聞きします。
下記の 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 を表示する際、下記のメッセージページが表れます。
「フォーム再送信の確認
このウェブページを正しく表示するには、先ほど入力したデータが必要です。...[再読み込み] をクリックしてください。」

これはどういう理由ですか?また、この表示を出さずに次のページに進む方法を教えてください。

よろしくお願いします。

●質問者: gdwtseq
●カテゴリ:ウェブ制作
✍キーワード:AA BB CC NeXT PHP
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● Banias
●23ポイント

これはどういう理由ですか?

FORMタグの "items" の option が選択されていないためです。


また、この表示を出さずに次のページに進む方法を教えてください。

"items" の option を選択してからページを進んでください。

または、選択した値を Cookie に入れておけばできます。


参考 「Cookieの読み書き


2 ● chinchin-kozou
●23ポイント

PHPで 「Webページの有効期限が切れてます」となる時の傾向と対策

http://fdays.blogspot.com/2010/11/php-web.html

こちらが参考になります。


3 ● mattn
●32ポイント ベストアンサー

http://q.hatena.ne.jp/

※URLはダミー

これはどういう理由ですか?

ブラウザのキャッシュにnext.phpの表示状態が保持されてしまっているからです。

戻るをクリックした事で「next.phpに表示していた内容と整合性が取れなくなったよ」

とブラウザが警告しています。

また、この表示を出さずに次のページに進む方法を教えてください。

session_cache_limiter でキャッシュは無効に出来ます。

ただしキャッシュを無効にしたからといって問題解決になる訳ではありません。

先の画面に進めてしまいます。戻る/進むボタンを使えないようにする根本的な解決方法はありません。

Ajaxを使って1ページ内で画面を遷移(させた様にみえる様に)するか、next.phpでリダイレクトしてしまってPOST行為を消してしまうのも有効です。

※回答の中に間違っている回答がある様なので気をつけて。

◎質問者からの返答

ありがとうございます。

ブラウザの仕様だから仕方ないのでしょうか(?)


4 ● a-kuma3
●32ポイント

form で送信する内容によりますが、回避するだけだったら、form の method を POST → GET にすれば、あのメッセージは出なくなります。

ただ、「form の内容により」と書いたのは、POST にしている意味があるからです。



こういったあたりを無視しても構わないのであれば、method を変えちゃうのがお手軽です。


http://dummy/

◎質問者からの返答

参考になります。ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ