php - generate - setcookie() no configura cookie en Google Chrome
mostrar cookie php (6)
¿Revisaste la fecha de tu sistema? $ date Y si ya es viejo, debe cambiar su hora $ date -s 2007.04.08-22: 46 + 0000
Espero que esto ayude. Tuve el mismo problema y funcionó
Estoy repasando algunos tutoriales de PHP sobre cómo configurar cookies. Me he dado cuenta de que las cookies se configuran correctamente en FF4 e IE9, sin embargo, no se configuran en Chrome (11.0.696.60). El archivo PHP fue servido desde XAMPP (localhost).
Probé el ejemplo de w3schools:
<?php
setcookie("user", "Alex Porter", time()+3600);
?>
Y desde este sitio (para entornos de localhost):
<?php
setcookie("username", "George", false, "/", false);
?>
Gracias por adelantado.
El dominio debe ser igual a NULL.
& Debería tener una fecha de caducidad. es decir,
setcookie("username", "George", time() + (20 * 365 * 24 * 60 * 60), "/", NULL);
Enfrenté el mismo problema cuando traté de la siguiente manera
setcookie("gb_role",base64_encode($_SESSION["role"]),time()+60*60*24*30);
cuando lo cambié a debajo
setcookie("gb_role",base64_encode($_SESSION["role"]),time()+2592000);
Simplemente trabajé bien, la diferencia es en vez de time () + 60 * 60 * 24 * 30. Acabo de hacer time () + algún valor numérico. Sé que eso no tiene sentido, pero funcionó.
Este código me funciona en IE, Chrome y FF
if($_COOKIE[''language'']==NULL || empty($_COOKIE[''language'']))
{
$dirname = rtrim(dirname($_SERVER[''PHP_SELF'']), ''/'').''/'';
$expire=time()+31536000;
setcookie("language", "English",$expire,"$dirname","mydomain.com",false,false);
}
La desactivación de cookies para direcciones IP y localhost
fue una decisión de diseño. Ver también: https://code.google.com/p/chromium/issues/detail?id=56211
Las formas de solucionar el problema incluyen:
- Establezca un dominio local (por ejemplo, edite
/etc/hosts
para usar127.0.0.1 localhost.com
). - Use http://myproject.localhacks.com/ (que apunta a 127.0.0.1).
- Use un valor de dominio vacío al configurar la cookie.
Por ejemplo, en PHP :
setcookie(
$AUTH_COOKIE_NAME,
$cookie_value,
time() + cookie_expiration(),
$BASE_DIRECTORY,
null,
false,
true
);
Aquí el valor null
indica que el dominio no se debe establecer.
Nota: no establecer el dominio impide que la cookie sea visible para los subdominios.
Parece que esto podría ser un error con la función "Herramientas de desarrollo" de Chrome. Todo el tiempo que estaba intentando establecer una cookie (pero no recuperarla) y funcionó con el otro navegador. Funcionó, asumiendo que confías en la sección de visualización de cookies de FF o localizas el archivo de cookies para IE. En Chrome, confiaba en la sección "Cookies" de "Herramientas para desarrolladores" (Herramientas de desarrollo> Recursos> Cookies).
Decidí dar un paso más y realmente generar el valor de la cookie usando esta secuencia de comandos encontrada en WHT ( publicada por Natcoweb ):
<?php
setcookie(''test'', ''This is a test'', time() + 3600);
if(isset($_COOKIE[''test''])){
$cookieSet = ''The cookie is '' . $_COOKIE[''test''];
} else {
$cookieSet = ''No cookie has been set'';
}
?>
<html>
<head><title>cookie</title></head>
<body>
<?php
echo $cookieSet;
?>
</body>
</html>
Y funcionó en todos los navegadores, incluido Chrome (obtengo: "¡La cookie es Esto es una prueba")! Sin embargo, el inspector de cookies de Chrome continúa mostrando "Este sitio no tiene cookies". También logré encontrar la lista de cookies almacenadas en la configuración de Chrome (Opciones> Bajo el capó> Configuración de contenido> Todas las cookies y datos del sitio) y finalmente encontré la cookie (¡más pasos para verificar pero al menos más precisos que las herramientas de desarrollador)!
Conclusión: se estaban estableciendo cookies, pero las herramientas de desarrollo de Chrome no pueden verlo por alguna razón.