PHP Cookie 在 Brave 中实际删除之前并不存在

问题描述 投票:0回答:1

首先我用 PHP 设置一个新的 cookie 并检查它是否存在。之后,我通过将到期日期设置为过去来删除它,并再次检查它是否成功。 奇怪的是,当第一次检查是否存在时,即使设置了过期日期之后,cookie 也已经被删除了。

<?php

setcookie("Test", "test", time() + 3600, "/", "", true, true);
if (isset($_COOKIE["Test"]))
{
  echo "<p>Cookie 'Test' exists.</p>";
} else {
  echo "<p>Cookie 'Test' doesn't exist.</p>";
}
setcookie("Test", "", time() - 3600);
if (isset($_COOKIE["Test"]))
{
  echo "<p>Cookie 'Test' exists.</p>";
} else {
  echo "<p>Cookie 'Test' doesn't exist.</p>";
}

?>

我期望浏览器中的输出是:

Cookie 'Test' exists.
Cookie 'Test' doesn't exist.

php setcookie isset brave
1个回答
0
投票

当您使用

setcookie
时,当用户收到页面时,cookie 将被设置在用户的浏览器上。所以你无法在同一页面获取cookies的值。

您可以发送cookie并刷新页面然后尝试获取cookie。 (因为写入输出后无法发送

header
setCookie

<?php

if (!isset($_COOKIE["Test"]))
{
  setcookie("Test", "test", time() + 3600, "/", "", true, true);
  header('location: /this_page.php');
  die;
} else {
  echo "<p>Cookie 'Test' exists.</p>";
}

?>

或者手动设置cookie,不推荐!

<?php

if(!isset($_COOKIE["Test"]))
{
  setcookie("Test", "test", time() + 3600, "/", "", true, true);
  $_COOKIE["Test"] = "test";
} else {
  echo "<p>Cookie 'Test' exists.</p>";
}

?>
© www.soinside.com 2019 - 2024. All rights reserved.