パスワード管理で、ログインして使用する管理画面を作りまして、
ログアウトすると、最初のログイン画面に戻る仕様にしました。
しかし、ブラウザの戻るボタンを押すと、ログアウト前の管理画面が表示されてしまいます。
Webメールとかでは、よくログアウト後に戻るボタンを押してもログイン画面のままになるのを
みかけますが、どのような処理で実現可能でしょうか?
因みに、ログインは、パスワードだけを入力させ、
ログインしているかどうかは、セッションの時間(1時間)で
判断しています。
Webで調べて、ページをキャッシュさせない処理を追加して
みましたが、うまくいきませんでした。
以下、ログインとログイン後の管理画面、ログアウトのPHPファイルの一部です。
【login.php】の一部
<?php //ページをキャッシュさせない session_cache_limiter('nocache'); session_start(); if (!empty($_POST)) { // ログインの処理 if ($_POST['password'] != '') { if ($_POST['password'] == 'test') { // ログイン成功 $_SESSION['time'] = time(); header('Location: kanri.php'); exit(); } else { $error['login'] = 'failed'; } } else { $error['login'] = 'blank'; } } ?>
【kanri.php】ログイン後の管理画面の一部
<?php //ページをキャッシュさせない session_cache_limiter('nocache'); session_start(); if ($_SESSION['time'] + 3600 > time()) { // ログインしている $_SESSION['time'] = time(); } else { // ログインしていない //header('Location: login.php'); //exit(); } ?>
【logout.php】の一部
※書籍を参考にしたので、不要な部分があるかもしれません。
<?php //ページをキャッシュさせない session_cache_limiter('none'); session_start(); // セッション情報を削除 $_SESSION = array(); if (ini_get("session.use_cookies")) { $params = session_get_cookie_params(); setcookie(session_name(), '', time() - 42000, $params["path"], $params["domain"], $params["secure"], $params["httponly"] ); } session_destroy(); // Cookie情報も削除 //setcookie('email', '', time()-3600); setcookie('password', '', time()-3600); header('Location: login.php'); exit(); ?>
回答5件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
2015/12/01 09:22
2015/12/01 09:33
2015/12/01 09:54
2015/12/01 10:08
2015/12/01 13:49
2015/12/02 08:04
2015/12/02 09:10 編集
2015/12/03 06:33