PHP
Galletas
Buscar..
Introducción
Una cookie HTTP es una pequeña porción de datos enviados desde un sitio web y almacenados en la computadora del usuario por el navegador web del usuario mientras el usuario está navegando.
Sintaxis
bool setcookie( string $name [, string $value = "" [, int $expire = 0 [, string $path = "" [, string $domain = "" [, bool $secure = false [, bool $httponly = false ]]]]]] )
Parámetros
parámetro | detalle |
---|---|
nombre | El nombre de la cookie. Esta es también la clave que puede utilizar para recuperar el valor de $_COOKIE super global. Este es el único parámetro requerido. |
valor | El valor para almacenar en la cookie. Esta información es accesible para el navegador, así que no almacene nada sensible aquí. |
expirar | Una marca de tiempo de Unix que representa cuándo debe expirar la cookie. Si se establece en cero, la cookie caducará al final de la sesión. Si se establece en un número menor que la marca de tiempo actual de Unix, la cookie caducará inmediatamente. |
camino | El alcance de la cookie. Si se establece en / la cookie estará disponible dentro de todo el dominio. Si se establece en /some-path/ , la cookie solo estará disponible en esa ruta y los descendientes de esa ruta. El valor predeterminado es la ruta actual del archivo en el que se establece la cookie. |
dominio | El dominio o subdominio en el que está disponible la cookie. Si se establece en el dominio pelado stackoverflow.com , la cookie estará disponible para ese dominio y todos los subdominios. Si se establece en un subdominio meta.stackoverflow.com , la cookie estará disponible solo en ese subdominio y en todos los subdominios. |
seguro | Cuando se establece en TRUE la cookie solo se establecerá si existe una conexión segura HTTPS entre el cliente y el servidor. |
httponly | Especifica que la cookie solo debe estar disponible a través del protocolo HTTP / S y no debe estar disponible para lenguajes de script del lado del cliente como JavaScript. Solo disponible en PHP 5.2 o posterior. |
Observaciones
Vale la pena señalar que la mera invocación de la función setcookie
no solo pone los datos dados en la matriz superglobal $_COOKIE
.
Por ejemplo, no tiene sentido hacer:
setcookie("user", "Tom", time() + 86400, "/");
var_dump(isset($_COOKIE['user'])); // yields false or the previously set value
El valor aún no está allí, no hasta la próxima página de carga. La función setcookie
simplemente dice " con la siguiente conexión http le dice al cliente (navegador) que configure esta cookie ". Luego, cuando los encabezados se envían al navegador, contienen este encabezado de cookie. Luego, el navegador comprueba si la cookie no ha caducado, y si no, entonces, en la solicitud http, envía la cookie al servidor y ahí es cuando PHP la recibe y coloca el contenido en la matriz $_COOKIE
.
Configuración de una cookie
Se establece una cookie utilizando la función setcookie()
. Dado que las cookies son parte del encabezado HTTP, debe configurar las cookies antes de enviar cualquier salida al navegador.
Ejemplo:
setcookie("user", "Tom", time() + 86400, "/"); // check syntax for function params
Descripción:
- Crea una cookie con nombre de
user
- (Opcional) El valor de la cookie es
Tom
- (Opcional) La cookie caducará en 1 día (86400 segundos)
- (Opcional) La cookie está disponible en todo el sitio web
/
- (Opcional) La cookie solo se envía a través de HTTPS
- (Opcional) La cookie no es accesible para lenguajes de script como JavaScript
Solo se puede acceder a una cookie creada o modificada en solicitudes posteriores (donde coincida la
path
y eldomain
) ya que el superglobal$_COOKIE
no se rellena con los nuevos datos inmediatamente.
Recuperar una cookie
Recuperar y dar salida a una cookie con nombre de user
El valor de una cookie se puede recuperar utilizando la variable global $_COOKIE
. ejemplo, si tenemos una cookie llamada user
, podemos recuperarla de esta manera
echo $_COOKIE['user'];
Modificar una cookie
El valor de una cookie se puede modificar restableciendo la cookie
setcookie("user", "John", time() + 86400, "/"); // assuming there is a "user" cookie already
Las cookies son parte del encabezado HTTP, por
setcookie()
que se debe llamar asetcookie()
antes de enviar cualquier salida al navegador.
Al modificar una cookie, asegúrese de que la
path
ydomain
parámetros dedomain
desetcookie()
coincidan con la cookie existente o se creará una nueva cookie en su lugar.
La parte del valor de la cookie se codificará automáticamente cuando envíe la cookie, y cuando se reciba, se descodificará automáticamente y se asignará a una variable con el mismo nombre que el nombre de la cookie.
Comprobando si una cookie está configurada
Use la función isset()
sobre la variable superglobal $_COOKIE
para verificar si una cookie está configurada.
Ejemplo:
// PHP <7.0
if (isset($_COOKIE['user'])) {
// true, cookie is set
echo 'User is ' . $_COOKIE['user'];
else {
// false, cookie is not set
echo 'User is not logged in';
}
// PHP 7.0+
echo 'User is ' . $_COOKIE['user'] ?? 'User is not logged in';
Eliminar una cookie
Para eliminar una cookie, establezca la fecha y hora de caducidad en un tiempo en el pasado. Esto activa el mecanismo de eliminación del navegador:
setcookie('user', '', time() - 3600, '/');
Al eliminar una cookie, asegúrese de que la
path
ydomain
parámetros dedomain
desetcookie()
coincidan con la cookie que está intentando eliminar o se creará una nueva cookie que caduca de inmediato.
También es una buena idea desactivar el valor $_COOKIE
en caso de que la página actual lo use:
unset($_COOKIE['user']);