PHPでセッションタイムアウトを設定する方法

PHPz
リリース: 2023-04-12 17:34:12
オリジナル
1327 人が閲覧しました

PHP は、その学習のしやすさ、使いやすさ、強力な機能により、Web 開発の標準言語の 1 つになりました。しかし、Web アプリケーションでは、セッション タイムアウトの問題が多くの開発者を悩ませています。セッション タイムアウトとは、ユーザーが一定期間操作を実行しないと、サーバー セッションが自動的に期限切れになり、セッション データが消去されることを意味します。場合によってはセッションタイムアウトを制御したい場合があるので、この記事ではPHPでセッションタイムアウトを設定する方法を紹介します。

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 セッション タイムアウト設定

デフォルトでは、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 セッション タイムアウトを設定するその他の方法

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() を呼び出す必要があります。

セッション タイムアウトを設定するもう 1 つの方法は、

.htaccess ファイルを使用してデフォルトのタイムアウトを変更することです。次のコードをファイルに追加できます:

php_value session.gc_maxlifetime 300
ログイン後にコピー
上記のコードは、セッション タイムアウトを 5 分 (つまり 300 秒) に設定します。

概要

この記事では、PHP セッション タイムアウトの基本概念を学び、PHP でセッション タイムアウトを設定する方法を紹介しました。セッション タイムアウトは、

php.ini ファイルを変更するか、ini_set() 関数を使用するか、.htaccess ファイルに構成を追加することで制御できます。

実際の開発では、アプリケーションのシナリオと実際のニーズに基づいて、適切なセッション タイムアウトを選択する必要があります。

以上がPHPでセッションタイムアウトを設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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