Как вы обновляете куки в PHP? - PullRequest
23 голосов
/ 27 июня 2011

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

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

Ответы [ 5 ]

25 голосов
/ 24 июня 2013

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

т.е. <strong>setcookie('cookie_name', 'cookie_value', $exp_date, '/');</strong>

18 голосов
/ 27 июня 2011

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

Это работает. Обязательно прочитайте «Общие ошибки» с этой страницы.

Вы также можете использовать суперглобальные $_COOKIE['cookie_name'] для чтения / записи файлов cookie.

4 голосов
/ 27 июня 2011

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

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

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

0 голосов
/ 30 марта 2019

Убедитесь, что нет echo до setcookie вызова.setcookie связывается с браузером через заголовок, и если вы звонили echo ранее, заголовок + тело уже отправлено, и сервер больше не может отправлять setcookie в браузер через заголовок.Вот почему вы можете увидеть, что он не работает.

В этом случае должна быть строка, подобная приведенной ниже, в предупреждении о выдаче файла журнала php-сервера:

DEFAULT: PHP Warning:  Cannot modify header information - headers already sent by (output started at /path/to/your/script.php:YY) in /path/to/your/script.php on line XX
0 голосов
/ 22 мая 2015

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

...