4

ユーザーのセッションを終了し、うまく機能し、次のことを行う logout.php ページがあります。

session_start(); session_unset(); session_destroy();

Safari でテストしたときに、ログアウトするときに [戻る] ボタンをクリックして前のページに戻ることができることに気付きました。このページには認証が必要ですが、プロンプトは表示されません。ナビゲーションに入らずにこのページから移動することはできませんが、最初から前のページを表示するべきではありません。

これまでのところ、私のテストでは、これは Mac OS X 上の Safari のみの問題であり、これに関する他のレポートが多数ありますが、私が見つけることができる解決策はありません:

http://www.experts-exchange.com/Web_Development/Web_Languages-Standards/PHP/Q_23702691.html

Safari の [戻る] ボタンでこの動作を無効にできるようになりたいと思っています。そもそもこれが起こっていることに驚きました。

ありがとう、スティーブ

4

1 に答える 1

2

認証を必要とするサービスを提供するすべてのページが、適切なキャッシュ制御ヘッダーとともに送信されていることを確認してください。ページはブラウザーのキャッシュから表示されています。キャッシュを明示的に禁止するキャッシュ制御を提供することで、これを停止できるはずです。

http://php.net/manual/en/function.header.phpから

<?php
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
?>

特に Safari については、キャッシュとアンロード イベントに関する議論があり、キャッシュを回避するために使用できる可能性があります。一般に、WebKit はキャッシングに関して複雑な問題を抱えているようです。

http://webkit.org/blog/427/webkit-page-cache-i-the-basics/

http://webkit.org/blog/516/webkit-page-cache-ii-the-unload-event/

于 2010-06-09T14:05:38.887 に答える