为什么有时 cookie 既不会未设置也不会覆盖?

  • 本文关键字:设置 覆盖 cookie php cookies
  • 更新时间 :
  • 英文 :


今天我遇到了一个奇怪的问题。我有一个代码,有时会在cookie中写入一些东西,有时会覆盖它。

当该 cookie 不存在时,我的代码也可以工作。我的意思是,当我清除所有浏览器的cookie并执行我的代码时,一切都很好。但是在未知的一段时间之后,该饼干将是恒定的,固定的和牢固的。我的意思是它不会再被覆盖,它甚至不会被取消设置。

这是我的代码:(但是一开始它完全有效(

.
.
if( isset( $_GET['u'] ) && ( $_GET['u'] == 'true' || $_GET['u'] == 'false' ) ){
if( isset($_COOKIE['qanda_unanswered_status']) ) {
if ( $_COOKIE['qanda_unanswered_status'] != $_GET['u'] ){
setcookie("qanda_unanswered_status", $_GET['u'], 2147483647);   
}
} else {
setcookie("qanda_unanswered_status", $_GET['u'], 2147483647);   
}
}
.
.
if (isset($_GET['u']) && in_array($_GET['u'], ['true', 'false']) && (!isset($_COOKIE['qanda_unanswered_status']) || $_COOKIE['qanda_unanswered_status'] != $_GET['u']) ) {
setcookie("qanda_unanswered_status", $_GET['u'], 2147483647);
$_COOKIE['qanda_unanswered_status'] = $_GET['u'];
}
.
.

这一切都与饼干有关。无论如何,您有任何线索吗,我该如何调试此问题?什么时候饼干会永远不变?我的意思是,即使unset($_COOKIE['sth'])也无法摧毁它。

你对这样的问题有任何线索吗?

你不能用unset()来删除cookie,你需要设置过去的过期时间,例如:

setcookie("qanda_unanswered_status", "", time() - 3600); // one hour ago

然后,该 cookie 将在浏览器上被删除。

最新更新