1

次のように認証Cookieを設定しています:

$identifier = $this->createIdentifier($username);
$key = md5(uniqid(rand(), true));
$timeout = time() + 60 * 60 * 24 * 100;

setcookie('auth', "$identifier:$key", $timeout);

ログアウト後、次のようにして無効にしようとしています:

setcookie('auth', "", time() - 3600);

ログアウト後に制限されたページを表示しようとすると、Cookie が存在するかどうかを確認しています。

if (isset($_COOKIE['auth'])) {
error_log("COOKIE EXISTS: " . print_r($_COOKIE, true));
}

これが私のログアウトスクリプトです:

if (!isset($_SESSION)) session_start();

$ref="index.php";

if (isset($_SESSION['username'])) {
unset($_SESSION['username']);   

session_unset();
session_destroy();

// remove the auth cookie
setcookie('auth', "", time() - 3600);

}

header("Location: " . $ref);
exit();

私はこのコードを打つべきではありませんが、私はそうしています。ログアウトすると、ブラウザから Cookie が削除されていることがわかります。ログアウトした後、どのように再びそれを見つけるのか考えていますか?

更新 このコードは、ユーザーの特権などをチェックする別のクラスから呼び出されます。動作しないファイルは、上の 1 つのディレクトリからそれを参照するファイルだけです。例えば

このようにそれを参照するファイルはすべて正常に動作します:

<?php include_once('classes/check.class.php'); 

それを参照しているファイルは動作しません:

<?php include_once('../classes/check.class.php'); 

これを引き起こしている可能性のある考えはありますか?

4

1 に答える 1

2

ユーザーをログアウトしたら、リダイレクトを実行して新しいページをロードする必要があります。Cookie は新しいリクエストが行われるまでページ リクエストと共に送信されるため、これらの Cookie は「削除」した後も存続します。

于 2013-01-21T15:22:38.313 に答える