ホームページ >バックエンド開発 >PHPチュートリアル >PHP_PHPチュートリアルでセッションが無期限になる解決策と実装方法
PHP セッションが期限切れにならないようにするには、あなたはそれほど憂鬱な問題に遭遇したことはないかもしれませんが、私はそれに遭遇し、非常に憂鬱でした。
当社のカスタマーサービス担当者、つまり限られた数のカスタマーサービス担当者のみが使用できるシステムを初期段階で開発しました。数日前、突然この質問を提起したのは、限られたカスタマー サービス スタッフでした。私たちが顧客の問題を解決したいと思っていると、短時間 (ページを操作しない 30 分) ごとに、システムはログを記録する必要があることを要求しました。クライアントの時間が遅れました…これは面白くありません
お客様は神様、唯一の神様です。そこで上司は、カスタマー サービス スタッフが人為的に期限切れにしない限り、PHP のセッションは期限切れにならないことを理解するように私たちに求めました。セキュリティ上の理由からこの期限切れのない動作は理解できません。遅延を理由に以前のプログラムを変更したくありません。でも仕方ない、まだ変わらないといけない。
プログラムを変更しないのが最善の方法です。プログラムを変更すると、テスト部門が私と同じように非常に憂鬱になるため、システム環境の設定を変更するだけです。実際には、php.ini 設定を開きます。ファイルを開き、次のように 3 行を変更します。
1. session.use_cookies
この値を 1 に設定し、Cookie を使用してセッション ID を渡します
2. session.cookie_lifetime
これは、SessionIDがクライアントのCookieに保存される時間を表しており、デフォルトは0で、ブラウザを閉じるとすぐにSessionIDが無効になることを意味します...これが原因でPHPセッションが使用できなくなります。では、999999999 はどうでしょうか。これで十分です。
3. session.gc_maxlifetime
これは、セッションデータがサーバー側に保存される時間です。この時間を超えると、セッションデータは自動的に削除されます。それから、これも99999999に設定します。
それだけです。すべて問題ありません。もちろん、信じられない場合は、テストして確認してください。コンピューターが停電したりクラッシュしたりしなければ、セッションをセットアップして 10 日半後に戻ってきます。 、このセッションIDはまだ表示されています。
もちろん、あなたにサーバーを制御する権限がなく、php.ini の設定を変更できるほど幸運ではない可能性もあります。もちろん、私たち自身に頼る方法もあります。クライアントを使用して Cookie を保存し、取得したセッション ID をクライアントの Cookie に設定し、この値を session_id() 関数に渡す必要があります。具体的な方法は次のとおりです。
リーリー
しばらくしてからこのページに戻ってきて (どのくらい時間が経ったでしょうか? 自分の目で確認してください)、出力される数値が離れたときよりも 1 大きくなっている場合、それは正しいです。数値が大幅に大きくなっている場合は、誰かがそうしている可能性があります。このテストは正確ではありません、またちょっと外に出てください注: setcookie 行の 'PHPSESSID' は確実ではありません。変更マニアに悩まされているネットワーク管理者に遭遇した場合、最善の方法は phpinfo() 関数を使用して確認することです。 session.name の値。これはより科学的です。