[PHP-users 23498]cookieを使用する場合のセッションの有効期間について
Hiroshi Nomiyama
nomizo @ remus.dti.ne.jp
2004年 10月 15日 (金) 11:56:46 JST
野見山といいます。
お知恵を拝借できませんでしょうか。
セッションに関する設定を
session.use_cookies = 1
session.auto_start = 0
session.use_trans_sid = 0
とし、さらに
session.cache_limiter = private もしくは
session.cache_limiter = private_no_expire
に設定すると、
session.cookie_lifetime = 0
としているにも関わらず、ブラウザを再起動(ウィンドウを閉じて再度ブラ
ウザを開く)しても、セッションが持続してしまいます。
「ページの有効期限切れ」を表示させない対策としてあえてnocacheとして
いません。
具体的な挙動は、
1.hogeA.phpにて認証処理を正常に実行
2.hogeB.phpにリダイレクトされ、
「ログイン処理は正常に実行されている」と表示される
3.ブラウザを閉じる
4.ブラウザを開き、hogeB.phpを表示させる
5.hogeB.phpが表示され、
「ログイン処理は正常に実行されている」と表示される
session.cache_limiter = nocache とすると
5.は、hogeC.phpにリダイレクトされ「ログイン処理を実行していない」と
表示されます。
=== hogeA.php ==========================================
<?php
// 途中略
// このスクリプトにて、ユーザが入力したID・パスワードをデータ
// ベースに照会し、認証処理を行います。
// 認証に成功すると、以下の処理を実行します。
session_start();
$_SESSION['SESID'] = session_id();
header("Location: http://hostname/hogeB.php");
?>
========================================================
=== hogeB.php ==========================================
<?php
session_start();
if($_SESSION['SESID'] != session_id()){
$_SESSION['ERROR_CODE']="ログイン処理を実行していない";
header("Location: http://hostname/hogeC.php");
} else {
print "ログイン処理は正常に実行されている";
}
?>
========================================================
=== hogeC.php ==========================================
<?php
session_start();
print $_SESSION['ERROR_CODE'];
?>
========================================================
(環境)
[サーバ]
OS:Red Hat Linux 9
HTTPD:Apache 1.3.31
PHP:4.3.7
[クライアント]
OS:Windows2000 SP-4
Webブラウザ:Internet Explorer6(SP-1)
----
Hiroshi Nomiyama nomizo @ remus.dti.ne.jp
PHP-users メーリングリストの案内