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 に設定します。
以上です。もちろん、信じられない場合は、テストして確認してください。セッションをセットアップして、コンピューターの電源が切れたりクラッシュしたりしないかどうかを確認してください。このセッション ID はまだ表示されます。
もちろん、あなたがサーバーを制御する権限を持っておらず、php.ini 設定を変更できるほど幸運ではない可能性もあります。もちろん、私たち自身に頼る方法があります。クライアントを使用して cookie を保存し、sessionID を取得する必要があります。それをクライアントの cookie に保存し、この cookie の値を設定して、この値を session_id() 関数に渡します。具体的な方法は次のとおりです。