PHP を勉強中です。さっそくセッションでつまっています。最終的に、ログイン認証を行って、ユーザー固有のページを表示することです。今回は、セッション動作に関してまとめてみました。
セッションとは
以下の説明が一番直観的でわかりやすかったです。
セッションとは、ページ間で変数の内容を維持するための仕組み。
http://www.phppro.jp/school/phpschool/vol8/1
セッションの仕組み
ページ間で変数の内容を維持するためには、クライアントからのアクセスをサーバーが識別する必要があります。
PHP でのセッションの管理では、セッション ID をクッキーとしてクライアントに持たせ、2回目以降のアクセスの際、http ヘッダーに含まれるセッション ID で、サーバーに保存されたセッションと、そこに保存されたセッション変数を使える状態に復帰します。
サーバー側のセッションの保存場所
セッションの保存場所は、php.ini ファイルでの設定によって変わります。今回の環境(CenOS5.3, Apache2.2, PHP5.1.6)では以下の場所になっていました。
[root@localhost /]# cat /etc/php.ini (すごく省略) session.save_path = "/var/lib/php/session"
セッションは、こんな感じで保存されます。
[root@localhost session]# ls -a . .. sess_h30n26sijgt513rlagqvuvh065
クライアント側のセッションの保存場所
クライアント側では、セッションはクッキーとして保存されます。また、クッキーの一般的な話として、有効期限をつけないと、クッキーはメモリ上に保存され、ブラウザの終了時に一緒に消去されるようです。有効期限を設定すると、ユーザープロファイル内の Cookie フォルダに保存されます。
やってみたこと
とにかくセッションの仕組みと実際の動作を知りたかったので、実際にやってみました。やってみたのは、PHP BOOK : セッション変数の書き込みと読み込み に書かれている、アクセス回数をカウントするスクリプトです。
IE にインストールした ieHTTPHeaders で HTTP ヘッダーを監視しつつ、サーバー側のセッションファイルの状態と中身を確認してみました。 その結果がしたの絵。
やってみて、セッションID、セッション変数、クッキーの繋がりがわかってきました。次はこの仕組みを、どうやってログイン認証に利用していくかというところです。
参考にしたサイト
バシャログ : 10日で覚えるPHPのキソ 第 10 回 セッション(SESSION)
→すごくわかりやすかったです。







