[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 メーリングリストの案内