Если я вызываю setcookie()
два раза с тем же именем cookie, я получаю два файла cookie.
Как вы обновляете существующий файл cookie?
Вы не можете обновить файл cookie как таковой, но можете его перезаписать. В противном случае это то, что вы ищете: http://php.net/manual/en/function.setcookie.php
Оно работает. Обязательно прочитайте «Общие ошибки» на этой странице.
Вы можете использовать супер глобальное $_COOKIE['cookie_name']
для чтения / записи файлов cookie.
Вы можете обновить значение cookie с помощью функции setcookie (), но вы должны добавить '/' в 4-й аргумент, который является аргументом 'path', чтобы предотвратить создание другого файла cookie с тем же именем.
т.е. setcookie('cookie_name', 'cookie_value', $exp_date, '/');
Поэтому, в то время как PHP отправит два заголовка Set-Cookie: если будет указано так, в браузерах останется только последний.
Спецификация cookie Netscape http://curl.haxx.se/rfc/cookie_spec.html гласит:
Экземпляры одного и того же пути и имени перезаписывают друг друга, причем последний экземпляр имеет приоритет. Экземпляры одного и того же пути, но разные имена, добавят дополнительные сопоставления.
Однако было бы целесообразно избегать таких краевых условий. Реструктурируйте приложение, чтобы не было необходимости переопределять уже отправленный файл cookie.
вызовите COOKIE и удалите значение имени пользователя SETCOOKIE («имя пользователя», «0», «/»);