セッション

クッキーの問題点
  1. データの改ざんや削除の可能性
    • クッキーはクライアント側のコンピューターで管理されるデータのため、クッキーを受け入れなくしたり、削除したり、改ざんすることができる
  2. 盗聴の可能性が高い
    • クッキーはクライアントからのリクエストヘッダーに乗せて送信されるため、通信経路でロギングされる


このためユーザがブラウザを開いている間だけ情報を維持したいというようなケースではセッションを使う

セッションとは

クッキーで使っていた情報をサーバー側で管理するもので
クライアントとサーバーでやり取りされるのはキーだけ
クッキーを使った時のレスポンスヘッダー

Set-Cookie: PHPSESSID= f3bd44febae082584f87d55c3958fad6

ブラウザに保存されたクッキーを調べると、PHPSESSIDという名前のクッキーがある
これがセッションIDで、サーバーがクライアントを識別するためのキーとなる情報
サーバー側ではクライアントから発信されたセッションIDをキーにして、対応するセッション情報を取得する


クッキーを使った時のリクエストヘッダー

Cookie: PHPSESSID= f3bd44febae082584f87d55c3958fad6
セッションの実際の処理

セッションを開始するにはsession_start()関数を使う
またセッション情報の読み書きには $_SESSION を使う

<?php
//セッションのキー名はアプリケーションの中で一意にする
$_SESSION['キー名'][=];

//セッションの開始
session_start();
//セッション変数を初期化
$_SESSION = array();
//セッションクッキーが存在する場合は破棄
if(isset($_COOKIE[session_name()])){
    setcookie(session_name(), '', time() -3600,'/');
}
//セッションを破棄
session_destroy();
セッション関数を利用するための設定

PHPではセッションの挙動を制御するために、php.ini 上で設定可能なさまざまなパラメータがある
php.ini はPHPアプリケーションの挙動を制御するための標準的な設定ファイル