古いセッションが消えない
フォームからのデータを受け取るPHP、sesssion.phpが下記のとおりだとします。
<?
header('Cache-Control: nostore, no-cache, must-revvalidate');
session_cache_limiter('private_no_expire');
session_start();
header("Content-Type: text/html; charset=EUC");
$http = $_SERVER['HTTP_REFERER']; //どこから来たか
$form_id = $_POST['form_id'];
$form_pass = $_POST['form_pass'];
$flg = $_POST['t'];
$session = session_id();
if($http == "http://192.168.1.250/~fukazawa/session/form.html"){
$_SESSION['id'] = $form_id;
$_SESSION['pass'] = $form_pass;
}
$test = $_SESSION['id'];
$test1 = $_SESSION['pass'];
if($flg == "t"){
echo <<<EOM
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">
<title>
</title>
</head>
<body>
◎$test<br />$test1
<br><br><br><a href="session.php">test</a><br><br>
<a href="session.php?t=test">test2</a>
</body>
</html>
EOM;
}else{
echo <<<EOM
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">
<title>
</title>
</head>
<body>
◎$test<br />$test1
<a href="session.php">test</a><br>
<a href="session.php?t=test">test2</a>
</body>
</html>
EOM;
}
?>
引数で表示させる内容を異なるようにするPHPファイルです。
仮に一回目にIDを「てすと」、パスワードを「ttt」でログインした場合、session.php・session.php?t=testに表示されるのは、
「◎てすと
ttt」
です。
そして、これをいったんログアウトして、今度は
ID「二回目」、パスワード「two」でログインすると、
session.phpには
「◎二回目
two
」と表示されますが、
session.php?t=test
に飛んだ場合、
一回目のIDとパスワード、つまり
「◎てすと
ttt」
が表示されてしまいます。
ブラウザをリロードすると
「◎二回目
two
」
と表示されます。
これは、前のセッションがまだ残ってしまっているということなのでしょうか。
対処法が分からず困っています。
お礼
ご回答ありがとうございます。 ブラウザによって違うと思うのですが、私は今LinuxでFirefoxを使っているのですが、 ログイン後、一度ブラウザを閉じてから、再度ブラウザを開くのですが、 Yahoo!メールではアドレスバーにURLを打ち込むとログアウトしていなくてもメールが読めてしまいますが、 Mixiではもう一度ログインし直さなければ中に入ることはできません。 Mixiの設定のように、一度ブラウザを閉じたらもう一度パスワードを入れてログインするまで中には入れないようにしたいのです。
補足
結局、unset($_SESSION['xxx']を使いました。 ブラウザを消すことでセッションを消すことは出来ませんでしたが、目的は達せられました。 ありがとうございました。