session削除について
phpでセッション情報を削除する方法について簡単にまとめました。
サーバ側のお話
クライアント側にセッション情報が残っていたとしても、サーバ側ではそのセッションは無効となります。
セッション情報の破棄
セッション配列の中身を空にして、セッションの中身を初期化する方法です。
1 |
$_SESSION=array(); |
セッションを破壊する
サーバ側でセッションに関するデータを破壊する方法です。
1 |
session_destroy(); |
ユーザーがログアウトするときのように、セッションを切断するには、セッション ID の割り当ても解除する必要があります。セッションIDの受け渡しにクッキーが使用されている場合(デフォルト)には、セッションクッキーも削除されなければなりません。 そのためにはsetcookie()が利用できます。
引用元:PHP マニュアル
クライアント側でのお話
セッションクッキーを無効化
クライアント側のブラウザ上でセッション情報を削除する方法です。
1 |
setcookie(session_name(),'',time(),'/'); |
「’/’」を指定することで、ドメイン配下すべてに対して有効となります。
使い方
PHP マニュアルに記載があるとおり、以下の方法でセッションを破棄します。
(同マニュアルより引用させて頂きます。)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?php // セッション変数を全て解除する <span style="color: #ff0000;">$_SESSION = array();</span> // セッションを切断するにはセッションクッキーも削除する。 // Note: セッション情報だけでなくセッションを破壊する。 if (ini_get("session.use_cookies")) { $params = session_get_cookie_params(); <span style="color: #ff0000;"> setcookie(session_name(), '', time() - 42000, $params["path"], $params["domain"], $params["secure"], $params["httponly"] );</span> } // 最終的に、セッションを破壊する <span style="color: #ff0000;">session_destroy();</span> ?> |
setcokieの赤字の箇所は引数が多いパターンですが、以下に置き換えても問題ないです。
1 |
setcookie(session_name(),'',time()-42000,'/'); |