ホームページ > バックエンド開発 > PHPチュートリアル > カスタムセッションハンドラーを作成します

カスタムセッションハンドラーを作成します

尊渡假赌尊渡假赌尊渡假赌
リリース: 2025-03-01 08:30:11
オリジナル
939 人が閲覧しました

Writing Custom Session Handlers

PHPセッションは、Webの固有のステートレス性を解決し、ショッピングカート、Webサイトへの訪問追跡、ユーザーナビゲーション監視などの機能を有効にします。 PHPのデフォルトセッション処理ではほとんどの場合、カスタムソリューションは機能と代替データストレージの拡張と代替データストレージを提供します。この記事では、デフォルトのメカニズムについて説明し、カスタマイズされたセッション管理のためにそれをオーバーライドする方法を示します。

重要な概念:

    PHPのデフォルトセッション処理は通常適切ですが、カスタムハンドラーは多様なデータストレージ(MySQL、XML、Memcacheなど)を可能にします。
  • Serialization(
  • )は、ストレージの場所に関係なく、デフォルトのデータ処理方法のままです。 serialize()unserialize()デフォルトのセッションハンドラーを交換できます。 セッションの開閉、閉鎖、読み取り、書き込み、破壊、ゴミ収集の6つのコールバック機能が必要です。 カスタムハンドラーは、多くの場合、クラスを実装するクラスを使用し、各セッションのライフサイクル段階にメソッドを提供します。 PHPによって定期的に呼び出されたガベージコレクションは、時代遅れのセッションデータを削除します。 その周波数は、
  • session_set_save_handler()
  • デフォルトのセッションストレージを理解する:SessionHandlerInterface
  • カスタムハンドラーを作成する前に、PHPのデフォルト動作を理解してください。セッションデータは、サーバー上の個々のファイルに保存され、それぞれが一意のIDにリンクされています(ブラウザCookieまたはURLパラメーターに保存されています)。 PHPはこのIDを使用して、後続のリクエストでデータを取得します。 セッションデータディレクトリを見つけるには、session.gc_probabilitysession.gc_divisor php.ini
  • このパスを
または

を使用して変更できます。 Webルートディレクトリの外側にセッションデータを保存すると、セキュリティが強化されます。 セッションファイル(「sess_」という名前に続いて、セッションIDが続きます - 経由で取得可能)にシリアル化されたデータが含まれています。たとえば、

を保存すると、ファイルが含まれています

このシリアル化は、カスタムハンドラーであっても一貫しています。

データが保存されている場合、

<?php echo session_save_path(); ?>

セッションライフサイクルとphp.inisession_save_path("/path/to/session/data");

session_id()セッションファイルを開き、データを$_SESSION["colors"] = array("red", "blue");にロードします。 スクリプトが終了すると(または

経由)データが保存されます。
<code>colors|a:2:{i:0;s:3:"red";i:1;s:4:"blue";}</code>
ログイン後にコピー
ログイン後にコピー
では、カスタムコールバックを使用してこれをオーバーライドできます
  1. セッションの開く
  2. セッションを閉じます
  3. セッションデータの読み取り
  4. セッションデータの書き込み
  5. セッションを破壊する
  6. ゴミ収集

各ライフサイクルステージには、登録されたコールバック関数が必要です。それ以外の場合、PHPは警告を発します。 コールバックは、関数、閉鎖、オブジェクトメソッド、または静的クラスメソッドです。

カスタムハンドラーの構築(mysqlの例):

この例では、MySQLデータベースを使用してセッションデータを保存します。データベーステーブルには、セッションID、データ、および最後のアクセス時間のフィールドが必要です。

次の関数は、データベースの相互作用にPDOを使用して、6つのコールバックを示しています。
<?php echo session_save_path(); ?>
ログイン後にコピー

プレースホルダーデータベースの資格情報を独自のものに置き換えることを忘れないでください。 この例は、基本的なフレームワークを提供します。エラー処理とより堅牢なデータベースインタラクションを使用するには、追加する必要があります。

および
<code>colors|a:2:{i:0;s:3:"red";i:1;s:4:"blue";}</code>
ログイン後にコピー
ログイン後にコピー
内のデータ処理は、特定のニーズに合わせて適応できます(たとえば、ストレージ前のデータのないデータ)。

read結論:write

カスタムセッションハンドラーは、セッション管理の柔軟性と制御を提供します。 この記事では、MySQLベースのソリューションを実証しました。同じ原則が他のストレージメカニズムに適用されます。 シリアル化/脱着を正しく処理し、適切なエラー処理とセキュリティ対策を実装することを忘れないでください。

以上がカスタムセッションハンドラーを作成しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート