2011-10-27 25 views
6

Hay un sitio web www.example.com
Todas las cookies se configuran en el subdominio www.
Ahora hay un nuevo subdominio y quiero que se vean las cookies para todos los subdominios.¿Cómo obtener el dominio de una cookie específica?

El objetivo es volver a escribir las cookies de www.example.com para que todos los visitantes antiguos sean .example.com o para escribir nuevas para .example.com si se configuran para www.

Para esto quiero obtener el dominio de las cookies existentes.
¿Es posible? ¿Hay una función php para este propósito?

+0

Usted puede encontrar [ '$ Cookie-> setDomain ($ dominio)'] (https://github.com/delight-im/PHP-Cookie/blob/004cde69ec840e65c15275e09b92ecb1da06f357/src/Cookie.php#L117) útil, como se encuentra en [esta biblioteca independiente] (https://github.com/delight-im/PHP-Cookie). Si bien no puede acceder a la propiedad 'domain' de las cookies que ya se han enviado (y configurado en el cliente), simplemente puede establecer nuevas. Eso funcionará bien. – caw

Respuesta

3

No creo que el dominio esté disponible al leer las cookies, esto está limitado por el navegador. Una solución sería eliminar la cookie antigua y cambiarla al nuevo dominio.

E.g.

$value = $_COOKIE['TestCookie']; 
setcookie("TestCookie", "", time() - 3600, "www.example.com"); 
setcookie("TestCookie", $value, time + (60 * 60 * 24 * 30), ".example.com"); 
+0

Tuve esta idea, pero de esta forma, incluso después de que todas las cookies hayan cambiado, el proceso se repetirá para siempre. Lo estoy haciendo en el lado del servidor. Y otra cosa: Google Chrome sí conoce el dominio de las cookies (en el elemento Inspeccionar) – lvil

+1

. Puede agregar otra cookie para hacerle saber que ya ha realizado la conversión. – Noodles

1

Si le entiendo correctamente, ¿desea cambiar el dominio de las cookies que existen actualmente en los clientes?

Esto no es posible (*).

Al obtener un lado del servidor de cookies, ¿es posible que vea si se configuró para el dominio www, teniendo en cuenta que la cookie pasada del cliente no tiene información de dominio?

(*) Podría ser posible con JavaScript en el lado del cliente.

Cuestiones relacionadas