generate - Compruebe si existe una cookie PHP y si no establece su valor
save variable in cookie php (2)
Estoy trabajando en un sitio multilingüe, así que probé este enfoque:
echo $_COOKIE["lg"];
if (!isset($_COOKIE["lg"]))
setcookie("lg", "ro");
echo $_COOKIE["lg"];
La idea es que si el cliente no tiene una cookie lg
(es, por lo tanto, la primera vez que visita este sitio), configure una cookie lg = ro
para ese usuario.
Todo funciona bien, excepto que si entro en esta página por primera vez, el primer y segundo echo
no devuelven nada. Solo si actualizo la página está el conjunto de cookies y luego ambos echo
imprimo la cadena "ro" que estoy esperando.
¿Cómo puedo configurar esta cookie para ver su valor a partir del segundo echo
en la primera visita / carga de página del usuario? Debe ser sin necesidad de actualizar la página o crear una redirección.
Responder
No puede según el manual de PHP :
Una vez que las cookies se han establecido, se puede acceder a ellas en la siguiente página cargada con las matrices $ _COOKIE o $ HTTP_COOKIE_VARS.
Esto se debe a que las cookies se envían en encabezados de respuesta al navegador y el navegador debe enviarlas de vuelta con la siguiente solicitud. Es por eso que solo están disponibles en la carga de la segunda página.
Trabajar alrededor
Pero puede $_COOKIE
también configurando $_COOKIE
cuando llama a setcookie()
:
if(!isset($_COOKIE[''lg''])) {
setcookie(''lg'', ''ro'');
$_COOKIE[''lg''] = ''ro'';
}
echo $_COOKIE[''lg''];
Las cookies solo se envían en el momento de la solicitud y, por lo tanto, no se pueden recuperar tan pronto como se hayan asignado (solo están disponibles después de volver a cargarlas).
Una vez que las cookies se han establecido, se puede acceder a ellas en la siguiente página cargada con las matrices $ _COOKIE o $ HTTP_COOKIE_VARS.
Si la salida existe antes de llamar a esta función, setcookie () fallará y devolverá FALSE. Si setcookie () se ejecuta correctamente , devolverá TRUE. Esto no indica si el usuario aceptó la cookie .
Las cookies no serán visibles hasta la próxima carga de una página para la cual la cookie debería ser visible. Para comprobar si una cookie se configuró correctamente, compruebe la cookie en la página de carga siguiente antes de que caduque la cookie. El tiempo de caducidad se establece mediante el parámetro expirar. Una buena manera de solucionar la existencia de cookies es simplemente llamando a print_r ($ _ COOKIE) ;.