LoginSignup
7
4

More than 5 years have passed since last update.

PHPにおけるセッションデータの取り除き方いろいろ

Last updated at Posted at 2017-08-08

PHPでセッション管理を行う際に使用する$_SESSIONですが、一度セットしたセッションデータを削除する方法について調べたことについてまとめます。

セッションの削除方法

  1. session_destroy()
  2. \$_SESSION = array() 
  3. unset($_SESSION["セッションの名前"])

それぞれ説明していきます。

セッション内のデータを全て消す場合

session_destroy()

セッションデータを一括削除してくれます。
すべてのセッションが空になってしまうので、特定のセッションデータだけを削除したいときにこれは使えない

$_SESSION = array()

セッションは元より連想配列のため、空の配列を代入することでセッションデータを空に置き換え、結果的にセッションを削除することができる

unset($_SESSION["セッションの名前"])

セッションデータを格納する際に設定したセッションの名前を指定して、そのセッションデータだけを個別に削除できる

少し変わったセッションの削除方法

セッションデータを取得するためにはクライアントごとに割り振られたセッションIDを参照して、セッションIDが一致してしているクライアントにサーバー内のセッションデータを返す、というもの。
そのため、クライアントで保持しているセッションIDをリセットしてしまえば、サーバー内のセッションデータを参照できなくなくなり、結果的にセッションデータを削除したように見える。

setcookie("PHPSESSID",'',time() - 1800,'/')

セッションIDはPHPSESSIDに格納される(php.iniの初期設定に依存している)。
セッションIDの有効期限を過去にすることで、セッションIDが消去される。

ただ、この方法でセッションIDを削除したとしても、ブラウザのリロードなどでセッションIDを参照した後でセッションIDを削除しているようです。
つまり、セッションIDの有効期限を過去にして、セッションIDを削除したとしても、ブラウザの表示上からは削除されていないような挙動を起こす、ということです。

7
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
4