[PHP]セッション破棄について
はじめまして。
phpを始めて1週間の初心者です。
現在、ホームページでログイン処理とログアウト処理をphpのセッションを使って作成しています。
今回質問させて頂くのはログアウト処理についてです。
ログアウト処理をでセッションを破棄する際に
http://oshiete1.goo.ne.jp/qa3224862.html
を参考にして下記の処理を行わせています。
--------------------
logout01.php
--------------------
<?php
session_start();
$_SESSION = array();
if(isset($_COOKIE[session_name()])){setcookie(session_name(),'',time()-4200,'/');}
session_destroy();
header("location: http://~トップページのURL~/");
?>
--------------------
確認をしたところ、ログインしたユーザの情報は削除されているようでした。
また、http://oshiete1.goo.ne.jp/qa3224862.htmlを参考に下記のようなログアウト処理も行わせてみました。
--------------------
logout02.php
--------------------
<?php
session_start();
unset($_SESSION['access']);
header("location: http://~トップページのURL~/");
?>
--------------------
同じく確認したところ、ログインしたユーザ情報は削除されているようでした。
--------------------
環境
--------------------
<サーバ>
【OS】
windows XP(テスト環境)、CentOS 5.2(公開環境)
【PHP】
5.2.6
【Apache】
2.2
<クライアント>
【OS】
windows XP
【ブラウザ】
Firefox 3.0.8
IE 7
--------------------
--------------------
質問
--------------------
(1)logout01.phpとlogout02.phpの違いは何でしょうか。
(2)「unset($_SESSION);」は使用すると「$_SESSION」が使えなくなるとのことですが、
それはphpを再インストールしない限りは使えなくなるということでしょうか。
それとも、ブラウザを再起動すれば使えるという意味でしょうか。
(3)「unset($_SESSION);」と「unset($_SESSION['access']);」では何が違うのでしょうか。
(3)セッションを使用するとサーバ側にセッションIDを保存したファイルが保存され、
クッキーがクライアント側に保存されるとのことですが、logout01.phpとlogout02.phpを
実行した場合、サーバ側のセッションIDを保存したファイルとクライアント側のクッキーを
保存したファイルは削除されているのでしょうか。
(4)セッションの有効期限を指定していないため、logout01.phpとlogout02.phpを実行せずに
ブラウザを終了させた時もログインしたユーザ情報は削除されているようでしたが、
この場合もサーバ側のセッションIDを保存したファイルとクライアント側のクッキーを
保存したファイルは削除されているのでしょうか。
初歩的な質問で申し訳御座いませんがよろしくお願いします。
お礼
大変参考になりました。当方lighttpdを使用していて、同じようなきのうがないか調べたところ、mod_evasive というモジュールで同じようなことができることがわかりました。本当にありがとうございました。