ブラウザによるクッキー処理につきまして
現在、クッキーを利用してログイン~ログアウト等の処理をしていますが
ブラウザによって動作が異なるようです。
動作と言いましても特殊な事では無く、ログイン後手操作でログアウトしたらそのままログアウト。
ログイン中でもクッキーの設定時間を過ぎたらログアウト可能にしたいのですが
IEはバージョン6以降では特に問題も無く思ったとおりの動きを
してくれますが、Firefoxでは(ver3.6.2)手操作での任意のログアウトが出来ません。
具体的には、サンプルソースの様にlogin.phpでクッキーを設定してlogout.phpで
クッキーを削除していますが、Firefoxではクッキーが削除されません。
その為、ログイン後 手操作でログアウトしてもFirefoxではログアウト出来ません。
クッキー設定での時間を経過したら、ログアウト出来ます(クッキーも削除されます)
ログイン側~ログアウト側 両方とも時間など、いくつかやり方を変えて見ましたが
対策が見えていません。
(ブラウザによる相違があるようでしたのでサンプルソースの様にif文で分けています。)
Firefoxでは何か設定のやり方があるのでしょうか。
ご存知の方がいらっしゃいましたらご教授の程お願いします。
■環境
OS:WindowsXP
WEBサーバー:apache2.0
PHP:バージョン5.2
IE:バージョン 6/7 (クッキー許可)
Firefox:バージョン 3.6.2 (クッキー許可)
//--------------------------------------------
// login.php (省略サンプルソース)
// クッキー設定
$userid = 'abcd';
$Agent = getenv( "HTTP_USER_AGENT" );
if (eregi("firefox", $Agent)){ // Firefox
//setcookie('login_regist', $userid, time()+1);
setcookie('login_regist', $userid, time()+20);
}else{ // IE
setcookie('login_regist', $userid, time()+20);
}
//--------------------------------------------
// logout.php (省略サンプルソース)
// クッキー削除
$userid = 'abcd';
$Agent = getenv( "HTTP_USER_AGENT" );
if (eregi("firefox", $Agent)){ // Firefox
//setcookie('login_regist', $userid, time()-2400);
setcookie('login_regist', $userid, time()+0);
}else{ // IE
setcookie('login_regist', $userid, time() - 2400);
}
お礼
ご回答ありがとうございました。 しかし、やはり削除されませんでした・・・ サーバーの関係とかあるのでしょうか? テスト用として以下の3スクリプトで試しております。 /* setck.php */ <?php setcookie("cookie[2]", "20"); setcookie("cookie[3]", "30"); setcookie("cookie[10]", "100"); echo "クッキーをセット<br>\n"; ?> /* getck.php */ <?php if (isset($_COOKIE['cookie'])) { foreach ($_COOKIE['cookie'] as $name => $value) { echo "Cookie番号[$name] : $value <br />\n"; } } ?> /* delck.php */ <?php setcookie( "cookie[3]", "", time() - 42000 ); echo "cookie番号[3]を削除<br>\n"; ?> 実行結果 setck.phpを実行 クッキーをセット getck.phpを実行 Cookie番号[2] : 20 Cookie番号[10] : 100 Cookie番号[3] : 30 delck.phpを実行 クッキー番号[3]を削除 getck.phpを実行 (ここでCookie番号[3]が消えていて欲しかった) Cookie番号[2] : 20 Cookie番号[10] : 100 Cookie番号[3] : 30 以上です。宜しくお願いします。