phpセッションの仕組み(生成の仕組み、リサイクルの仕組み、保存の仕組み)の詳細説明
この記事では、PHP のセッション生成メカニズム、リサイクル メカニズム、ストレージ メカニズムに関する関連知識を詳細に紹介し、PHP セッションの動作メカニズムを深く理解することができます。必要な方は参考にしてください。
このセクションの内容: phpセッションメカニズム PHP でのセッションの使用法は、多くの PHP チュートリアルで必須です。このセクションでは、セッションの理解をより高いレベルに引き上げるために、PHP でのセッションの生成メカニズム、リサイクル メカニズム、および保存メカニズムを詳しく説明します。 以下のコンテンツは (bbs.it-home.org) によって収集および整理されています。PHP を学習するには、このサイトの PHP プログラミング コラムに注目してください。 1. phpのセッション生成メカニズム PHPでセッションを生成するには? セッションを設計する目的は、http プロトコル (ステートレス) の欠点を補うために、各ユーザーのさまざまな状態を維持することです。 セッションはサーバー上に保存されますが、各ユーザーの状態を維持するために使用されますが、ユーザーを区別するために使用されますか?この時点では、Cookie を使用する必要があります。 コード内で session_start(); が呼び出されると、PHP はセッション ストレージ ディレクトリ (デフォルトは /tmp/) とクライアントの Cookie ディレクトリにファイルを生成します。 セッションファイル名は次のようになります:
この時点で、次の 2 行のコードが session_start(); に追加されるとき、形式は sess_{SESSIONID} です。 $_SESSION['名前'] = 'wanchun0222'; $_SESSION['ブログ'] = 'coderbolg.net';ファイルには次の内容が含まれています。 名前|s:11:"wanchun0222";ブログ|s:13:"coderbolg.net";もう一度クッキーを見てください:
サーバーが自動的に Cookie を生成したことがわかります。Cookie の名前は「PHPSESSID」で、Cookie の内容は文字列です。実際、この文字列は {SESSIONID} です。セッションを使用する場合、PHP は最初に一意の SESSIONID 番号 (2bd170b3f86523f1b1b60b55ffde0f66 など) を生成し、次にサーバーのデフォルトのディレクトリにファイル名を sess_{SESSIONID} として生成することをすでに理解しているかもしれません。 、現在のユーザーのクライアントが Cookie を生成する、その内容はすでに述べたとおりです。このようにして、PHP はユーザーごとに SESSIONID を生成します。これは、ユーザーごとに 1 つのセッション ファイルを意味します。 PHP は、ユーザーが初めてセッションを使用するときに、クライアントに Cookie を書き込みます。ユーザーが今後アクセスするとき、ブラウザはこの Cookie を取得した後、内部の SESSIONID を読み取って保持します。この SESSIONID はセッション ディレクトリに移動し、セッション ファイルを見つけます。見つかった後は、$_SESSION['blog'] が呼び出されたときに表示されます。 2. PHP のセッション有効期限のリサイクルメカニズム セッションの生成と動作原理を理解した後、セッション ディレクトリには多数のセッション ファイルが存在することがわかりました。 もちろん、これらのファイルは永久に存在してはならず、PHP は期限切れのリサイクル メカニズムを提供する必要があります。 php.ini では、session.gc_maxlifetime によってセッションの生存時間が設定されます (デフォルトは 1440 秒)。 セッション ファイルの最終更新時間が生存時間を超えた場合、セッション ファイルは期限切れとみなされます。 次回セッションがリサイクルされるときに削除されます。次のセッションはいつリサイクルされますか?これは php リクエストの数に関係します。 PHP の内部メカニズムでは、PHP が n 回リクエストされると、リサイクル メカニズムが 1 回トリガーされます。 リクエストがトリガーされる回数は、次の 2 つのパラメーターによって制御されます。 セッション.gc_確率 = 1 session.gc_divisor = 100これは php.ini のデフォルト設定であり、100 個の PHP リクエストごとに 1 回のリサイクルが発生することを意味します。確率は gc_probability/gc_divisor です。サーバー側のセッション有効期限のメカニズムについて学習しました。次に、クライアント側の Cookie の有効期限のメカニズムを見てみましょう。 Cookie の有効期限が切れると、当然ながらブラウザはサーバーに Cookie を送信できなくなります。このとき、サーバーのセッション ファイルが存在していても、PHP はどのセッション ファイルを読み込むべきかがわからないため、役に立ちません。 PHP の Cookie の有効期限は作成時に設定されますが、セッションの作成時にクライアント用に PHP によって作成される Cookie のライフサイクルはどのようなものですか? これはphp.ini: session.cookie_lifetimeで設定されます。この値のデフォルトは 0 です。これは、ブラウザが閉じるとすぐに SESSIONID が無効になることを意味します。 session.gc_maxlifetime と session.cookie_lifetime を同じ値に設定すると、セッションの有効期限を制御できます。 3. PHPのセッションのクライアントストレージメカニズム ユーザーが Cookie をオフにすると、セッションはまったく機能しなくなります。 PHPのセッションのクライアント側ストレージメカニズムはCookieのみですか?いいえ。セッション ID は Cookie を通じて各ページに渡すことができないため、ページ取得を通じて値を渡すという別の魔法の武器があります。 php.ini の session.use_trans_sid が 1 に設定されている場合、Cookie が無効になっている場合、PHP は get メソッドを通じてセッション ID をページ間で自動的に渡すことができます。 現時点で、クライアントで Cookie が無効になっているときにセッションが使用され、現在のページをクリックして別のページにリンクすると、php は次のように sessionid パラメーターをリンクに自動的に追加します: nextpage.php?セッションID=2bd170b3f86523f1b1b60b55ffde0f66。 短所: 安全性が十分ではありません。 |

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

PHP開発における固体原理の適用には、次のものが含まれます。1。単一責任原則(SRP):各クラスは1つの機能のみを担当します。 2。オープンおよびクローズ原理(OCP):変更は、変更ではなく拡張によって達成されます。 3。Lischの代替原則(LSP):サブクラスは、プログラムの精度に影響を与えることなく、基本クラスを置き換えることができます。 4。インターフェイス分離原理(ISP):依存関係や未使用の方法を避けるために、細粒インターフェイスを使用します。 5。依存関係の反転原理(DIP):高レベルのモジュールと低レベルのモジュールは抽象化に依存し、依存関係噴射を通じて実装されます。

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

システムが再起動した後、UnixSocketの権限を自動的に設定する方法。システムが再起動するたびに、UnixSocketの許可を変更するために次のコマンドを実行する必要があります:sudo ...

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。

記事では、入力検証、認証、定期的な更新など、脆弱性から保護するためのフレームワークの重要なセキュリティ機能について説明します。

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。
