検索
ホームページバックエンド開発PHPの問題PHPで有効期限を設定する方法

php メソッドで有効期限を設定します: 最初にセッションを設定してセッションを読み取り、次に「unset($_SESSION[$name]);」によってセッションをクリアし、最後に「session::get('test」を出力します) ') ;" 期限切れです。

PHPで有効期限を設定する方法

推奨: 「PHP ビデオ チュートリアル

PHP でセッションの有効期限を厳密に設定してください。

セッションの有効期限は 30 分後に厳しく制限してください。

1. クライアント Cookie の有効期間を 30 分に設定します;

2. セッションの最大有効期間を 30 分に設定します;

3. 各セッション値についてタイムスタンプを付加し、プログラムが呼び出されたタイミングで判断する;

その理由については、まず PHP におけるセッションの基本原理を理解しましょう:

PHP のデフォルトのセッション有効期間は次のとおりです。 1440 秒 (24 分)、つまり、クライアントが 24 分を超えて更新されない場合、現在のセッションは無効になります。もちろん、ユーザーがブラウザを閉じるとセッションは終了し、当然セッションは存在しなくなります。

ご存知のとおり、セッションはサーバー側に保存されます。クライアントから提供されたセッション ID に基づいてユーザーのファイルが取得され、そのファイルが読み取られて変数の値が取得されます。クライアントの Cookie または Http1.1 プロトコルを使用できます。

Query_String (アクセスされた URL の "?" 以降の部分) がサーバーに送信され、サーバーはセッションのディレクトリを読み取ります。 .

セッションのライフサイクルを制御するには、まずセッションに関する php.ini の関連設定について学ぶ必要があります (「[セッション]」セクションで php.ini ファイルを開きます)。

##1. session.use_cookies: デフォルト値は「1」です。これは、SessionID が Cookie を使用することを意味します。渡すには、Query_String を使用して渡します。

