ホームページ >バックエンド開発 >PHPチュートリアル >PHP SESSIONの使い方を詳しく解説
PHP サーバーキャッシュ SESSION の使用方法の詳細説明
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 分です
(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 の実際的な例を実行します。