1. ホーム 
  2. 備忘録 
  3. PHP

セッション

セッションについて

クッキーがクライアント側(ブラウザ)にデータが保存されるのに対して、セッションはサーバ側に保存される。

クッキーはユーザ側で内容を書き換えることができてしまうため、ログイン処理など個人情報を取り扱う部分に関してはセッションで扱うことになる

セッションはサーバ側にファイルとして保存されており、このファイルと紐づく一意の値(ハッシュ値)をIDとして記憶しておき、サーバ・クライアント側でやり取りを行う

このIDを記憶するのにはクッキーが使われている

基本的なセッションの使い方を下記に記載する


page1.php

// page1.php

// セッションの開始
// 新しいセッションを開始、あるいは既存のセッションを再開する
session_start();

// セッションID確認用
echo sprintf( 'セッションID:%s', $_COOKIE['PHPSESSID'] ); // セッションIDが割り振られていれば、再度ページを読み込んだ時にIDが表示される

// セッションIDのふりなおし(実際はこのタイミングでは不要だが説明用に記載する)
// 例えばログイン前に使用していたセッションIDなどは、ログイン完了後に同じIDを使いまわさないように再度ふりなおしを行う
// これは「セッションハイジャック」に対するセキュリティ対策になる
session_regenerate_id();

echo 'ページ1です。セッションを設定してページ2に移動します';

$_SESSION['name'] = 'will';
$_SESSION['animal']   = 'dog';
$_SESSION['time']     = time();

// セッションクッキーが有効なら移動後のページで文が表示される
echo '<br /><a href="page2.php">page 2</a>';

// あるいは必要に応じてセッション ID を渡す
// この SID は相対パスを指定したときだけ使用できる定数である
echo '<br /><a href="page2.php?' . SID . '">page 2</a>';

page2.php

// page2.php

// セッションを開始
session_start();

echo 'ページ2です。ページ1で設定した内容が表示されます。';

echo $_SESSION['name']; // will
echo $_SESSION['animal']; // dog
echo date('Y m d H:i:s', $_SESSION['time']); // 現在時刻

// page1.php にもどる
echo '<br /><a href="page1.php">page 1</a>';

通常は、PHP がスクリプトの処理を終了するときに、セッションは自動的に終了するので書く必要はない
もし手動でセッションを終了させたければ session_write_close() 関数を使う


    参考文献

  1. 公式ドキュメント