0

あるページにCookieを設定し、リンクを介してアクセスする次のページで設定を解除しようとしています。ただし、2番目のページF5を更新した場合にのみ、Cookieが設定解除されます。

テストのために、最初のページに次のようなリンクとCookieの設定があります。

<?php
include("connect-db.php");
$id = "newuser";
setcookie("user_id", $id, time() + 31536000); 

if (isset($_COOKIE["user_id"]))
  echo "Welcome " . $_COOKIE["user_id"] . "!<br>";
else
  echo "Welcome guest!<br>";
?>
<br>
<a href='next.php'>Next</a>

次のページに私はこのphpコードを持っています:

<?php
header("Cache-Control: no-cache, must-revalidate, max-age=0"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
header('Pragma: no-cache');

setcookie("user_id", "", time()-(60*60*24), "/");
echo "<br /> Welcome " . $_COOKIE["user_id"] . "!<br>";
?>  

2番目のページでCookieが設定解除されていること、またはページが新たにフェッチされていることを確認するにはどうすればよいですか?

4

2 に答える 2

2

これは、何をしようとしているのかによって異なります。クライアントの Cookie に依存している場合は、クライアント (JavaScript) を使用して設定を解除することができます。依存関係がサーバーにある場合、Cookie を「設定解除」した後、Cookie に依存しないようにコードの 2 番目の部分を記述するだけでよいため、問題が何であるかを知るのは困難です。

おそらく不要な追加のページ読み込みであるため、これは完全にはお勧めしませんが、ヘッダーの送信を強制することもできます。

if (isset($_COOKIE['user_id'])) {
    setcookie(/* your params */);
    header('Refresh: ' . $_SERVER['REQUEST_URI']);
    exit;
}
于 2013-02-24T15:20:47.553 に答える
-1

2ページ目で次のコードを使用してみることができます

setcookie( "user_id"、 "");

私はあなたがあなたの問題を解決できることを願っています。

于 2013-02-24T15:22:04.043 に答える