ブラウザの戻るボタンを押すと有効期限切れとなるのはなぜですか - PHPプロ!Q&A掲示板

311

  • 0P

ブラウザの戻るボタンを押すと有効期限切れとなるのはなぜですか

質問日時 / 2007年1月11日 18:04    回答数 / 8件

Questioner:  Triniti  このエントリーをはてなブックマークに追加 

キーワード / 戻るボタン    有効期限切れ    セッション   

はじめましてTrinitiと申します。

セッション機能を使っている為だと思うのですが、ブラウザの戻るボタンを押すと有効期限切れの画面が表示されます。
これは何故なのでしょうか?
回避する方法はあるのでしょうか?

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。



ツリー一覧

┣A01tasogare同一のPHPにPOSTで値を渡し、ブラウザの戻るボタンで
┃┗A01-1Trinitiありがとうございました。 セッションは関係ないわけ
┗A02hmaru777PHPのセッションとフォームデータをPOSTで受け渡した
 ┗A02-1hmaru777アドレスが間違っていたようです。 http://www.php
  ┗A02-1-1Triniti解決しました! これで自動的にリロードされるわけで
   ┗A02-1-1-1Trinitiでも勝手にリロードされるから入力フォームが消えてし
    ┗A02-1-1-1-1hmaru777そうですね。 session_cache_limiter('private_no_
     ┗A02-1-1-1-1-1Trinitihmaru777さん、いつもご丁寧にありがとうございます。

回答一覧

並び替え:

A01 参考になった
answerertasogare [1月15日 13:56]

同一のPHPにPOSTで値を渡し、ブラウザの戻るボタンで戻ると期限切れのページが表示されます。
これはブラウザがPOSTで渡した処理を再現できないからだそうです。

解決方法としては、
1.POSTではなくGETを使う
2.「戻る」ボタンを設置し、こちらで戻るようにする
3.処理を別PHPに分ける
等が考えられます。

この意見に回答する

ツリーへ TOPへ

A01-1
replyerTriniti [1月17日 18:15]

ありがとうございました。
セッションは関係ないわけですね。

> 3.処理を別PHPに分ける

これは別PHPファイルへPOSTさせるという事ですか?

この意見に回答する

ツリーへ TOPへ

A02 満足
answererhmaru777 [1月17日 23:57]

PHPのセッションとフォームデータをPOSTで受け渡した場合に、
IEの戻るボタンで戻ると「ページの有効期限切れ」の警告が出てしまいます。
解決方法は、次の一行をPHPファイルの最初のほうに置きます。
 
session_cache_limiter('private, must-revalidate');

説明は、以下のアドレスで
http://jp.php.net/manual/ja/function.session-cache-limiter.php  
 
PHPのサイトでも、上の値を例に説明していることが多いようです。

この意見に回答する

ツリーへ TOPへ

A02-1 満足
replyerhmaru777 [1月18日 10:24]

アドレスが間違っていたようです。

http://www.phppro.jp/phpmanual/php/function.session-cache-limiter.html

こちらです。

この意見に回答する

ツリーへ TOPへ

A02-1-1
replyerTriniti [1月18日 12:02]

解決しました!
これで自動的にリロードされるわけですね。

どうもありがとうございました。

この意見に回答する

ツリーへ TOPへ

A02-1-1-1
replyerTriniti [1月18日 12:07] (最終編集:1月18日 12:14)

でも勝手にリロードされるから入力フォームが消えてしまうわけですね。

ちょっと調べたのですが、
  1. session_cache_limiter('private_no_expire');

を入れるとキャッシュが読み込まれるだけになってしまうみたいですね。
アッチを勃てればコッチが勃たず、ですか。。。

なかなか思うようにいかないです。

この意見に回答する

ツリーへ TOPへ

A02-1-1-1-1 満足
replyerhmaru777 [1月19日 10:12]

そうですね。

session_cache_limiter('private_no_expire');
 
これを使うと、戻るボタンを使ってもキャッシュから表示してくれます。
しかし、この設定でIE6を使った場合、リフレッシュしてもキャッシュから読み込んでしまうようです。
これって、IEのバグ?Netscapeでは問題はないようです。

この場合への対処法はURLに何か値を入れてあげてユニークにします。
例えば、
<a href="http://www.x.com/r.php?t=<?php echo time();?>">reload</a>
 
Yahooのサイトを調べると時間の変わりにランダムな値を使っているようです。

この意見に回答する

ツリーへ TOPへ

A02-1-1-1-1-1
replyerTriniti [1月19日 13:52]

hmaru777さん、いつもご丁寧にありがとうございます。

GETにランダムな値を入れてキャッシュを読み込ませないという事ですね!奥が深いです。

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
マジッククォートとmysql_real_escape_string
 このエントリーをはてなブックマークに追加 
A
magic_quotes_gpcでは、SQLインジェクション対処は十分できません。主な理由として、以下が上げられます。 ・magic_quotes_gpcは文字コードを考慮しないで処理するので、Shift_JISを使っている場合、SQLインジェ...

>>続きを読む

SQLインジェクション対策は時と場合で使う関数が変わります。その時にあったものを使いましょう。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)