【PHP応用】セッションとは
セッションとは
今回はセッションについて紹介します。
■セッション
セッションとはWebアプリケーションに接続してから切断するまでの通信のことで、
アクセスするユーザを特定し、そのセッション間で保持するユーザー毎の変数を保持する機能があります。
HTTPは、状態を保持しない(=ステートレス)プロトコルであるため、特定ユーザの連続アクセスを認識できないため、
ログイン、ログアウトやショッピングカートやお気に入りなど、状態を保持する(=ステートフル)なアクションを必要とする場面で使われます。
実際の使用方法を確認する前にまずは全体の仕組みを確認してみましょう。
■セッションの仕組み
・セッションファイル
session_start関数を実行すると、サーバはそのクライアント(ブラウザ)専用にセッションファイルを作ります。
※セッションファイルの保存場所は、php.iniや/etc/httpd/conf.d/php.confに定義されています。
・セッションID
生成されたセッションファイルとクライアントを関連づけるため、
セッションIDというものがブラウザ別に発行され、それがブラウザ側のクッキー情報に書き込まれます。
・セッション名
クッキーに保管するセッションID用のキーをセッション名という。
セッションIDはずっと同じではセキュリティ上よくないため、session_regenerate_id()関数で再生成を行うことがあります。
・セッション破棄
ログアウトするときなど、ステートフルな接続を終了したいタイミングで、セッションを破棄する。
・セッションの中身変更
セッションの中身を変更したり、セッション配列から内容を削除するには、
セッション用の値を格納する$_SESSION配列を普通の連想配列と同様に扱います。
以上となります。
この記事ではセッションの基礎知識となる仕組みを説明しましたが、
サンプルコードを用いた実際の使用方法については次の記事で紹介します。
■まとめ
- アクセスするユーザを特定し、そのセッション間で保持するユーザー毎の変数を保持する機能をセッションと呼ぶ
- セッションIDを使用してサーバ・クライアントのユーザの紐付けを行う
- 格納する値は$_SESSIONを使用し、通常の連想配列と同様に扱うことができる