2011-06-26 22 views
17

Si llamo al setcookie() dos veces con el mismo nombre de cookie, se crean dos cookies.¿Cómo se actualiza una cookie en PHP?

¿Cómo se actualiza una cookie existente?

+3

¿Cómo confirmaste que obtienes dos cookies? – deceze

+0

Hago clic derecho -> editar preferencias del sitio -> cookies (Opera), y veo muchas cookies con el mismo nombre – Cookie

Respuesta

16

No puede actualizar una cookie per se, pero puede sobrescribirla. De lo contrario, esto es lo que está buscando: http://php.net/manual/en/function.setcookie.php

Funciona. Asegúrese de leer "Errores comunes" de esa página.

Puede usar el super global $_COOKIE['cookie_name'] para leer/escribir cookies.

+5

pero no funciona: (('set_cookie ('fuuuuu', rand (0, 3434543) , $ exp_date); ', después de la actualización recibo otra cookie con el mismo nombre, diferente valor: | – Cookie

+1

¿Son del mismo dominio? www o no-www cuenta – Francisc

+0

hmm No configuré el argumento de dominio. Pero las cookies se configuran desde las páginas de un dominio – Cookie

4

Así, mientras que PHP enviará dos Set-Cookie: encabezados si así se indica, solo el último debería persistir en los navegadores.
El Netscape galletas especificación http://curl.haxx.se/rfc/cookie_spec.html dice:

instancias de la misma ruta y el nombre se sobreponen entre sí, con la última instancia que pueda prevalecer. Las instancias de la misma ruta pero diferentes nombres agregarán mapeos adicionales.

Sin embargo, podría ser aconsejable evitar tales condiciones de borde. Reestructura tu aplicación para que no tenga que anular la cookie ya enviada.

16

Puede actualizar el valor de cookie usando la función setcookie() pero debe agregar '/' en el 4to argumento que es el argumento 'ruta', para evitar crear otra cookie con el mismo nombre.

es decir setcookie('cookie_name', 'cookie_value', $exp_date, '/');

0

COOKIE llamada y borrar valor nombre de usuario SetCookie ("nombre de usuario", '', 0, "/");

Cuestiones relacionadas