Удалить cookie не работает
Привет, я схожу с ума от проблемы, которую пытался найти.
я не могу удалить cookie, который будет установлен на index.php следующим образом:
$a = 'text';
setcookie('name_of_cookie', $a, time()+60*60*24*365);
на странице php я могу назвать этот cookie, и содержимое будет похоже на $ a. я попытался удалить это по-разному на page.php вот так:
setcookie('name_of_cookie', FALSE, time()-3600);
я также нашел версию, где я только установить его:
setcookie('name_of_cookie');
что просто установит еще один куки с таким же именем, как я видел в настройках браузера. у этого нового куки нет содержимого - конечно, контент не объявлен.
я также пытался установить более высокое время в прошлом из-за расположения сервера, но это также не работает. даже пытаясь установить время просто 1
не работает.
я проверил написание имени несколько раз, нет ошибок, которые происходят от разных имен.
Я был бы рад, если бы кто-то мог сказать, что я делаю не так?
Благодарю.
2 ответа
Когда вы устанавливаете куки, будьте очень конкретными, как вы их устанавливаете. Всегда устанавливайте доменное имя (которое может быть взято из $_SERVER['SERVER_NAME']) и путь (который я обычно устанавливаю в "/"). Если вы не последовательны, что-то может проявить "умную" инициативу и сломать вашу логику. Это часто случается, когда вы устанавливаете куки в JS и пытаетесь удалить их из PHP (или наоборот). У вас может быть несколько файлов cookie с одним и тем же именем, но с другим поддоменом или путем.
Например, вы установили файлы cookie следующим образом:
setcookie( 'Foo', 'Bar', time() + 3600, '/', $_SERVER['SERVER_NAME'] );
И вы их сбрасываете так:
setcookie( 'Foo', '', time() - 999999, '/', $_SERVER['SERVER_NAME'] );
Если пропустить 2 последних аргумента, вы окажетесь в ситуации, в которой вы находитесь на данный момент.
Удалите все куки, как показано ниже.
if (isset($_SERVER['HTTP_COOKIE']))
{
$cookies = explode(';', $_SERVER['HTTP_COOKIE']);
foreach($cookies as $cookie) {
$parts = explode('=', $cookie);
$name = trim($parts[0]);
setcookie($name, '', time()-1000);
setcookie($name, '', time()-1000, '/');
}
}
Всегда устанавливайте путь при установке cookie, иначе он не уничтожит