13

次の質問/回答に基づく CodeIgniter セッション クラスが Chrome で機能しない

米国のサーバーから遠く離れた別の国から、人々が私のウェブサイトにログインできないという問題がありました。オンラインで検索した後、問題がサーバーのタイムゾーンとユーザーのタイムゾーンの違いに基づいていることを説明する提案に出くわしました。そのため、session_expiration を延長することで問題を回避することができ、人々は正常にログインできるようになりました。

私の質問は、sess_time_to_update が新しいタイムスタンプを作成し、新しいタイムスタンプが間違ったタイムゾーンにあるためにユーザーをログアウトするかどうかです。リンクした質問で説明されているように、新しい sess_time_to_update を 17+ 時間以上にして、最も幅広いタイムゾーンをカバーする必要がありますか? 現地時間に基づいてユーザーのブラウザーにセッションを保存する他の方法はありますか (プロファイルでタイムゾーンを選択するように依頼したり、他の種類のユーザーフレンドリーでないスキームを使用したりする必要はありません)。デフォルトのセッション有効期限を 2 時間 + 800 秒にしたいと考えています。更新時間。セッションを保存するためにデータベースを使用していないので、使用したくありません。

4

1 に答える 1

14

設定は、セッションのsess_time_to_update詳細 (最後のアクティビティなど) が更新される頻度です。デフォルトは 5 分 (300 秒) ごとで、新しいセッション ID が生成されます。これにより、設定に基づいて有効期限がリセットされsess_expirationます。

sess_time_to_updateセッションの有効期限がリセットされ続けるため、ユーザーセッションをより長く存続させるため、デフォルト(またはそれ以下)のままにしておくことをお勧めします。高いままにしておく必要がある唯一の設定はsess_expiration、ユーザーのタイムゾーンを特定できない場合です。

ユーザーのタイムゾーンを特定するには、いくつかの方法があります。1 つは Javascript (例: Client Side Timezone Offsetting ) か、 PHP の GEOIPメソッドを使用してみることができます。

于 2012-12-20T16:01:08.637 に答える