2. session.name: これは変数です。 SessionID に保存される名前 (Cookie または Query_String の場合があります。デフォルト値は "PHPSESSID";

3. session.cookie_lifetime: これは、SessionID がクライアント Cookie に保存される時間を表します。デフォルトは 0、これは、ブラウザが閉じるとすぐにセッション ID が無効になることを意味します。このため、セッションは永続的に使用できなくなります。

4. session.gc_maxlifetime: セッション データがサーバー側に保存される時間です。この時間を超えると、セッション データは自動的に削除されます。

他にも多くの設定がありますが、この記事に関連するものはこれらだけであり、セッションの生存期間を設定する方法から始めましょう。

前に述べたように、サーバーはセッション ID を通じてセッション データを読み取りますが、通常、ブラウザから送信されたセッション ID はブラウザを閉じると消えてしまうため、手動でセッション ID を設定して保存するだけで済みますね。はい...

サーバーの操作権限がある場合、これを設定するのは非常に簡単です。次の手順を実行するだけです:

1. 「」を設定します。 session.use_cookies" を 1 に設定します。Cookie を使用してセッション ID を保存しますが、デフォルトは 1 で、通常は変更する必要はありません。

2. "session.cookie_lifetime" を設定する必要がある時間に変更します (たとえば、 1 時間、秒単位で 3600 に設定できます);

3.「session.gc_maxlifetime」を「session.cookie_lifetime」と同じ時間に設定します;

明確に記載されていますPHP ドキュメントでは、セッションの有効期間を設定するパラメータは session.gc_maxlifetime であると記載されています。このパラメータは、php.ini ファイルまたは ini_set() 関数を通じて変更できます。問題は、多くのテストを行った後、この

パラメーターを変更しても基本的には効果がなく、セッションの有効期間がデフォルト値の 24 分のままであることです。

PHP の動作メカニズムにより、セッション情報を定期的にスキャンしてセッション情報が無効かどうかを判断するデーモン スレッドがありません。有効なリクエストが発生すると、PHP は GC (ガベージ コレクター) を開始するかどうかを決定します。

デフォルトでは、session.gc_probability = 1、session.gc_divisor = 100 です。これは、GC が開始される確率が 1% であることを意味します。 GC のジョブは、すべてのセッション情報をスキャンし、現在時刻からセッションの最終変更日を減算し、それを session.gc_maxlifetime パラメーターと比較することです。生存時間が gc_maxlifetime を超えた場合、セッションは削除されます。

これまでのところ、すべてが正常に動作しています。では、なぜ gc_maxlifetime が無効になるのでしょうか?

デフォルトでは、セッション情報はシステムの一時ファイル ディレクトリにテキスト ファイルの形式で保存されます。 Linux では、このパスは通常 \\tmp であり、Windows では通常 C:\\Windows\\Temp です。サーバー上に複数の PHP アプリケーションがある場合、それらのセッション ファイルは同じディレクトリに保存されます。同様に、これらの PHP アプリケーションも一定の確率で GC を開始し、すべてのセッション ファイルをスキャンします。

問題は、GC が動作しているときに、異なるサイト上のセッションが区別されないことです。たとえば、サイト A の gc_maxlifetime は 2 時間に設定され、サイト B の gc_maxlifetime はデフォルトの 24 分に設定されます。サイト B の GC が開始されると、

がスキャンされます。

パブリック一時ファイル ディレクトリをスキャンし、サイト A からのものかサイト B からのものかに関係なく、24 分より古いすべてのセッション ファイルを削除します。このように、サイト A の gc_maxlifetime 設定は役に立ちません。

問題を見つけたら、解決するのは簡単です。 session.save_path パラメータを変更するか、session_save_path() 関数を使用して、セッションが保存されるディレクトリを専用のディレクトリに指定します。gc_maxlifetime パラメータは正常に機能します。

もう 1 つの問題は、gc_maxlifetime が保証できるのはセッションの存続期間の最短時間だけであり、保存することができず、この時間を過ぎるとセッション情報はすぐに削除されてしまいます。 GC は確率に基づいて開始されるため、長期間開始されない可能性があり、gc_maxlifetime を超えた後も多数のセッションが有効になります。

この問題を解決する 1 つの方法は、session.gc_probability/session.gc_divisor の確率を高めることです。100% にすると、この問題は完全に解決されますが、パフォーマンスに深刻な影響を与えることは明らかです。もう 1 つの方法は、

PHP のみを使用して実装し、セッション クラスを作成し、セッションの書き込み時に有効期限を書き込むことです。読み取りの際は、有効期限に基づいて有効期限が切れているかどうかを判断します。

えええええ

以上がPHPで有効期限を設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
酸とベースデータベース:違いとそれぞれを使用するタイミング。酸とベースデータベース:違いとそれぞれを使用するタイミング。Mar 26, 2025 pm 04:19 PM

この記事では、酸とベースのデータベースモデルを比較し、その特性と適切なユースケースを詳述しています。酸は、財務およびeコマースアプリケーションに適したデータの整合性と一貫性を優先し、ベースは可用性に焦点を当て、

PHPセキュアファイルアップロード:ファイル関連の脆弱性の防止。PHPセキュアファイルアップロード:ファイル関連の脆弱性の防止。Mar 26, 2025 pm 04:18 PM

この記事では、コードインジェクションのような脆弱性を防ぐために、PHPファイルのアップロードを確保することについて説明します。ファイルタイプの検証、セキュアストレージ、およびアプリケーションセキュリティを強化するエラー処理に焦点を当てています。

PHP入力検証:ベストプラクティス。PHP入力検証:ベストプラクティス。Mar 26, 2025 pm 04:17 PM

記事では、組み込み関数、ホワイトリストアプローチ、サーバー側の検証などの手法に焦点を当てたセキュリティを強化するためのPHP入力検証のベストプラクティスについて説明します。

PHP APIレート制限:実装戦略。PHP APIレート制限:実装戦略。Mar 26, 2025 pm 04:16 PM

この記事では、Token BucketやLeaky BucketなどのアルゴリズムやSymfony/Rate-Limiterなどのライブラリを使用するなど、PHPでAPIレート制限を実装するための戦略について説明します。また、監視、動的に調整されたレートの制限、および手をカバーします

PHPパスワードハッシュ:password_hashおよびpassword_verify。PHPパスワードハッシュ:password_hashおよびpassword_verify。Mar 26, 2025 pm 04:15 PM

この記事では、パスワードを保護するためにPHPでpassword_hashとpassword_verifyを使用することの利点について説明します。主な議論は、これらの関数が自動塩の生成、強力なハッシュアルゴリズム、およびSecurを通じてパスワード保護を強化するということです

OWASPトップ10 PHP:共通の脆弱性を説明し、軽減します。OWASPトップ10 PHP:共通の脆弱性を説明し、軽減します。Mar 26, 2025 pm 04:13 PM

この記事では、PHPおよび緩和戦略におけるOWASPトップ10の脆弱性について説明します。重要な問題には、PHPアプリケーションを監視および保護するための推奨ツールを備えたインジェクション、認証の壊れ、XSSが含まれます。

PHP XSS予防:XSSから保護する方法。PHP XSS予防:XSSから保護する方法。Mar 26, 2025 pm 04:12 PM

この記事では、PHPでのXSS攻撃を防ぐための戦略について説明し、入力の消毒、出力エンコード、セキュリティを向上させるライブラリとフレームワークの使用に焦点を当てています。

PHPインターフェイスvs抽象クラス:それぞれを使用する時期。PHPインターフェイスvs抽象クラス:それぞれを使用する時期。Mar 26, 2025 pm 04:11 PM

この記事では、PHPでのインターフェイスと抽象クラスの使用について説明し、それぞれをいつ使用するかに焦点を当てています。インターフェイスは、無関係なクラスや複数の継承に適した、実装なしで契約を定義します。抽象クラスは共通の機能を提供します

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール