PHPはセッションの保存時間を設定します

王林
リリース: 2023-05-22 21:55:06
オリジナル
906 人が閲覧しました

Web サイト開発において、セッションは非常に重要なメカニズムです。セッションは、Web サイトがユーザーのログイン情報、ショッピング カート データ、およびその他の同様の情報を保存し、ユーザーが Web サイトを閲覧している間のデータの一貫性を維持するのに役立ちます。通常、ユーザーがブラウザを閉じるとセッションは破棄されるため、セッションの保存時間は非常に短くなります。ただし、ユーザー情報を長期間保存する必要がある場合には、セッションの保存時間を設定する必要があります。この記事ではPHPのセッション保存時間を設定する方法を紹介します。

  1. セッション保存時間

セッションは Cookie に依存するため、Cookie の有効期限を設定することでセッション保存時間を間接的に制御できます。ページがセッションを Cookie に保存すると、Cookie はユーザーのマシンに一定期間保存され、有効期限が切れるとブラウザによって消去されます。この方法では、対応する Cookie が見つからないため、セッションは破棄されます。

デフォルトでは、Cookie の有効期限はブラウザ セッション中です。つまり、ブラウザが閉じない限り、Cookie は常に存在します。ただし、Cookie の有効期限を設定することで、Cookie の保存時間、つまりセッションの保存時間を制御できます。以下に例を示します。

// 设置过期时间为30天
$expire_time = time() + 60 * 60 * 24 * 30;
setcookie('session_id', session_id(), $expire_time);
ログイン後にコピー

この場合、setcookie 関数を使用して session_id Cookie を設定し、ブラウザを閉じた後もセッションにアクセスできるようにします。 $expire_time 変数は、現在のタイムスタンプ (秒) に 30 日分の秒数を加えたものに設定されます。つまり、この Cookie は 30 日で期限切れになります。

  1. session.gc_maxlifetime

php.ini ファイルの session.gc_maxlifetime オプションを変更することで、セッションの最大存続期間を設定することもできます。このオプションは、セッションの最大存続期間を秒単位で指定します。セッションの有効期限が切れると、つまりこの時間が経過すると、セッションは PHP のガベージ コレクション メカニズムによって自動的に破棄されます。デフォルトでは、このオプションの値は 1440 秒 (つまり 24 分) です。php.ini ファイルでこの値を次のように変更できます:

session.gc_maxlifetime = 1800
ログイン後にコピー

これにより、すべてのセッションのストレージが 30 分になります。より長い時間が必要な場合は、この値をより大きな値に設定できます。

最大セッション存続時間を設定しすぎると、多くのサーバー リソースが占有され、サーバーの負荷が高くなりすぎる可能性があることに注意してください。

  1. session_set_cookie_params

setcookie 関数を使用して Cookie の有効期限を設定し、session.gc_maxlifetime オプションを変更してセッションの最大存続期間を設定することに加えて、 php.ini ファイルを使用して、PHP が提供する session_set_cookie_params 関数を使用して Cookie の一部のパラメータを設定することもでき、それによってセッションの保存時間を間接的に制御できます。この関数は 4 つのパラメータを受け入れます:

session_set_cookie_params($lifetime, $path, $domain, $secure);
ログイン後にコピー

そのうち:

  • $lifetime: Cookie の有効期間 (秒単位);
  • $path: Cookie のパス;
  • $domain: Cookie のドメイン名;
  • $secure: Cookie が HTTPS プロトコル経由でのみ送信できるかどうか。

session_start 関数を使用してセッションを開始すると、これらのパラメータが有効になり、セッションの保存時間を制御します。以下は、session_set_cookie_params 関数を使用して Cookie の有効期間を設定するサンプル コードです:

// 设置cookie的路径为整个域名,生存时间为1小时
session_set_cookie_params(3600, '/');
session_start();
ログイン後にコピー

この例では、Cookie の有効期間を 1 時間に設定し、Cookie のパスをドメイン名全体に設定します。セッションはこの期間中にクライアントに保存されます。このアプローチは、Cookie のパスとドメイン名をいつでも変更してセッションの保存時間を細かく制御できるため、Cookie の有効期限を直接設定するよりも柔軟です。

  1. 概要

セッションは Web 開発において非常に重要なメカニズムであり、ユーザー認証やショッピング カートなど、Web サイトに多くの便利な機能を提供します。ユーザー情報を長期間保存する必要がある場合は、セッションの保存時間を制御する必要があります。 PHP では、Cookie の有効期限を設定するか、php.ini ファイルの session.gc_maxlifetime オプションを変更するか、または session_set_cookie_params 関数を使用することでこれを実現できます。セッションの保存時間が長すぎると、サーバーの負荷が増加し、サーバーの問題が発生する可能性があるため、実際のニーズに応じてセッションの保存時間を合理的に設定する必要があることに注意してください。

以上がPHPはセッションの保存時間を設定しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート