How do you update a cookie in PHP?

前端 未结 5 1904
清酒与你
清酒与你 2020-12-30 23:06

If I call setcookie() two times with the same cookie name, I get two cookies created.

How do you update an existing cookie?

相关标签:
5条回答
  • 2020-12-30 23:07

    So while PHP will send two Set-Cookie: headers if instructed so, only the last one should persist in browsers.
    The Netscape cookie spec http://curl.haxx.se/rfc/cookie_spec.html says:

    Instances of the same path and name will overwrite each other, with the latest instance taking precedence. Instances of the same path but different names will add additional mappings.

    However, it might be advisable to avoid such edge conditions. Restructure your application so it doesn't need to override the already sent cookie.

    0 讨论(0)
  • 2020-12-30 23:21

    You can't update a cookie per se, you can however overwrite it. Otherwise, this is what you are looking for: http://php.net/manual/en/function.setcookie.php

    It works. Be sure to read "Common Pitfalls" from that page.

    You can use the super global $_COOKIE['cookie_name'] as well to read/write cookies.

    0 讨论(0)
  • 2020-12-30 23:23

    Make sure there is no echo before setcookie call. setcookie communicates with browser through header, and if you called echo earlier, header+body is sent already and server cannot send setcookie to browser via header anymore. That is why you might see it is not working.

    There should be a line like below in php server log file reporting warning in this case:

    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 讨论(0)
  • 2020-12-30 23:27

    call COOKIE and delete username value SETCOOKIE("username",'',0,"/");

    0 讨论(0)
  • 2020-12-30 23:30

    You can update a cookie value using setcookie() function, but you should add '/' in the 4th argument which is the 'path' argument, to prevent creating another cookie with the same name.

    i.e. setcookie('cookie_name', 'cookie_value', $exp_date, '/');

    0 讨论(0)
提交回复
热议问题