PHP は、その学習のしやすさ、使いやすさ、強力な機能により、Web 開発の標準言語の 1 つになりました。しかし、Web アプリケーションでは、セッション タイムアウトの問題が多くの開発者を悩ませています。セッション タイムアウトとは、ユーザーが一定期間操作を実行しないと、サーバー セッションが自動的に期限切れになり、セッション データが消去されることを意味します。場合によってはセッションタイムアウトを制御したい場合があるので、この記事ではPHPでセッションタイムアウトを設定する方法を紹介します。
PHP セッションは、サーバー側にデータを保存するためのメカニズムです。ユーザーが Web サーバーとの接続を確立すると、Web サーバーはユーザーごとに一意のセッション ID を作成します。サーバーはセッション ID を使用して各セッションのデータを保存します。
セッション ID はクライアントの Cookie に保存されます。ユーザーがサーバーと通信するたびに、Web ブラウザはセッション ID を含む Cookie を送信します。サーバーはセッション ID を使用してユーザーに関連付けられたセッションを検索し、ユーザーのリクエストとサーバーの応答の間でこのセッション データを維持します。
PHP では、$_SESSION
グローバル変数を使用してセッション データにアクセスできます。例:
session_start(); // Set session variable $_SESSION['username'] = 'John Doe'; // Get session variable $loggedInUser = $_SESSION['username'];
上記のコードは、session_start()
が呼び出された後、クライアントに対応するセッション データを作成または復元します。 $_SESSION
保存されたセッション データの読み取りまたは変更に使用できます。
デフォルトでは、PHP セッション データはサーバー上の session.save_path
ディレクトリと構成ファイル php.ini に保存されます。
のデフォルトのセッション タイムアウトは 1440
秒 (つまり 24 分) です。この時間は、ほとんどのプログラマとアプリケーションに適しています。ただし、このデフォルト値は、一部のアプリケーションやシナリオには適さない場合があります。たとえば、ユーザーの帯域幅が限られている、またはその他のセキュリティ ニーズがあるために、タイムアウトをより短く設定したい場合があります。
PHP セッション タイムアウトは、次の 2 つのパラメータを使用して変更できます。
session.gc_maxlifetime
- このパラメータは、セッション タイムアウトを設定するために使用されます。 session.gc_probability
および session.gc_divisor
- これらのパラメーターは、自動ガベージ コレクション メカニズムの確率を設定するために使用されます。 セッション タイムアウトを設定するには、php.ini
ファイルに次のコードを追加します。
session.gc_maxlifetime = 1440
上記のコードは、タイムアウトを 1440 秒に設定します。 (つまり 24 分)。この値を 5 分 (つまり 300 秒) などの短い時間に設定することもできます。
session.gc_maxlifetime = 300
上記のコードでは、ユーザーが 5 分間アクティビティを行わなかった場合、サーバーはユーザーのセッション データを自動的にクリアします。
session.gc_maxlifetime
の値は Web サーバーのタイムアウトよりも小さくする必要があることに注意してください。そうしないと、ユーザーがセッション データを使用している間にセッション データがクリアされる可能性があります。
php.ini 構成ファイルでの設定に加えて、次のコードを使用してアプリケーションでセッション タイムアウトを設定することもできます。
// Set session timeout to 5 minutes ini_set('session.gc_maxlifetime', 300); // Start session session_start();
ini_set() 関数を使用して
session.gc_maxlifetime を 300 秒 (つまり 5 分) に変更します。
session_start() 関数を呼び出す前に、
ini_set() を呼び出す必要があります。
.htaccess ファイルを使用してデフォルトのタイムアウトを変更することです。次のコードをファイルに追加できます:
php_value session.gc_maxlifetime 300
php.ini ファイルを変更するか、
ini_set() 関数を使用するか、
.htaccess ファイルに構成を追加することで制御できます。
以上がPHPでセッションタイムアウトを設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。