第8回 セッションの仕組みを知ろう - PHP基礎講座
Saity先生のPHP基礎講座
Lecutures on PHP
第8回 セッションの仕組みを知ろう (その2)
もう少しセッションの詳しい話
- セッションの仕組みで難しいのは、サーバーからデータを復元する時、どのユーザーのセッションデータかを判別することなんだ。

- ん?どういうことですか??
- たとえば2人が先ほどのスクリプトを同時にアクセスしたとする。もし2人を区別できなかったら、$_SESSION変数が共通になってしまって、挙動がおかしくなってしまうよね?
- なるほど、確かにユーザーを区別する必要があるわけね。それって難しいことなの?
- 本来Webにはそういった機能が用意されていなかったんだ。そこで、Netscape社がCookieという技術を開発した、という訳だ。
- さっきも出てきましたけど、Cookieってどんなものなんですか?
- Cookieは、ユーザーのブラウザ内に情報を記録しておく技術のことなんだ。セッション機能に使われるだけじゃなく、「持続ログイン機能」を実装するためにも使われる。よく、「ログイン名とパスワードを覚えておく」機能がついたサイトを見かけることがあるでしょう?
- うん。mixiとかそうよね。

- これは、ブラウザを閉じた後にもCookieをブラウザ内に残すようにしているんだ。Cookieには有効期限という概念があって、特に指定しない場合はブラウザが閉じられるまでなんだけど、任意の有効期限を設定することもできるんだ。
- なるほどー。それをある程度長くすれば、その「持続ログイン機能」が実現できるわけですね。

- では具体的に、どうやってユーザーを区別しているのかを知っておこう。先に結論から言うと、セッションIDという、セッションごとに固有の文字列を与えて、それを使って判断しているんだ。セッションIDは通常、Cookieの中に保存されるようになっていて、ブラウザがセッションIDをPHPに伝えることで、サーバー内に保存されたどのデータを復元したらいいのかが分かる仕組みなんだ。
- そういえばsession_idという関数もあったわ。
- うん、それはセッションIDを明示的に指定する関数だね。もちろん、session_start関数よりも前に呼び出す必要がある。
- そうしないとサーバーは、そのセッションIDに対応するデータを読み出す機会がないものね。
- 基本的にはセッションIDをサーバーに伝えるための仕組みとしてCookieが使われるんだけど、ブラウザの設定によってはCookieを無効にすることもできてしまう。そこでPHPではCookieの他にGETを使ったセッションIDの引き渡しもできるようになっているよ。

- ほうほう・・・。具体的にセッションIDってどんなん何ですか?
- セッションIDの正体は、サーバーがランダムに作成する文字列だ。たとえば「3f17b855b4bf21022d150f407eb4415d」というように、決して他のIDと重複しないものになっているよ。また、GETで渡す場合も、Cookieで渡す場合も、セッションIDを渡す際の変数名が必要になる。その変数名をセッション名と呼んでいて、session_name関数でセットできるんだ。
- ふむふむ。マニュアルによると、セッション名は、デフォルトでPHPSESSIDになっているんですね。
- そう。だからGETで渡す場合は、http://サーバー名/スクリプト名?PHPSESSID=********となるわけだ。この場合は、すべてのリンクにセッション名とセッションIDを入れないと、セッションを継続できないから注意が必要だよ。セッションIDがないと、セッションが開始できないからね。
- は~い。
- なんだか、今回は理屈の話ばかりになってしまったね。今回のテーマだった「セッション」は、PHPを扱う上で肝になる物の一つだから、結構じっくり説明したよ。

- う~ん、頭がきゅーきゅーいってます。。。
- いやぁ。ユキちゃんはだいぶがんばっているみたいで、感心感心。それじゃあ次回はソースコードに戻って、占いプログラムの説明を続けていこう。
- よしっ、次回もがんばるぞっ!
- 1
- 2
その他の記事も見る
- 第1回 PHPに触れてみよう!
- 第2回 PHPの基礎の基礎
- 第3回 占いソフトを作ろう - rand()関数、配列、連想配列 -
- 第4回 占いソフトを作ろう2 - データ取得・エスケープ・コメント挿入 -
- 第5回 様々なループ構造とPOSTによるデータ送信
- 第6回 入力チェックとエラー表示(1)
- 第7回 入力チェックとエラー表示(2)
- 第8回 セッションの仕組みを知ろう
- 第9回 セッションとHTTPヘッダーの基礎
- 第10回 スケジューラーを作ろう(1) - ファイル操作の基礎知識 -
- 第11回 スケジューラーを作ろう(2) - ファイルへの書き込み -
- 第12回 スケジューラーを作ろう(3) - データの書式整形と一覧表示 -
- 第13回 スケジューラーを作ろう(4) - CSSの基礎知識 -
- 第14回 スケジューラーを作ろう(5) - データの特定方法 -
- 第15回 スケジューラーを作ろう(6) - 削除処理、ユーザー定義関数 -
- 第16回 変数のスコープとデータ型
- 第17回 スケジューラーを作ろう(7) - 処理の関数化、任意の日付の取得 -
- 第18回 スケジューラーを作ろう(8) - タイムスタンプ -
- 第19回 スケジューラーを作ろう(9) - スケジューラー完成 -
- 第20回 掲示板を作ろう(1) -ユーザー定義関数と書き込みフォーム
- 第21回 掲示板を作ろう(2) -init関数とerrorcheck関数
- 第22回 掲示板を作ろう(3) -2重投稿チェックをしてCSVファイルに書き込む
- 第23回 掲示板を作ろう(4) -投稿した掲示板の内容を表示しよう
- 第24回 掲示板を作ろう(5) -掲示板の内容を10件ずつ表示しよう
- 第25回 掲示板を作ろう(6) -掲示板の管理者になって内容を削除しよう
- 第26回 掲示板を作ろう(7) -掲示板の内容を検索しよう
- 第27回 掲示板を作ろう(8) -掲示板についてまとめよう
- >>「Saity先生のPHP基礎講座」一覧ページに戻る
- Saity先生
本名:海原才人 アシアル株式会社所属
PHPスクール講師。同時に、現役システムエンジニアとしてシステム開発も行っている。
携帯電話でWebサイトが見られるようになった事をきっかけに、Webの普及の早さに驚愕し、Webプログラミングに興味をもつ。 その後、PHPによるWebプログラミングと出会い、その習得のしやすさと多機能さに魅了され、数多くのシステム開発をPHPでこなしてきた。 現在は、PHPの魅力とシステム開発で蓄積したノウハウをPHPスクールで多くの人に伝える事に熱意を燃やしている。
「教育において、教わる側が解からない事に罪はなく、教える側が興味を持たせられない事が罪だ」というのが講師としての信念。 生徒にPHPの面白さ・素晴らしさを伝えるため、魅力的な講義を展開する事に全力を注ぐ。




ページのトップへ


GETのままでは検索エンジンのロボットが拾ってくれなかったためにSEO対策として有効だと言われていますね。