Как обновить файл cookie в PHP?

Если я называю setcookie() два раза с тем же именем cookie, я получаю два созданных куки.

Как обновить существующий файл cookie?

4 ответов


вы не можете обновить файл cookie как таковой, но можете его перезаписать. В противном случае, это то, что вы ищете: http://php.net/manual/en/function.setcookie.php

это работает. Обязательно прочитайте "общие подводные камни" с этой страницы.

вы можете использовать super global $_COOKIE['cookie_name'] а также для чтения / записи cookies.


вы можете обновить значение cookie с помощью функции setcookie (), но вы должны добавить '/' в 4-й аргумент который является аргументом "path", чтобы предотвратить создание другого файла cookie с тем же именем.

то есть setcookie('cookie_name', 'cookie_value', $exp_date, '/');


таким образом, в то время как PHP отправит два Set-Cookie: заголовки, если это указано, только последний должен сохраняться в браузерах.
В Netscape cookie-файлов спецификаций http://curl.haxx.se/rfc/cookie_spec.html говорит:

экземпляры одного и того же пути и имени будут перезаписывать друг друга, причем последний экземпляр будет иметь приоритет. Экземпляры одного и того же пути, но с разными именами добавят дополнительные сопоставления.

однако, возможно, было бы целесообразно избегать такие крайние условия. Реструктурируйте приложение, чтобы оно не переопределяло уже отправленный файл cookie.


вызов COOKIE и удаление значения имени пользователя SETCOOKIE ("имя пользователя",",0,"/");