クッキーは、ユーザーに固有の情報を保持するのに役立ちますが、しかし「非常に小さなテキストしか保管できない」という欠点があります。もっと多くのデータを保管するには、クッキーは不向きです。こうしたときに用いられるのが「
セッション」と呼ばれる機能です。
セッションとは、サーバーとクライアント(何度もいうけどWebブラウザなどのこと)の間の接続を継続的に維持し続けるように扱うための技術です。これまで説明したように、Webという媒体は、常に「1ページごとに独立したもの」でした。サーバーとブラウザは、ページにアクセスするごとに通信されるだけで、相手が誰か、Webサイトのどのページからどのページに移動しているか、といった継続的な情報は得られない仕組みになっているのです。
セッションは、アクセスしたクライアントに重複しないIDを発行し(これを
セッションIDといいます)、これをクッキーに保存したり、URLにつけたりして、サーバーとやり取りする際に常にこのIDが送受されるようにします。そしてこのIDにより、現在アクセスしているユーザーを識別するのです。
この
セッションを利用することで、ユーザーに固有の情報を保管することができるようになりました。サーバーは、サーバー内に特定のセッションIDの情報を保管しておき、クライアントがアクセスしたら、そのセッションIDによって保管されている情報を取り出し利用する、というわけです。
PHPでは、
セッションの利用は非常に簡単です。
セッションを開始するために、最初に、
session_start();
このような関数を実行します。これで
セッションは利用可能になります。注意しなければならないのは、この
session_start関数も、なにか出力される前に実行されなければいけない、という点です。
セッションは、今説明したようにクッキーに
セッションIDを保管するなどして動いているため、ヘッダーに必要な情報を追加して動きます。このため、ヘッダーが送信された後に
session_startを呼び出してもセッションは使えないのです。
セッションに保管する情報は、「
$_SESSION」というPHPのシステムが用意する連想配列にまとめられます。これは、
$_COOKIEなどと違い、値を読み書きすることができます。つまり、必要に応じて
$_SESSIONに値を保管したり、取り出したりできるのです。クッキーのようにタイムラグ(保存したときには値がまだ存在せず、次のアクセスから用意される、など)はありません。ごく普通の連想配列とまったく同じ感覚で利用することができます。