第8回 セッションの仕組みを知ろう (その1)
- さて、前回の最後に載せたソースコードについて予習してもらうことにしたけど、どうだったかな?
- えっ、ばっちりですよ!

- ・・・怪しい。。。
- いえいえ、ちょっとは頑張ってみました。その成果を発表しまーす。
- おぉ、頼もしい。ではどうぞ!
セッションの仕組み
- じゃあ、まずはセッションの話から。セッションとはどんな仕組みかな?
- セッションは、ページ間で変数の内容を維持するための仕組みなんです。要するに・・・Aというページの変数の値を、Bというページでも使えるようにするんですね。

- うんうん。前回の最後にもあったとおり、session_start関数を実行すると、セッションが使えるようになるんだ。
- はい、そうでした。えっと、それでセッションを開始すると、$_POSTとか$_GETみたいな、$_SESSIONという特別な変数が使えるようになるみたいですね。この変数は配列になっていて、好きな値をセットしておくと、セッションが開始されていればその値を取り出すことができるみたい。
- そのとおり。よく勉強してきたね。
- 少し疑問だったんですけど、POSTやGETでのデータ送信を使っても、ページ間で変数の内容を渡してあげる事はできますよね?http://example.com/index.php?a=1&b=2 みたいな使い方で・・・。これと$_SESSIONは何が違うんですか?
- いい質問だね。POSTやGETでも確かにデータを「送信」することはできる。でも、セッションはデータをやり取りするわけではなくて、データをサーバ上に「保存」しておくんだ。実は、session_start関数によるセッションの開始というのは、サーバ上に保存してあるデータを呼び出す作業なんだよ。

- そっか。ただ送るだけのものと、 保存しておくもの、っていう違いがあるんだ。
- そうだね。もう少し補足をしておこう。デフォルトでは、セッションは永遠に呼び出せるわけではなく、ブラウザを閉じるとセッションが中断される。これは、セッションはブラウザのCookieという仕組みを使って、その機能を実現しているからなんだ。
- Cookie(クッキー)っておいしそうな名前ね。
- Netscapeというブラウザを開発していた、Netscape社が開発した技術なんだけど、残念ながらこの名前の由来は分かっていないらしいよ。
セッションを使った例
- では、簡単にセッションを使った例を見てみよう。以下のコードを動かしてごらん。
<?php
session_start();
if (isset($_SESSION["counter"])) {
$_SESSION["counter"]++;
print($_SESSION["counter"]."回目の読み込みです。");
} else {
$_SESSION["counter"] = 0;
print("はじめての読み込みです。");
}
?>
- ふむぅ。大体動作の様子はわかるかな・・・。
- おお、成長したねぇ・・・(ほろり)。このページの動作は、最初に表示したときは、「はじめての読み込みです」と表示される。その後、ブラウザの「更新」ボタンなどで再読込を続けると、どんどんカウンターの数が増えていくんだ。
- 最初にページが表示されたときは、セッションを開始しても、$_SESSION["counter"]は存在しない。だから、if構文ではelseの方に遷移するわけですね。

- そうだね。$_SESSION変数に入れた値は、PHPのプログラムが終わる際、サーバー内に自動的に保存される。そして次回session_start関数を呼び出したときに、サーバー内に保存されたデータを元に、$_SESSION変数を復元するんだ。
- なるほど~。







