ホームページ  >  記事  >  バックエンド開発  >  PHP_PHP チュートリアルでの SESSION の使用体験の概要

PHP_PHP チュートリアルでの SESSION の使用体験の概要

WBOY
WBOYオリジナル
2016-07-21 15:20:02785ブラウズ

SESSION セッションが開かれると、ブラウザーの session_id を一意に識別する Cookie が最初に送信されます (名前は PHPSESSID で、session_name() を通じて取得できます)。session.save_handler = files と同様に、指定されたファイル内に送信されます。サーバーのディレクトリ (temp など) サフィックスのないファイルを生成します。名前は

コードをコピーします コードは次のとおりです:

'sess_" + 'session_id';

PHP_PHP チュートリアルでの SESSION の使用体験の概要
これで基本的な設定は完了です。次に http リクエストが開始されると、ブラウザは最初に現在のドメイン名ですべての Cookie 名と値を送信します。これにより、サーバーは、誰が送信したかを混乱させることなく、Cookie 内の session_id に基づいてセッション ファイルを読み取ることができます。セッションが所属します。

このステップは次のとおりです:

SESSION は、一意の Cookie 変数 session_id をブラウザーに送信します。この session_id 変数には名前と値があります。変数名 (name) のデフォルトは PHPSESSID で、変数値 (value) は、rvag9m368vim7k8g4v7k2ank70 のような、apach によってランダムに生成された文字列です。通常、session_id はこの一意の文字列 rvag9m368vim7k8g4v7k2ank70 を指します。

具体的には、これは FF の HTTP 応答ヘッダーの下にあります:
PHP_PHP チュートリアルでの SESSION の使用体験の概要

session_start();
プログラム内の上記の文は、ブラウザが PHPSESSID の Cookie を送信しない場合は、1 つ送信するだけで上記の機能を完了します。同じセッションが維持されるように、この Cookie を読み取ります。

セッションがどのように機能するかがわかったので、サーバー側でファイル sess_rvag9m368vim7k8g4v7k2ank70 を手動で削除すると、セッションは無効になることが推測できます。ブラウザーの Cookie が無効であれば、セッションは引き続き無効になります。 。
手動の場合:
サーバー側では、
session_destroy() または session_unset()
を使用して無効化できます。
ブラウザ側:
直接
?setcookie('PHPSESSID','',123);
Cookie を期限切れにするか、別の方法で行うことができますが、すぐに期限切れにすることはできません
?session_set_cookie_params($time);//Current time スタンプの秒 (60 など) は、60 秒で期限切れになることを意味します。 タイムスタンプ + 設定した時間を使用しないでください。
上記はすべてセッションを早期に期限切れにすることに関するものですが、セッションを直接遅らせることは可能ですか?設定(session.gc_maxlifetime)の変更に加えて、php.iniのsession.gc_maxlifetimeに有効期限が設定されています。この際、session.gc_probability /session.gc_divisorが再利用される可能性があります。この時間に達して GC プロセスが開始されると、GC はセッション ファイルの変更時刻 (mtime) を読み取り、現在の時刻を減算した後の値が session.gc_maxlifetime よりも大きいことがわかり、すぐに削除します。この時点で、このセッションを維持する方法は session.gc_maxlifetime 内でのみ可能であることがわかりました。これにより、セッションはアクセスされるたびに変更される必要があります。 session.gc_maxlifetime よりも。
また、ブラウザの PHPSESSID の存続時間を設定する session.cookie_lifetime についても説明します。デフォルトは 0 です。ブラウザを再起動すると、Cookie は無効になり続けます。 FF以下。 session_set_cookie_params を使用して session.cookie_lifetime を設定できます。
?session_set_cookie_params(60);//60 s session_start();
session.gc_maxlifetime と session.cookie_lifetime は共同でセッションの存続期間を決定します。
------------------------------------------------- ------------
Firefox Cookie セッションの有効期限に関する情報を探していたところ、次の情報を見つけました

これは明らかに仕様によるものです。この Bugzilla のバグを確認してください: https://bugzilla.mozilla.org / show_bug.cgi?id=443354

Firefox には、Firefox を閉じるとすべてのタブを保存し、ブラウザを復元するとそれらのタブが戻ってくるという機能があります。これは私は知りませんでした。それらのページのすべてのセッション Cookie も復元されるということです。ブラウザを一度も閉じていないかのように処理されます

これは、ブラウザがクラッシュした場合に元の状態に戻るという意味では理にかなっています。セッション Cookie がクリアされることに慣れている Web 開発者にとっては、少し当惑します。私がいつもタブで開いているサイトによって設定された古いセッション Cookie がいくつかあります。これをテストするには、すべてのタブを閉じます。ブラウザを閉じてから再起動してください。その場合は、セッションの復元をオフにする必要があると思います。

これが Firefox のセッション保存機能です。設計。このテストは、ブラウザーのすべてのタブを閉じてから実行し、ブラウザーを閉じて再起動して、まだ保存されているかどうかを確認します。

http://www.bkjia.com/PHPjc/325182.html

tru​​ehttp://www.bkjia.com/PHPjc/325182.html技術記事 SESSION セッションが開かれると、session.save_handler = files... と同じように、ブラウザーの session_id を一意に識別する Cookie が最初に送信されます (名前は PHPSESSID で、session_name() を通じて取得できます)。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。