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

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

Nov 04, 2020 am 11:38 AM
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 までご連絡ください。

ホット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 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

今まで知らなかったことを後悔している 7 つの PHP 関数 今まで知らなかったことを後悔している 7 つの PHP 関数 Nov 13, 2024 am 09:42 AM

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

PHPでHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

母音を文字列にカウントするPHPプログラム 母音を文字列にカウントするPHPプログラム Feb 07, 2025 pm 12:12 PM

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

PHPでの後期静的結合を説明します(静的::)。 PHPでの後期静的結合を説明します(静的::)。 Apr 03, 2025 am 12:04 AM

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? Apr 03, 2025 am 12:03 AM

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。

See all articles