PHP 入門 | ページ遷移、Cookie、セッション | セッションとは
Cookie はユーザー固有の情報を保持するのに役立つが、「ごく小さなテキストしか保存できない」という欠点がある。より多くのデータを保存する必要がある場合、Cookie は適していない。このような場合に使う機能が「セッション」である。
セッションは、サーバーとクライアント(Web ブラウザー)の間で接続を継続的に維持できるようにする技術である。これまで説明したように、Web という媒体は常に「1 つのページごとに独立している」ものだった。サーバーとブラウザーはページにアクセスするたびに通信するだけで、相手が誰なのか、Web サイトのどのページからどのページへ移動しているのかといった継続的な情報は、標準の仕組みでは得られない。
セッションでは、アクセスしたクライアントに固有の ID(これをセッション ID という)を発行し、それを Cookie に保存するか URL に付与することで、サーバーと通信するときに常にこの ID が送受信されるようにする。そして、この ID によって現在アクセスしているユーザーを識別する。
このセッションを利用することで、ユーザー固有の情報を保存できるようになる。サーバーは特定のセッション ID の情報をサーバー内に保持しておき、クライアントがアクセスしたときに、そのセッション ID に保存されている情報を取り出して使用する。
PHP でセッションを使うのはとても簡単である。セッションを開始するには、まず次を実行する。
session_start();
この関数を実行すると、セッションを使用できるようになる。注意すべき点は、この session_start 関数も何かが出力される前に実行しなければならないことである。
セッションは、ここで説明したように Cookie にセッション ID を保存して動作するため、必要な情報をヘッダーに追加して送信する。そのため、ヘッダーが送信された後に session_start を呼び出しても、セッションは使用できない。
セッションに保存する情報は、PHP のシステムが提供する連想配列 $_SESSION にまとめられる。これは $_COOKIE などとは異なり、値を読み書きできる。つまり、必要に応じて $_SESSION に値を保存したり、取り出したりできる。そのため、Cookie のように保存した時点では値がまだ存在せず、その後のアクセスで提供されるという時間差を考慮する必要はない。通常の連想配列と同じように使用できる。