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 .

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 el domain ) ya que el superglobal $_COOKIE no se rellena con los nuevos datos inmediatamente.

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'];

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 a setcookie() antes de enviar cualquier salida al navegador.

Al modificar una cookie, asegúrese de que la path y domain parámetros de domain de setcookie() 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.

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'; 

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 y domain parámetros de domain de setcookie() 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']);


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow