ホームページ >バックエンド開発 >PHPチュートリアル >PHPセッションの動作メカニズムを理解する方法

PHPセッションの動作メカニズムを理解する方法

清浅
清浅オリジナル
2019-02-14 17:42:144043ブラウズ

php セッションの操作メカニズムは、クライアントがセッション ID をサーバーに渡し、サーバーがセッション ID に基づいて対応するファイルを見つけ、それを逆シリアル化してセッション値を取得することです。

#今日私が共有する知識ポイントは、PHP のセッション実行メカニズムです。PHP に精通している開発者にとっては馴染みのない内容ですが、開発者にとってはあまり理解できないものです。始めたばかりの方。次に、この記事では、一定の参考効果がある PHP のセッション実行メカニズムを詳しく紹介します。

[推奨コース:
PHP チュートリアル

]

PHPセッションの動作メカニズムを理解する方法

PHP セッション操作メカニズムの意味: PHP セッション操作メカニズムとは、クライアントはサーバーに渡されたセッション ID を使用します。サーバーはセッション ID に従って対応するファイルを見つけます。読み取り時には、ファイルの内容はセッション値を取得するために逆シリアル化されます。保存時には、最初にシリアル化されてから ## に書き込まれます。

#PHP セッション メカニズムの分類

PHP のセッションには、デフォルト メカニズムとユーザー定義のセッション処理メカニズムという 2 つのメカニズムがあります。

デフォルトのメカニズム

php.ini 設定:

session.save_handler = files

はディスク ファイルを使用して PHP セッションを実装します。これはいくつかの部分で構成されています。

session_start()

session_start() はセッション メカニズムの始まりであり、一定の確率でガベージ コレクションを開始します。この確率は php.ini の設定に基づいて決定されます。一部のシステムでは session.gc_probability = 0、つまり確率が 0 の場合、ガベージ コレクションは行われません。

値を $ に割り当てます。 _session

新しい値の追加はメモリ内にのみ保持されます。スクリプトの実行が終了したら、$_session の値を session_id で指定されたフォルダーに書き込み、関連するリソースを閉じます。この段階では、古い session_id を破棄して新しい session_id を生成するなど、session_id を変更する操作を実行できます。これは通常、カスタム セッション操作で使用されます

:

if (isset($_COOKIE[session_name()])) {
            setcookie(session_name(),'',time() -42000,'/');//旧session cookie过期
          }
          session_regenerate_id();//这一步会生成新的session_id
         //session_id()返回的是新的值

セッション操作の書き込み

スクリプト内の次の場所最後に、セッション書き込み操作が実行され、$_session の値が session_id で指定されたファイルに書き込まれます。このファイルはすでに存在している場合もあれば、新しいファイルの作成が必要な場合もあります。

セッションの破棄

セッションによって送信される Cookie は通常、メモリに保存されるインスタント Cookie であり、ブラウザを閉じると期限切れになります。 . ですが、ブラウザを閉じるのではなくログアウトしたいだけの場合は、コード内でセッションを破棄する必要があります。方法はたくさんあります。

#例:

1. setcookie(session_name(),session_id(),time() -8000000,..);//退出登录前执行
2. usset($_SESSION);//这会删除所有的$_SESSION数据,刷新后,有COOKIE传过来,但是没有数据。
3. session_destroy();//这个作用更彻底,删除$_SESSION 删除session文件,和session_id

##ユーザー定義のセッション処理メカニズム

# php.ini 設定

session.save_handler = user
ユーザー定義の処理メカニズムは次の部分に分割できますPHPセッションの動作メカニズムを理解する方法

session_start()

実行オープン( $save_path,$session_name) ステートメントはセッション操作ハンドルを開きます

read($id) を実行してデータを読み取ります

Note

:$save_path は直接 true を返しますこの場合

#スクリプト実行の終了

#write($id,$sess_data) ステートメントを実行

#セッションを破棄

ユーザーがセッションを破棄する必要がある場合は、まず破棄を実行してからステップ 2 を実行する必要があることに注意してください。

要約: 上記は全体です。この記事の内容が皆様のお役に立てれば幸いです。

php 中国語ネットワーク学習トピック:

php セッション

(写真、ビデオ、事例を含む)

以上がPHPセッションの動作メカニズムを理解する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。