

phpで会員制webサイトを作っています。

top.htmlからpost送信で数値を指定してデータベースからその番号の情報をpage.htmlに表示する単純なサイトなのですが、一度戻るボタンを押すと、フォーム再送信の確認画面が出てしまいます。

これを解決するために

[code]

    session_start();
    session_cache_expire(0);
    session_cache_limiter('private_no_expire');
    
[/code]

を使ったのですが、フォーム再送信の問題は解決されましたが、会員制サイトなので、ログインしたのに、キャッシュが残っていてログアウト状態になってしまうというバグが発生します。

[code]

    header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
    header("Cache-Control: post-check=0, pre-check=0", false);
    header("Pragma: no-cache");
    
[/code]

を使うことで、キャッシュは消去できるのですが、こうすると先の問題が再び発生します。

何か解決方法わかるかたいましたら教えてください。


CC BY-SA 3.0
2016-06-29T01:26:48.547
27162
2016-07-01T07:52:57.173
2016-06-29T03:54:20.260
8000
15279
question
php
戻るボタンを押したときだけキャッシュを残したい


プログラムの構成が分からないですが、POSTで投げられた後、その内容をセッションに持っておいてGETへリダイレクトすると、戻るボタンで戻ったときにPOST再送信の画面は出なくなります。


CC BY-SA 3.0
2016-06-30T12:16:13.333
27223
2016-06-30T12:16:13.333
2605
27162
answer


ブラウザの戻るボタンの利用をやめて、ページ上に専用の戻るボタンを用意しましょう。  
セッション管理しているサイトでブラウザの戻るボタンを使用させるのはバグの温床になります。  
ブラウザの戻るボタンさえ使わなければ、この問題は出ないと思います。

あと、GET,POSTの持つ意味で言うと、GETを使用しても問題ないものでは？とも思います。


CC BY-SA 3.0
2016-07-01T07:52:57.173
27245
2016-07-01T07:52:57.173
17014
27162
answer