[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を保存したファイルとクライアント側のクッキーを
保存したファイルは削除されているのでしょうか。
初歩的な質問で申し訳御座いませんがよろしくお願いします。
補足
回答ありがとうございます。 ログアウトしない場合はセッションが残ってるのでログインできるんじゃないんですか? もしかして普通はブラウザを閉じるとセッション情報は消えるのでしょうか?