第21章 Zend_Session

目次

21.1. 導入
21.2. 基本的な使用法
21.2.1. チュートリアル
21.2.2. セッション名前空間の順次処理
21.2.3. セッション名前空間へのアクセス方法
21.3. 高度な使用法
21.3.1. セッションの開始
21.3.2. セッション名前空間のロック
21.3.3. コントローラでのセッションのカプセル化
21.3.4. 名前空間内での Zend_Session のインスタンスをひとつに制限する
21.4. グローバルセッションの管理
21.4.1. setOptions()
21.4.2. オプション
21.4.3. regenerateId()
21.4.4. rememberMe(integer $seconds)
21.4.5. forgetMe()
21.4.6. sessionExists()
21.4.7. destroy(bool $remove_cookie = true, bool $readonly = true)
21.4.8. stop()
21.4.9. writeClose($readonly = true)
21.4.10. expireSessionCookie()
21.4.11. setSaveHandler(Zend_Session_SaveHandler_Interface $interface)
21.4.12. getInstance($instanceMustExist = false)
21.4.13. namespaceIsset($namespace, $name = null)
21.4.14. namespaceUnset($namespace, $name = null)
21.4.15. namespaceSet($namespace, $name, $value)
21.4.16. namespaceGet($namespace, $name = null)
21.4.17. getIterator()
21.5. 動作原理

21.1. 導入

このドキュメントの最新版 も参照ください。また、 Zend Framework Auth team は皆さんのフィードバックや協力をお待ちしています。 メーリングリストは fw-auth@lists.zend.com です。

PHP で書かれたウェブアプリケーションでは、セッション を使用してサーバ側 (状態を保持するデータ) とクライアント側 (特定のユーザエージェント。たとえばウェブブラウザ) の論理的な一対一の関係を表します。 Zend_Session はセッションデータの管理と保持を行い、クッキーのデータを論理的に補完し、 同一クライアントからの複数ページにわたるリクエストを扱います。 クッキーのデータと異なり、セッションデータはクライアント側には保存されません。 セッションデータがクライアントと共有されるのは、 クライアントからのリクエストへの応答として サーバ側のソースコードで使用可能に設定した場合のみです。 このコンポーネントのドキュメントにおいて「セッションデータ」は、 Zend_Session が管理するサーバ側のデータをさすものとします。

Zend_Session コンポーネントは、PHP の既存の ext/session をラップして、標準化されたオブジェクト指向のセッション管理機能を提供します。 これには匿名セッションとログインセッションの両方が含まれます。 ZF の認証コンポーネントである Zend_Auth は、Zend_Session を使用してログインセッションに関連する情報を保存しています。 Zend_Session は内部的には通常の PHP セッション関数を使用しているので、 セッションに関する通常のオプションや設定がすべて適用されます (http://www.php.net/session を参照ください)。したがって、クッキーあるいは URL に記録されるセッション ID を用いてクライアントとセッション状態データの関連付けが行われます。

クラスタを構成するサーバ群のひとつにクライアントから接続している際には、 デフォルトの セッション保存ハンドラ は、この関連を保持するという問題を解決できません。 セッションの状態に関するデータは、(接続している) そのサーバにしか保存されないからです。 このような場合に対応できるような保存ハンドラを将来提供する予定です。 使用できるようになった時点でここで説明します。