セッション処理
Sessions
&reftitle.intro;
PHPのセッションサポート機能は、複数回のアクセスを通じて特定のデータを保持する手段を実現するものです。
Web サイトの訪問者にはセッションIDというセッションIDと呼ばれるユニークなIDが割りつけられ
ます。このIDは、ユーザー側にクッキーとして保存するか、または、URL
に埋め込みます。
セッションサポート機能により、スーパーグローバル配列
$_SESSION
を使ってリクエスト間でデータを格納できるようになります。
来訪者がサイトにアクセスした際、
PHP は特定のセッションIDがリクエストとともに送信されているかどうかを
(
session.auto_startが1の場合は)自動的に、または
(session_start により明示的な)
要求を受けて確認します。
このIDが送信されている場合には、以前保存された変数が再現されます。
session.auto_start
をオンにした場合にオブジェクトをセッションに代入する唯一の方法は、
クラスの定義を
auto_prepend_file
でロードしておき、オブジェクトを
serialize したうえで後で
unserialize することです。
$_SESSION (およびそこに登録されたすべての変数)
は、リクエストが終了したときに PHP が内部的にシリアライズします。
シリアライズの方式として、ini 設定
session.serialize_handler
で指定したハンドラを使います。
未定義の登録変数は、未定義としてマーク付けされます。
これらの変数は、後でユーザーが定義しない限り、以降のアクセスにおいて
セッションモジュールにより定義されません。
セッションデータはシリアライズされるので、
resource 型の変数はセッションに格納できません。
シリアライズハンドラ (php
および php_binary) は、register_globals
の制約を引き継いでいます。
そのため、数値のインデックスや特殊文字 (|
や !) を含む文字列のインデックスは使えません。
これらを使っていると、スクリプトのシャットダウン時にエラーが発生します。
php_serialize には、そのような制約はありません。
セッションを処理している時、
スーパーグローバル配列$_SESSION へ新しいキーを
追加して変数が登録されるまで、
セッションのレコードは作成されないことに注意してください。
これは、セッションが
session_start
関数により開始されている場合でも当てはまります。
&reference.session.setup;
&reference.session.constants;
&reference.session.examples;
&reference.session.upload-progress;
&reference.session.security;
&reference.session.reference;
&reference.session.sessionhandler;
&reference.session.sessionhandlerinterface;
&reference.session.sessionidinterface;
&reference.session.sessionupdatetimestamphandlerinterface;