5

セッションの有効期限を 1,800 秒に設定して Zend を使用しています。ユーザーに代わってブラウザからサーバーにリクエストを送信するたびに、またユーザーが新しいページをロードするたびに、このセッションの有効期限が 1,800 秒に更新されるのか、それともユーザーが新しいページ?

4

4 に答える 4

2

ユーザーが新しいページをロードすると、ブラウザがユーザーに代わってサーバーにリクエストを送信します。上で描いた 2 つのシナリオは同じものです。

セッションが開始されると、セッション ID がブラウザーに送信され、通常はセッション ID が Cookie に保存されます。次に、ブラウザは Cookie を使用して、リクエストごとにセッション ID をサーバーに渡し、ユーザーを識別します。サーバーはセッションがいつ期限切れになるかを追跡しますが、この領域は少し複雑になる可能性があります ( How do I expire a PHP session after 30 minutes? を参照) 。

ただし、同じブラウザーを使用して要求を行っている限り、指定した 2 つのシナリオでセッションの有効期限が更新されます。

于 2012-06-05T06:00:59.217 に答える
0

セッション ID を保持する Cookie (およびターゲット サーバーから発信される他のすべての Cookie) は、ページの更新や ajax 呼び出しなど、サーバーに対して行うすべての要求と共に移動します。

そうです、セッションはサーバーとの対話時に更新されます。

于 2012-05-20T07:23:42.587 に答える
0

基本的に、それは多くのことに依存します。主にブラウザとブラウザのバージョンに依存します。この投稿を読むことができます: How do I expire a PHP session after 30 minutes?

于 2012-06-09T10:06:38.350 に答える
0

最初の呼び出しである場合に session_start() を実行すると、サーバーはセッション情報を /tmp フォルダーのファイルに保存し、このファイル識別子を使用してブラウザーに Cookie を送信します。それ以外の場合、サーバーは Cookie 識別子を取得し、ファイル情報を読み込みます。 . PHP 設定でのデフォルトのこの Cookie の有効期間は 30 分です。

php.ini または ini_set 関数または .htacces ファイルでディレクティブを手動で設定することで、この Cookie の時間を増やすことができます。ディレクティブ session.cookie_lifetime のみを設定します。値は秒数です。Cookie に設定されている場合は、ブラウザを閉じるまで有効です。

別の考えられる解決策は、ユーザー用のトークン システムを作成することです。たとえば、2 か月幅のトークン (ユーザー ID フィールドを持つデータベース テーブルに保存された大きなランダム キー) の後に有効期限が切れる Cookie をブラウザーに手動で送信します。セッションが利用できない場合は、Cookie が存在するかどうかを確認し、Cookie トークンを使用して手動でユーザーを見つけてセッション ログインを再作成できます。

于 2012-06-25T22:12:34.943 に答える