我正尝试从我的网站中删除今天之前创建的所有cookie ...,以便任何返回该站点的人都将丢失所有旧cookie,并获得一组新的cookie。
我无法使用,RequestHeader unset Cookie
因为它会一直删除饼干,直到我删除它为止,我想要它,因此它将删除所有在2015年7月1日之前制作的Cookie
我还试图“修复”我的网站,以便浏览器记住目录/ f1fol /,因为出于某种原因,没有浏览器会记住该页面(不确定导致问题的原因)
任何人都知道该怎么做/有什么问题?
事实是:浏览器从不报告Cookie的创建日期。创建cookie时,仅存储在其创建过程中指定的服务器的到期日期及其值,因此,只有在cookie崩溃/到期的那一天,它才会被报告回服务器。
但是,您想要的最终结果是,返回站点的任何人都应该丢失所有旧的Cookie,并获得新的新Cookie。将以下代码添加到名为purge_old_cookies.php的PHP包含文件中
<?
// Check if this script has run before
if (!isset($_COOKIE['purged_once'])) {
// Check for old cookies
if (isset($_SERVER['HTTP_COOKIE'])) {
$cookies = explode(";", $_SERVER['HTTP_COOKIE']);
// Iterate and unset all cookies
foreach ($cookies as $cookie) {
$fields = explode("=", $cookie);
$name = trim(fields[0]);
// unset any cookie for the current path
setcookie($name, "", time() - 3600);
// unset the cookie for the root path
setcookie($name, "", time() - 3600, "/");
}
}
// Set a purged marker for the current path
setcookie("purged_once", "1", strtotime("+6 months"));
}
?>
通过设置cookie的过期日期来强制cookie过期。上面的代码将其设置为昨天。
注意,该setcookie()
方法被触发两次,因为必须使用与设置它们相同的参数删除cookie。以上就足以在大多数情况下,但如果你的网站有不同的Cookie domain
,secure
或httponly
参数,你可能要通过他们。
上面的脚本准备好后,只需将其包括在所有必需页面的开头即可。
<?
include '/path/to/purge_old_cookies.php';
...
?>
如果您确定自己的网站从未为特定的cookie设置过,/dir/path
即始终传递的path
值为/
,则可以通过将此脚本添加到just来取消设置所有cookie /index.php
。然后,两个setcookie()
调用(带有和不带/
)实际上变得相同,您可以丢弃一个。该purged_once
饼干也将根设置为
setcookie("purged_once", "1", strtotime("+6 months"), "/");
这也将标记cookie限制为每个用户一个。
将标记purged_once cookie设置为在3到6个月的长时间后过期。如果您将其设置得太低而忘记删除脚本,则最终会从引入该脚本之时就清除网站设置的所有新cookie。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句