我不小心设置了一些我不应该拥有的饼干。例如,我的cookie被称为“lang”,我的错误是没有设置域,也没有设置cookie的路径。因此,浏览器使用默认值创建了cookie,这意味着访问我网站“产品”页面的用户最终得到了一个cookie:
Name Value Domain Path
lang en example.com /products/
实际上,cookie应该是:
Name Value Domain Path
lang en example.com /
糟糕的代码存在了一段时间,这意味着cookie的路径碰巧是用户访问的任何页面。
我的问题是,我是否可以在不知道路径的情况下删除example.com域下的所有Cookie?
我在JS和PHP中都尝试过,但没有传递cookie的路径,浏览器拒绝删除它。鉴于坏代码存在多长时间,可能有数千条路径。这么多路径的原因是因为大多数用户来自Google,因此他们直接登陆example.com/products/a-product
这样的网页,这意味着Cookie的路径将为/products/a-product
谢谢
答案 0 :(得分:0)
以下是PHP中可能的解决方案......我们只是通过更改到期时间来取消设置cookie。请报告documentation。
if (isset($_SERVER['HTTP_COOKIE'])) {
// We get the server cookies
$server_cookies = explode(';', $_SERVER['HTTP_COOKIE']);
// We set the expiration time
$expiration_time = time() - 3600;
// And the default _path
$default_path = '/';
foreach ($server_cookies as $cookie) {
// We explode given cookie in order to simply get the cookie name
$all_parts = explode('=', $cookie);
// We get the cookie name
$name = trim($all_parts[0]);
// We set the expiration time & empty the value
setcookie($name, '', $expiration_time);
// We set the path, empty the value and set the expiration time
setcookie($name, '', $expiration_time, $default_path);
}
}
// We set the cookie name we wand to delete
$name = 'lang'; // According to OP
// We set the path of the cookie
$path = '/products/';
// We set the domain of the cookie
$domain = 'exemple.com';
// We set the expiration time
$expiration_time = time() - 3600;
// We set the expiration time & empty the value
setcookie($name, '', $expiration_time);
// We set the path, empty the value and set the expiration time
setcookie($name, '', $expiration_time, $path, $domain);