セッションの有効期限を 1,800 秒に設定して Zend を使用しています。ユーザーに代わってブラウザからサーバーにリクエストを送信するたびに、またユーザーが新しいページをロードするたびに、このセッションの有効期限が 1,800 秒に更新されるのか、それともユーザーが新しいページ?
4 に答える
ユーザーが新しいページをロードすると、ブラウザがユーザーに代わってサーバーにリクエストを送信します。上で描いた 2 つのシナリオは同じものです。
セッションが開始されると、セッション ID がブラウザーに送信され、通常はセッション ID が Cookie に保存されます。次に、ブラウザは Cookie を使用して、リクエストごとにセッション ID をサーバーに渡し、ユーザーを識別します。サーバーはセッションがいつ期限切れになるかを追跡しますが、この領域は少し複雑になる可能性があります ( How do I expire a PHP session after 30 minutes? を参照) 。
ただし、同じブラウザーを使用して要求を行っている限り、指定した 2 つのシナリオでセッションの有効期限が更新されます。
セッション ID を保持する Cookie (およびターゲット サーバーから発信される他のすべての Cookie) は、ページの更新や ajax 呼び出しなど、サーバーに対して行うすべての要求と共に移動します。
そうです、セッションはサーバーとの対話時に更新されます。
基本的に、それは多くのことに依存します。主にブラウザとブラウザのバージョンに依存します。この投稿を読むことができます: How do I expire a PHP session after 30 minutes?
最初の呼び出しである場合に session_start() を実行すると、サーバーはセッション情報を /tmp フォルダーのファイルに保存し、このファイル識別子を使用してブラウザーに Cookie を送信します。それ以外の場合、サーバーは Cookie 識別子を取得し、ファイル情報を読み込みます。 . PHP 設定でのデフォルトのこの Cookie の有効期間は 30 分です。
php.ini または ini_set 関数または .htacces ファイルでディレクティブを手動で設定することで、この Cookie の時間を増やすことができます。ディレクティブ session.cookie_lifetime のみを設定します。値は秒数です。Cookie に設定されている場合は、ブラウザを閉じるまで有効です。
別の考えられる解決策は、ユーザー用のトークン システムを作成することです。たとえば、2 か月幅のトークン (ユーザー ID フィールドを持つデータベース テーブルに保存された大きなランダム キー) の後に有効期限が切れる Cookie をブラウザーに手動で送信します。セッションが利用できない場合は、Cookie が存在するかどうかを確認し、Cookie トークンを使用して手動でユーザーを見つけてセッション ログインを再作成できます。