初始创建然后删除 cookie 有效,但之后无法重新创建它
Initial creating then deleting a cookie works, but can't recreate it afterwards
我需要创建和删除 cookie。
问题是我可以创建 cookie,然后删除 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");
?>
问题可能是浏览器独立于服务器告诉它做什么缓存页面请求。
有一个简单的技巧可以解决这个问题。向查询字符串添加一个变化的变量将使页面请求每次都是唯一的。这也将强制浏览器重新加载页面,即使已缓存。
例如在地址栏/页面请求中添加如下内容:
?abc=123
并且每次都改变数值。或者,您甚至可以像这样使用 timestamp
:
?<timestamp>
这将强制符合标准的浏览器每次都获取页面。
我需要创建和删除 cookie。
问题是我可以创建 cookie,然后删除 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");
?>
问题可能是浏览器独立于服务器告诉它做什么缓存页面请求。
有一个简单的技巧可以解决这个问题。向查询字符串添加一个变化的变量将使页面请求每次都是唯一的。这也将强制浏览器重新加载页面,即使已缓存。
例如在地址栏/页面请求中添加如下内容:
?abc=123
并且每次都改变数值。或者,您甚至可以像这样使用 timestamp
:
?<timestamp>
这将强制符合标准的浏览器每次都获取页面。