¿Se puede agregar un parámetro de ruta a $ _COOKIE []? .¿Cómo acceder a los valores de las cookies en diferentes rutas del mismo dominio utilizando PHP?
Respuesta
En caso de que intente acceder a las cookies configuradas para una ruta diferente en el mismo dominio que la actual, eso no se puede hacer. El navegador en sí restringe esto, y solo envía las cookies apropiadas para la ruta actual.
¿qué pasa con facebook ?, Facebook escribe cookies para el dominio "facebook.com", pero usa estas cookies de "www.facebook.com" – user962284
@ user962284 ¿estás seguro? Estoy bastante seguro de que FB establece todas las cookies en www.facebook.com, ya que ni siquiera es posible acceder a facebook.com (lo redireccionan a www.) –
Esto es incorrecto. Un navegador que sigue las recomendaciones del RFC * does * envía ambos valores de vuelta en el caso de más de una cookie con el mismo nombre pero diferentes rutas. De hecho, es PHP lo que se interpone; por favor mira mi respuesta publicada. –
sí, es el cuarto argumento, pero sólo podrán acceder a la cookie si se ha establecido el uso de un camino que el directorio actual reside en
que es confuso ... aquí es a partir de PHP:
La ruta en el servidor en el que estará disponible la cookie . Si se establece en '/', la cookie estará disponible dentro de todo el dominio. Si se establece en '/ foo /', la cookie solo será disponible en el directorio/foo/ y en todos los subdirectorios, como /foo/bar/de dominio. El valor por defecto es el directorio actual que la cookie se establece en.
http://php.net/manual/en/function.setcookie.php
Se accede a ella como cualquier otra galleta. Estará disponible en $ _COOKIE si el script tiene acceso a él.
No, tales parámetros son imposibles porque el navegador no envía la ruta al servidor. Solo envía el nombre y el valor de cada cookie (para que no pueda ver la ruta, si es una cookie de sesión, cuándo caducará, etc.).
No creo que sea posible obtener la cookie de una ruta diferente, ya que podría causar un problema de seguridad.
Mientras que el cliente HTTP (es decir, el navegador) no devuelve la ruta en la que se estableció la cookie, PHP realmente hace suposiciones sobre las cookies con respecto a su matriz $ _COOKIE.
Si establece dos galletas con el mismo nombre, una con el valor de "primer valor" con la ruta / y el segundo con el valor de "segundo valor" con la ruta /prueba, un navegador después de la recomendado, pero no obligatorio, el comportamiento del RFC le enviará los dos valores. Al acceder a un URL en la ruta de /prueba, el navegador envía esto:
Cookie: name=second-value, name=first-value
El "problema" es que PHP sólo lee el primer valor - $ _COOKIE [ 'nombre'] sólo contendrá el valor "segundo valor" sin indicación de que existe el "primer valor". Si necesita acceder a ambos valores, necesita analizar el valor de $ _SERVER ['HTTP_COOKIE'] usted mismo - esto contendrá "nombre = segundo valor, nombre = primer valor" para el ejemplo anterior. Tenga en cuenta que "segundo valor" es el primero en la línea porque se estableció con una ruta más larga. Tenga en cuenta que el RFC no garantiza este comportamiento, solo dice que los clientes HTTP DEBERÍAN hacer.
Interesante, ¿esto es específico para los subdirectorios? Como en, una solicitud a un subdirectorio recibirá las cookies de la raíz, pero una solicitud a la raíz no recibirá cookies para los subdirectorios? También tengo curiosidad por saber si los navegadores realmente implementan esto o no :) –
Corregir, un subdirectorio o una ruta más larga siempre recibirá una cookie con una ruta más corta que coincida. Todos los navegadores se implementan de esta manera. Lo único que no garantiza el comportamiento es que si tiene varias cookies con el mismo nombre pero diferentes rutas, * debe * recibir ambas cookies en un orden fijo, pero el RFC no hace ninguna promesa. –
Esta es en realidad la respuesta correcta ya que brinda una explicación completa de por qué sucede esto. Debo señalar, y esto falta, aunque no puedes decirle '$ _COOKIE []' una ruta, puedes decirle a 'setcookie' una ruta. Estamos enfrentando esto con una API. Así que puedes decirle a 'setcookie' que establezca la ruta raíz y luego acceder a ella en cualquier lugar, así:' setcookie ('name', 'data', expire, '/') '. Ese último parámetro es la ruta y establecerlo en '/' hace que sea la ruta raíz. Esto resolvería el problema del OP. – jfreak53
- 1. Eliminar cookies con el mismo nombre pero diferentes rutas
- 2. Ingrese los valores de las cookies utilizando sencha extjs
- 3. Cómo configurar las cookies en PHP para el dominio
- 4. diferentes formas de acceder a los valores de atributo utilizando Javascript
- 5. Precedencia del dominio de cookies?
- 6. PHP: Control de dominio/subdominio de cookies
- 7. ¿Cómo puedo acceder a las rutas relativas en Python 2.7 cuando es importado por diferentes módulos?
- 8. Cómo acceder a las cookies establecidas con Passport.js
- 9. Cross site scripting en el mismo dominio, diferentes subdominios
- 10. ¿Cómo eliminar cookies de dominio principal del dominio Sub
- 11. Cookies de dominio cruzado
- 12. ¿Por qué las llamadas C# son diferentes para métodos sobrecargados para diferentes valores del mismo tipo?
- 13. ¿IE8 no guarda los valores de las cookies?
- 14. ¿Cómo accedo a las cookies dentro de Flash?
- 15. ¿Cómo eliminar cookies utilizando CookieManager para un dominio específico?
- 16. Cómo acceder a las variables de PHP en JavaScript o jQuery en lugar de <? Php echo $ variable?>
- 17. Cómo acceder a las cookies desde ApplicationController (Rails)
- 18. cómo desarmar las cookies en PHP?
- 19. ¿Cómo utilizo las cookies en dos dominios diferentes?
- 20. Groovy: Cómo acceder a los valores ya establecidos en DataSource
- 21. ¿Cómo guardo las cookies de una respuesta a una solicitud de cURL utilizando php?
- 22. acceder a las matrices asociativas en PHP
- 23. rutas relativas para acceder a los recursos de rieles
- 24. Obteniendo los parámetros de las cookies en PHP?
- 25. Acceso a las rutas de los raíles en javascript
- 26. Mismo campo, diferentes opciones en las subclases del modelo Django
- 27. PHP/JavaScript para cambiar dinámicamente las rutas de las imágenes
- 28. Tener dos sesiones diferentes en el mismo dominio
- 29. ¿Cómo acceder a las rutas de archivos en Powershell que contienen caracteres especiales?
- 30. ¿Pueden los trabajos cron de php acceder a variables de sesión/cookies?
Puede encontrar ['$ cookie-> setPath ($ path)'] (https://github.com/delight-im/PHP-Cookie/blob/004cde69ec840e65c15275e09b92ecb1da06f357/src/Cookie.php # L104) útil, como se encuentra en [esta biblioteca independiente] (https://github.com/delight-im/PHP-Cookie). – caw