1

PHP で独自のセッション管理を実装するには、どのようなオプションがありますか?

すべてのセッション タスクを実行するコンポーネントを実装する良い方法はありますか? 1 つのリクエスト プロセス中に HTTP リクエストとレスポンスを受け取るクラスを構築するにはどうすればよいですか? ストレージハンドラーを定義しているように見えるオプション「session_save_handler」しか見つかりませんでした。必要なのは、セッション管理全体を置き換えることです。PHP 構成を使用する別の方法はありますか?それとも、すべてのリクエストを受信して​​セッション管理を呼び出す独自のコントローラーを実装する必要がありますか?

ご協力いただきありがとうございます

よろしくマイケル

4

6 に答える 6

3

いいえ、申し訳ありませんが、組み込みの「モジュール」を独自のモジュールに切り替えるためのインターフェースはありません。いくつかのフック(例:)がありますがsession_save_handler(), set_error_handler()、残念ながらそれだけです。

$ _SESSIONは「スーパーグローバル」であり、より大きなプロジェクトで作業している場合は、どちらの方法でもIMOを直接設定しないでください。次に、セッションの処理を担当するカスタムクラスを使用することをお勧めします。コードのデバッグなどが簡単になります。

于 2009-07-20T08:33:15.797 に答える
1

あなたはコメントの1つでそれを自分で言いました。$_SESSION をクラスでラップするだけです。それを置き換えることはできないと思いますが、独自のインターフェースを構築することは確かにできます。

たとえば、できます。最初に構築されるクラスを構築し、コンストラクター内で session_start() を呼び出します

于 2009-07-20T08:50:00.380 に答える
1

何を達成したいのかわかりません。ストレージを変更したいというよりも、 $_SESSION 変数から抽象化したいようです。

Zend または Solar フレームワークがセッション アクセスを処理する方法を見てみましょう。

http://www.phpeveryday.com/articles/Zend-Framework-Session-Introduction-P571.html http://solarphp.org/manual:sessions

1 つのリクエスト プロセス中に HTTP リクエストとレスポンスを受け取るクラスを構築するにはどうすればよいですか?

応答を受信することの意味はわかりませんが、フレームワークには、選択したアクションにルーティングするフロント/ページコントローラーがあり、セッション (読み取り/書き込み) と要求 (読み取り) にアクセスできるメソッドを呼び出します。オブジェクトを生成し、テンプレートを介してレンダリングされる Response オブジェクトを生成します。

自動テストでは、独自の Request オブジェクトと Session オブジェクトを作成して、ページ コントローラーに渡すことができます。

于 2009-07-20T08:00:47.953 に答える
0

このsession_save_handler()関数を使用すると、セッション情報の保存方法と取得方法を処理できます。

デフォルトでは、PHP は Web サーバー上のどこかにある一時ファイルにセッション情報を保存します。session_save_handler()代わりに、この情報をデータベース テーブルに格納できる関数を使用して、コールバック関数を定義できます。

関数を使用して独自に定義した関数でセッションを処理してもsession_save_handler()、スーパーグローバル変数 $_SESSIONS を使用して情報にアクセスできます。

于 2009-07-20T07:36:57.673 に答える
0

Cookie とデータベースを使用してセッションの実装を作成できます。クライアントのマシンに Cookie を設定します。次に、次のようなデータベースでルックアップを実行します。

+--------+------+
| sessid | data |
+--------+------+

Cookiesessidへの参照 (おそらくmd5またはSHAハッシュの王様) が含まれ、データはJSONorSerialized配列のようなものです。

機能:

runkit APIの一部である関数runkit_function_redefine()を使用して、 session_ xxxx関数を再定義できます。 注: Runkit は PECL の一部です。つまり、PHP にバンドルされていません。自分でインストールする必要があります。

セッション変数:

$_SESSION = &SessionClass->data;

シンプルそのもの:$_SESSIONあなたのデータへの参照として作成するだけです。

于 2015-01-15T02:40:01.210 に答える
0

phpオンライン マニュアルのこのページを参照してください。あなたの質問に関して役立つ情報がたくさんあります。それが役に立てば幸い。

于 2009-07-20T07:47:46.137 に答える