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

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

WBOY
リリース: 2016-07-13 17:49:49
オリジナル
720 人が閲覧しました

最近のオンラインでのやり取りでは、SESSION の使用法について多くの誤解があることがわかりました。基本的に、SESSION がどのように機能するかを理解していません。

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

です

'sess_" + 'session_id';




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

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

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

具体的な情報はFFのHTTPレスポンスヘッダー以下の通りです




session_start();
プログラム内の上記の文は、ブラウザが PHPSESSID の Cookie を送信しない場合は送信し、送信する場合は Cookie を読み取ることで、同じセッションを維持することができます。

さて、セッションがどのように機能するかがわかったので、サーバー側でファイル sess_rvag9m368vim7k8g4v7k2ank70 を手動で削除すると、セッションは無効になることが推測できます。ブラウザーの Cookie が無効であれば、セッションは引き続き無効になります。
手動の場合:
サーバー側では、

を使用できます

session_destroy() または session_unset()
無効にします。
ブラウザ側:
www.2cto.com に直接アクセスできます

setcookie('PHPSESSID','',123);
Cookie を期限切れにするか、別の方法で期限切れにしますが、すぐには期限切れにしないでください

session_set_cookie_params($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.cookie_lifetime を設定するには、session_set_cookie_params を使用できます

session_set_cookie_params(60);//60 秒
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 がいくつかあります。
 
これをテストするには、ブラウザのすべてのタブを閉じてから、ブラウザを閉じて再起動します。その場合、サイトのセッション Cookie がクリアされるはずだと思います。それ以外の場合は、セッションの復元をオフにする必要があります。
 
これは火狐のセッション保存機能で、FF 設定は次のとおりです。これを行うには、ブラウザーのすべてのタブを閉じ、ブラウザーを閉じて再起動し、保存されているかどうかを確認します。

摘自 技术熊猫

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

tru​​ehttp://www.bkjia.com/PHPjc/478309.html技術記事最近、SESSION の使用には非常に多くのセクションがあることが知られていますが、SESSION の動作原理は実際には理解されていません。
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート