PHP サーバーキャッシュ SESSION の使用方法の詳細説明
1. session.save_handler = files
1. session_start() () はセッションメカニズムの開始時に一定の確率でガベージコレクションを有効にします。セッションはファイルに保存されるため、PHP 自体のガベージコレクションはファイルの削除を必要とします。 php.ini の設定ですが、一部のシステムでは session.gc_probability = 0 になっており、これは確率が 0 であり、ガベージ コレクションは cron スクリプトを通じて実装されます。
session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 1440//デフォルトの有効期限は 24 分です
//確率は session.gc_probability /session. gc_divisor result 1/1000,
//セッション ガベージ コレクションでは各ファイルの有効期限が切れているかどうかを確認する必要があるため、小さすぎる設定はお勧めできません。
session.save_path = //システムごとにデフォルトが異なるようです。1 つの設定は "N;/path" です。
//この場合、ガベージ コレクションは行われません。関数は独自のスクリプトを記述する必要があります
(2) セッションは現在 $_COOKIE[session_name()] が存在するかどうかを判断し、session_id を保存する COOKIE キーの値を返します。 🎜>
この値は php.ini finds session.name = PHPSESSID //デフォルト値 PHPSESSID
から取得できます (3) 存在しない場合は、session_id が生成され、生成されたsession_id は COOKIE の値としてクライアントに渡されます。これは、次の COOKIE 操作を実行するのと同じです。このステップでは、ヘッダーで COOKIE が送信されるため、出力が行われないことに注意してください。別の関数 session_regenerate_id() があり、この関数を使用すると、これより前に出力することはできません。
<p>setcookie(</p> session_name(),<br /> session_id(),<br /> session.cookie_lifetime,//默认0<br /> session.cookie_path,//默认'/'当前程序跟目录下都有效<br /> session.cookie_domain,//默认为空<br /><p>)</p>
ログイン後にコピー
(4) 存在する場合は、session_id = $_COOKIE[session_name]; 次に、session.save_path で指定されたフォルダーに移動して、 'SESS_' .session_id() ファイルを作成し、ファイルの内容を読み取り、デシリアライズして、$_SESSION
に値を代入します。たとえば、$_SESSION
に値を割り当てます。 、新しい値を追加します $_SESSION ['test'] = 'blah'; その後、この $_SESSION はメモリ内にのみ保持され、スクリプトの実行が終了すると、$_SESSION の値を session_id で指定されたフォルダーに書き込んで閉じます。関連リソース。この段階では、古い session_id を破棄して新しい session_id を生成するなど、session_id を変更する操作を実行できます。Drupal の匿名ユーザーなどのカスタム セッション操作とロール変換に使用されます。ログイン後、新しい session_id
<p><?php</p>if(isset($_COOKIE[session_name()])){<br /> setcookie(session_name(),'',time()-42000,'/');//旧session cookie过期<br />}<br />session_regenerate_id();//这一步会生成新的session_id<br /><p>//session_id()返回的是新的值 </p>
ログイン後にコピー
を使用する必要があります。 3. SESSION の書き込み操作
は、次の場合に SESSION を実行します。スクリプトは書き込み操作を終了します。$_SESSION の値を session_id で指定されたファイルに書き込みます。このファイルはすでに存在している可能性があるため、新しいファイルの作成が必要な場合があります。
4. SESSION を破棄する
SESSION によって送信される COOKIE は通常、メモリに保存されます。手動で有効期限を強制する必要がある場合は、ブラウザを閉じると期限切れになります。ブラウザを閉じる代わりにログアウトする場合は、コード内で SESSION を破棄する必要があります。
<p>setcookie(session_name(), session_id(), time() - 8000000, ..);//退出登录前执行</p>usset($_SESSION);//这会删除所有的$_SESSION数据,刷新后,有COOKIE传过来,但是没有数据<br /><p>session_destroy();//这个作用更彻底,删除$_SESSION 删除session文件,和session_id</p>
ログイン後にコピー
ブラウザが閉じられていません。再度更新します。2 と 3 の両方で COOKIE が送信されますが、データが見つかりません
2. session.save_handler = user
ユーザー定義のセッション処理メカニズム、詳細直感的
(1) session_start(),
session_set_save_handler('open', 'close', 'read', 'write', 'destroy', 'gc');
ログイン後にコピー
open($save_path, $session_name) を実行してセッション操作ハンドルを開きます。$save_path はセッションのときです.save_handler = files session.save_path ですが、ユーザーがカスタマイズした場合、これら 2 つのパラメーターは使用されず、直接 TRUE が返されます。
read($id) を実行してそこからデータを読み取ります。 //このパラメーターは session_id() に自動的に渡され、この値を介して操作できます。
(2) スクリプトの実行が終了し、write($id, $sess_data) を実行します。 //パラメータは 2 つで、非常にシンプルです。
(3) ユーザーが session_destroy() を必要とする場合は、最初に destroy を実行し、次にステップ 2 の実際的な例を実行します。