LoginSignup
0
0

$_SESSION

Posted at

はじめに

$_SESSIONについて整理する。

$_SESSION

セッション経由で渡された情報

セッションの書き込み

セッション機能を使うには、あらかじめsession_start関数でセッションを開始しておく必要がある。

<?php
session_start();
$_SESSION['email'] = $_POST['email'];

セッションを破棄する

不要になったセッションは、サーバー負荷やセキュリティの観点から迅速に破棄する必要がある。

session_destroy関数はセッションを保存したファイルを削除するだけで、メモリ上のセッションは残ってしまう。

そのため、完全にセッションを削除するには以下のようなコードを書く。

session_destroy.php
<?php
session_start();
// セッション変数を空に
$_SESSION = [];
// セッションクッキー(ID受け渡しのためのクッキー)があれば破棄
if (isset($_COOKIE[session_name()])) {
    $cparam = session_get_cookie_params();
    setcookie(session_name(), '', time() - 3600, 
        $cparam['path'], $cparam['domain'], 
        $cparam['secure'], $cparam['httponly']);
}
// セッションを保存したファイルを削除
session_destroy();

セッション変数を空にする

セッションクッキー(ID受け渡しのためのクッキー)を破棄する
クッキーを破棄するには過去の有効期限を設定する

セッションを保存したファイルを削除する

のような順で処理する

クッキーとセッションの違い

クッキー
・データがクライアント側で管理される
・実データがネットワーク上を流れる

セッション
・データがサーバー側で管理される
・実データがネットワーク上を流れない

クッキーは、データがクライアント側で管理されるという性質上、「値がクライアント側で改竄/削除される可能性がある」「実データがネットワーク上で盗聴される可能性がある」などの問題を含んでいる。
しかしセッションでは実データがサーバー側で管理され、クライアント側ではセッションIDだけが渡されるので、上記の危険性を最小限に抑えることができる。

0
0
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
0
0