Используя ваш пример, я создал этот тест:
<?php
ob_start();
echo '<pre>';
setcookie("id","0001", time()+3600*24*30);
setcookie("alias","name", time()+3600*24*30);
print_r($_COOKIE);
if ($_COOKIE['id'] || $_COOKIE['alias']) {
setcookie("id","-1",time()-315360000);
setcookie("alias","",time()-315360000);
}
print_r($_COOKIE);
ob_end_flush();
?>
При первой загрузке выдает:
Array
(
)
Array
(
)
При перезагрузке:
Array
(
[id] => 0001
[alias] => name
)
Array
(
[id] => 0001
[alias] => name
)
При второй перезагрузке:
Array
(
)
Array
(
)
Похоже, ваш код сбрасывает cookie-файл в обе стороны.
РЕДАКТИРОВАТЬ
Следующее:
<?php
ob_start();
echo '<pre>';
setcookie("id","0001", time()+3600*24*30);
setcookie("alias","name", time()+3600*24*30);
print_r($_COOKIE);
if ($_COOKIE['id'] || $_COOKIE['alias']) {
setcookie("id","-1",time()-315360000);
setcookie("alias","",time()-315360000);
unset($_COOKIE['id']);
unset($_COOKIE['alias']);
}
print_r($_COOKIE);
ob_end_flush();
?>
Будет либо напечатано:
Array
(
)
Array
(
)
, либо будет напечатано:
Array
(
[id] => 0001
[alias] => name
)
Array
(
)
http://jfcoder.com/test/cookies.php (нажмите перезагрузить несколько раз)
Если вам нужно сказать браузеру забыть куки, используйте setcookie()
с временем, установленным во времени (я использую не менее 24 часов).Если вам нужен массив $_COOKIES
, чтобы забыть значение, используйте unset()
.
РЕДАКТИРОВАТЬ
Здесь есть две возможные проблемы, одна из которых связана с несовпадением субдомена.файл cookie и проблема доступности пути.
Например ...
Если URL-адрес, к которому обращался посетитель, находился в каталоге, отличном от того, где URL-адрес, который пытается сбросить файл cookie, необходимустановить cookie с путем, который позволит доступ к этому cookie (и сбросить) по другим путям.
setcookie('my', 'cookie', time()+3600, '/');
Или чтобы разрешить пути, содержащиеся в подкаталоге ...
setcookie('my', 'cookie', time()+3600, '/my/path/');
Если URL-адрес, к которому обратился посетитель, был субдоменом (включая www), но вы хотите, чтобы файл cookie был доступен для всех субдоменов, вам нужно указать шаблон для setcookie.
setcookie('my', 'cookie', time()+3600, '/', '.example.com');
Разрешит URLс www.example.com, my.example.com и sub.example.com для доступа и сброса cookie.Очевидно, что и в этот момент необходимо учитывать ваши пути к путям, поскольку для аргумента субдомена вам нужно будет включить путь./
выбирает все подкаталоги в URL и .
до того, как домен выбирает субдомены (хотя sub.sub.domains, я не уверен).
http://php.net/manual/en/function.setcookie.php