1

私はこれが何十回も尋ねられたのを見ました、そして答えのどれもうまくいきません。

$_SESSION['name']たとえば、ユーザーがブラウザウィンドウを閉じて新しいブラウザを開いた後も、引き続きアクセスできるセッションデータがあります。これは、IEではなくchromeとFFで発生しています。

ユーザーが私のサイトにアクセスしたときにランダムなデータを生成し、ユーザーがブラウザーウィンドウを開いている間、そのデータを保持する方法が必要です(他のサイトにいる場合でもそうです)。しかし、彼が新しいブラウザウィンドウを閉じて開いた場合は、ランダムデータを再度生成したいと思います。

4

3 に答える 3

1

セッション Cookie は一時メモリに保持され、ブラウザーが閉じられたときにのみ消去されます。これは、構成された有効期間に基づいて削除される永続 Cookie とは異なります。

ユーザーがウィンドウを閉じてサイトを離れたとしても、ブラウザ自体が閉じられるわけではないため、「セッション」Cookie はブラウザの裁量で存続する可能性があります。1 つには、Firefox はその分野で興味深い動作を示しています。

おそらく、ブラウザー セッションごとに 1 つのページがあった初期の頃は、通常、ウィンドウを閉じることはブラウザー全体を閉じることを意味していたため、この問題は現在ほど一般的ではなかった可能性があります。

肝心なのは、ブラウザー ウィンドウの開閉に基づくセッション Cookie の動作は信頼できないということです。必要なことを達成するには、別の方法を見つける必要があります。明示的な有効期間を設定すると、実際にうまくいく場合があります。

于 2012-11-26T03:40:34.350 に答える
1

ブラウザを閉じた後、セッション Cookie を削除する必要があります。これは、 session.cookie-lifetime設定で実現されます。

session.cookie_lifetime integer session.cookie_lifetime は、ブラウザに送信される Cookie の有効期間を秒単位で指定します。値 0 は、「ブラウザが閉じられるまで」を意味します。

php.ini に追加するか、 session_set_cookie_paramssession.cookie_lifetime = 0を使用してリクエストごとに手動で設定することができます

session_set_cookie_params(0); // Call before session_start
session_start(); 
于 2012-11-26T03:41:00.290 に答える
0

$_SESSIONデフォルトでは、ブラウザを閉じると常に終了しますが、以前に使用したセッションを引き続き使用したい場合

session_set_cookie_parameters()を使用して、セッションを開始する前にセッション cookie にゼロ以外の有効期間を指定するか、session.cookie_lifetimeをゼロ以外に設定できます。

于 2012-11-26T03:45:10.307 に答える