1
<?php 

session_start();

$_SESSION['logged_in'] = false;

setcookie("dsgpassword127", $password, time()-3600);  /* expire the cookie */
setcookie("dsgemail127", $email, time()-3600);  /* expire the cookie */

session_destroy();

header("location: index.php");

?>

Chrome で非常にうまく機能する上記のコードは、FireFox 14.0.1 では Cookie を削除しません。誰かが同じ問題を経験したことがある場合、またはこれらの Cookie の期限切れに関して私が直面しているこの難問の解決策がある場合、これがなぜなのか疑問に思っています....

4

3 に答える 3

1

sesion_destroy()のマニュアルによると:

session_destroy()は、現在のセッションに関連付けられているすべてのデータを破棄します。セッションに関連付けられているグローバル変数の設定を解除したり、セッションCookieの設定を解除したりすることはありません。... Cookieを使用してセッションIDを伝播する場合(デフォルトの動作)、セッションCookieを削除する必要があります。そのためにsetcookie()を使用できます。

ChromeがCookieの設定を解除している理由を説明するのは難しいですが、Firefoxの動作ではなく、異常に見えるのはChromeの動作です。

ただし、デッドセッションを指す古いCookieの存在は問題にはなりません。サーバーは、空のセッションデータを使用して新しいセッションを作成し、新しいセッションを指すCookieを返送する必要があります。

実際、暗号化されていないユーザーとパスワードをクライアントに保存することは、おそらくお勧めできません。本当に必要ですか?その情報をサーバー側に保存することはおそらくより一般的であり、クライアント側にはセッションCookieのみが与えられます。

于 2012-08-27T01:49:48.860 に答える
1

FireFox をアンインストールし、最新バージョンの 15.0 を再インストールしました。今回、FireFox がパスワードを自動的に記憶するように要求したとき、私はそうしないように要求しました。現在、ブラウザは正常に反応しています。「パスワードを記憶する」機能に関しては、14.0.1 でも同じことが当てはまったのではないかと思います。

于 2012-08-29T03:35:52.547 に答える
0

次のように、Cookieの有効期限を1に設定するだけです。

setcookie("dsgpassword127", $password, 1);  /* expire the cookie */
setcookie("dsgemail127", $email, 1);  /* expire the cookie */

基本的に、3番目のパラメーターはエポックからの秒数です。1はエポックの1秒後に設定するので、心配する必要はありませんtime()。それがFirefoxに役立つかどうかを確認してください。

于 2012-08-27T01:52:17.973 に答える