【发布时间】:2015-06-06 14:18:23
【问题描述】:
我需要创建和删除 cookie。
问题是我可以创建,然后删除 cookie,但是在之前删除的 cookie 之后,我无法创建一个新的。为什么?
清除浏览器缓存后再次生效。
创建cookie并重定向到测试页面:
<?php
$cookie_name = 'name';
$cookie_time = 2000000000;
$cookie_path = '/';
$cookie_value = uniqid();
setcookie($cookie_name, $cookie_value, $cookie_time, $cookie_path);
echo '<script> window.location.assign("test.php"); </script>';
?>
删除 cookie 并重定向到测试页面:
<?php
$cookie_name = 'name';
$cookie_path = '/';
setcookie($cookie_name, '', time() - 3600, $cookie_path);
echo '<script> window.location.assign("test.php"); </script>';
?>
测试页面中只有print_r($_COOKIE);。
我在这里做错了什么? cookie 的名称有问题吗?是浏览器限制吗?
我需要能够在需要时创建和删除 cookie。
我试图通过使用以下代码来避免缓存:
<?php
header("Expires: Tue, 01 Jan 2000 00:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
?>
【问题讨论】:
-
cookie 创建页面是否可能被缓存?尝试每次添加一个唯一的查询字符串。
-
我不确定,但我尝试使用 PHP 标头清除缓存,但失败了。我编辑了我的 OP 以尽量避免缓存具有相同的结果。
-
只需在地址栏文件名后添加
?abc=123即可。那应该更可靠。只需继续向123添加一个值或使用时间戳。即使?<timestamp>也可以。 -
它修复了我的简单示例。非常好。
-
酷。很高兴有帮助。我会把它写下来作为一个正确的答案。它也可能对其他人有所帮助。