2012-03-13 16 views
8

En una página que tiene algo como estosetcookie() de PHP no funciona

setcookie('user', 'value' ,6000, '/', 'mydomain.co.uk'); 

En la página siguiente tengo

var_dump($_COOKIE); 

puedo ver todas las automáticamente generadas, como PHPSESSID pero no puede ver user.

Si lo hago echo setcookie('user', 'value' ,6000, '/', 'mydomain.co.uk'); devuelve true. Así que no estoy seguro de por qué no puedo verlo.

He intentado muchas ideas diferentes, pero nada ha funcionado. Además, he usado .htaccess para redirigir todas las solicitudes a través de una página index.php no estoy seguro de si esto está haciendo algo.

+0

Puede encontrar ['nueva Cookie ($ nombre)'] (https://github.com/delight-im/PHP-Cookie/blob/004cde69ec840e65c15275e09b92ecb1da06f357/src/Cookie.php#L51) útil, como se encuentra en [esta biblioteca independiente] (https://github.com/delight-im/PHP-Cookie). – caw

Respuesta

17

Prueba esto:

setcookie('user', 'value' ,time() + 6000, '/', 'mydomain.co.uk'); 

El expira parámetro tiene que ser una marca de tiempo. 6000 como una marca de tiempo está en el pasado y, por lo tanto, elimina la cookie.

+0

¡Ah, sí! Excelente, ¡gracias! – Alex

+1

Nota añadida: el parámetro expira se puede establecer en 0, lo que básicamente hace que la cookie expire al final de la sesión. http://php.net/manual/en/function.setcookie.php – diggersworld

1

¿Qué tal:

setcookie('user', 'value' ,6000, '/', '.mydomain.co.uk'); 

Compruebe las cookies del Brower. Algunos navegadores (Firefox y Chrome) tienen complementos que te permiten ver las cookies a medida que ingresan para que puedas depurarlas.

EDITAR: El problema es 6000. Eso es incorrecto. uso esto: time() + 6000

+0

Sí, he estado usando un complemento de Chrome, pero recurrí a var_dumping $ _COOKIE cuando tampoco apareció allí. He intentado usar '.midominio.com' pero todavía no está funcionando :( – Alex

+0

¡Ah sí, gracias! – Alex