Diferencia entre revisiones de «Plantilla:PHP/Cookies»
(→Ciclo de vida de la cookie) |
|||
| (15 revisiones intermedias por el mismo usuario no mostrado) | |||
| Línea 1: | Línea 1: | ||
| − | === | + | <div id=parrafo> |
| − | *Una cookie es | + | ===¿Qué es una Cookie?=== |
| + | |||
| + | *Una cookie es un pequeño fragmento de datos que un servidor web envía al navegador del usuario para que éste lo almacene. | ||
| + | *Sirve para guardar información relacionada con el cliente o con sus preferencias en relación con un sitio web. | ||
| + | |||
{{MRM_Definicion|Title=Cookie| | {{MRM_Definicion|Title=Cookie| | ||
| − | Una ''''' | + | Una '''''cookie''''' es un pequeño fichero de datos que se '''''almacena en el cliente (navegador)''''' y que guarda información asociada a un determinado sitio web. |
}} | }} | ||
<br /> | <br /> | ||
| − | Una vez que el cliente almacena | + | |
| − | + | * Una vez que el cliente almacena una cookie, cada vez que realice una solicitud al mismo servidor enviará automáticamente las cookies asociadas a ese sitio. | |
| − | {{Tip|Como se | + | |
| + | {{Nota| | ||
| + | Un '''cliente''' es normalmente un navegador u otra aplicación capaz de realizar peticiones HTTP a un servidor. | ||
| + | }} | ||
| + | |||
| + | *Las cookies permiten mantener cierta información entre distintas visitas a un sitio web, ayudando a gestionar el estado en aplicaciones web. | ||
| + | |||
| + | {{Tip| | ||
| + | Como las cookies se almacenan en el cliente, la legislación obliga a informar al usuario y obtener su consentimiento antes de almacenarlas en muchos casos. | ||
| + | }} | ||
| + | |||
{{MRM_Recursos de la Web|Title=Legislación sobre las '''''cookies'''''| | {{MRM_Recursos de la Web|Title=Legislación sobre las '''''cookies'''''| | ||
| − | *Es | + | * Es fundamental cumplir con la legislación vigente sobre el uso de cookies. |
| − | * | + | * La legislación exige informar al usuario sobre su utilización y obtener su consentimiento explícito antes de almacenarlas (especialmente cookies no técnicas). |
| − | * | + | * Cuando escribimos cookies estamos utilizando recursos del cliente (su navegador y almacenamiento local). |
| + | * Conviene mantenerse actualizado sobre la normativa aplicable. | ||
| + | |||
http://www.agpd.es/portalwebAGPD/canaldocumentacion/publicaciones/common/Guias/Guia_Cookies.pdf | http://www.agpd.es/portalwebAGPD/canaldocumentacion/publicaciones/common/Guias/Guia_Cookies.pdf | ||
}} | }} | ||
| − | *En general no se debe | + | |
| + | *En general no se debe abusar del uso de cookies. | ||
| + | *Además, algunos usuarios pueden tenerlas deshabilitadas, lo que puede impedir que ciertas funcionalidades de la aplicación funcionen correctamente. | ||
| + | *Por ello conviene que una aplicación web no dependa exclusivamente de cookies para su funcionamiento esencial. | ||
===Ciclo de vida de la cookie=== | ===Ciclo de vida de la cookie=== | ||
| + | |||
;Veamos el proceso detallado | ;Veamos el proceso detallado | ||
| + | |||
{{MRM_Actividad|Title=Usuario solicita un recurso web| | {{MRM_Actividad|Title=Usuario solicita un recurso web| | ||
| − | ;El usuario solicita un recurso en la web a un servidor concreto | + | ;El usuario solicita un recurso en la web a un servidor concreto. |
[[Archivo:solicitud.png|500px]] | [[Archivo:solicitud.png|500px]] | ||
}} | }} | ||
| − | {{MRM_Actividad|Title=Servidor entrega recurso| | + | |
| − | ;El servidor | + | {{MRM_Actividad|Title=Servidor entrega el recurso| |
| − | ;Junto con | + | ;El servidor responde enviando el recurso solicitado. |
| − | ; | + | ;Junto con la respuesta puede incluir instrucciones para crear cookies mediante la cabecera HTTP '''Set-Cookie'''. |
| + | ;El navegador almacenará esas cookies localmente. | ||
[[Archivo:entrega_solicitud_1.png|700px]] | [[Archivo:entrega_solicitud_1.png|700px]] | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| + | ;Las cookies se pueden visualizar en el navegador. | ||
| + | {{MRM_Actividad|Title=Localiza tus cookies| | ||
| + | Busca las cookies en tu navegador y comprueba su nombre, valor y el dominio que las creó. | ||
| + | |||
| + | <br /> | ||
| + | [[Imagen:cookies1.png|400px]]<br /> | ||
| + | [[Imagen:cookies2.png|500px]]<br /> | ||
| + | [[Imagen:cookies3.png|400px]]<br /> | ||
}} | }} | ||
}} | }} | ||
| − | {{MRM_Actividad|Title= | + | |
| − | ; | + | {{MRM_Actividad|Title=La cookie queda almacenada en el cliente| |
| − | + | ;Si observamos las cookies del navegador veremos cómo el servidor ha escrito esa información. | |
| − | ; | + | ;Cada cookie queda asociada al dominio que la creó. |
| − | [[Archivo: | + | |
| + | [[Archivo:cookie_almacenada.png|600px]] | ||
}} | }} | ||
| − | {{MRM_Actividad|Title= | + | |
| − | ; | + | {{MRM_Actividad|Title=Usuario solicita otro recurso| |
| − | ;En | + | ;El usuario vuelve a solicitar un recurso al mismo servidor. |
| − | [[Archivo: | + | ;En este caso, junto con la solicitud HTTP se enviarán automáticamente las cookies asociadas a ese dominio. |
| + | ;El navegador solo enviará las cookies correspondientes al dominio que las creó. | ||
| + | |||
| + | [[Archivo:solicitud_cliente_2.png|800px]] | ||
}} | }} | ||
| + | {{MRM_Actividad|Title=Servidor procesa las cookies| | ||
| + | ;El servidor puede analizar los valores de las cookies enviadas por el cliente. | ||
| + | ;Con esta información puede personalizar el contenido enviado al usuario. | ||
| + | [[Archivo:servidor_entrega_con_cookie.png|800px]] | ||
| + | }} | ||
{{MRM_Puntos clave|Title=Puntos a tener claros| | {{MRM_Puntos clave|Title=Puntos a tener claros| | ||
| − | ;El servidor | + | ;Puntos clave sobre las cookies |
| − | + | ||
| − | + | * El servidor solicita al navegador la creación de una cookie. | |
| − | + | * El navegador guarda la cookie en su almacenamiento local. | |
| − | + | * En cada petición posterior al mismo dominio, el navegador enviará automáticamente esa cookie. | |
| − | + | * Solo el sitio web que creó la cookie puede leerla. | |
| − | *El tamaño máximo de | + | * Para trabajar con cookies desde el servidor debemos: |
| + | 1. Crear o enviar la cookie al cliente. | ||
| + | 2. Leer su contenido cuando el navegador la envíe en una petición. | ||
| + | *El tamaño máximo habitual de una cookie es de aproximadamente '''4 KB'''. | ||
}} | }} | ||
| − | ====Crear una | + | |
| − | *Para | + | {{MRM_Puntos clave|Title=Tamaño de las Cookies| |
| − | * | + | |
| − | + | * En la mayoría de los navegadores modernos, el tamaño máximo de una cookie individual está limitado a aproximadamente '''4096 bytes (4 KB)'''. | |
| − | + | * Este tamaño incluye el nombre, el valor y algunos metadatos asociados. | |
| + | |||
| + | * Los navegadores suelen permitir entre '''20 y 50 cookies por dominio'''. | ||
| + | |||
| + | * El tamaño total de todas las cookies combinadas para un mismo dominio suele estar limitado aproximadamente a '''50 KB'''. | ||
| + | |||
| + | * Aunque 4 KB es el límite más común, algunos navegadores pueden tener límites ligeramente diferentes. | ||
| + | }} | ||
| + | |||
| + | ====Crear una cookie==== | ||
| + | |||
| + | *Para crear una cookie en PHP utilizamos la función '''''setcookie()'''''. | ||
| + | |||
| + | <source lang=php> | ||
| + | setcookie(nombre_cookie, valor_cookie, tiempo_vida); | ||
| + | </source> | ||
| + | |||
| + | *Esta función puede recibir hasta '''7 parámetros''', aunque normalmente se utilizan los tres primeros. | ||
| + | |||
| + | http://es.php.net/manual/es/function.setcookie.php | ||
| + | |||
| + | Parámetros más habituales: | ||
| + | |||
#Nombre de la cookie | #Nombre de la cookie | ||
| − | #Valor que almacenamos | + | #Valor que almacenamos |
| − | #Tiempo de expiración | + | #Tiempo de expiración |
| − | + | ||
| + | *El tiempo de expiración se expresa como una marca temporal UNIX. | ||
| + | |||
| + | Por ejemplo, para almacenar el nombre de usuario durante una hora: | ||
| + | |||
<source lang=php> | <source lang=php> | ||
| − | + | setcookie("usuario", $_SERVER['PHP_AUTH_USER'], time()+3600); | |
</source> | </source> | ||
| − | * | + | |
| + | *Es importante recordar que las cookies deben enviarse '''antes de que se envíe cualquier contenido HTML''' al navegador, igual que ocurre con la función '''header()'''. | ||
====Recuperar la cookie==== | ====Recuperar la cookie==== | ||
| − | + | ||
| − | *Cuando | + | *Cuando el navegador accede a un sitio web, envía automáticamente todas las cookies asociadas a ese dominio. |
| − | *Desde PHP | + | *Desde PHP podemos acceder a ellas mediante el array '''$_COOKIE'''. |
| − | + | ||
<source lang=php> | <source lang=php> | ||
$usuario = $_COOKIE['usuario']; | $usuario = $_COOKIE['usuario']; | ||
</source> | </source> | ||
| + | |||
| + | También podemos comprobar si existe una cookie antes de utilizarla: | ||
| + | |||
| + | <source lang=php> | ||
| + | if(isset($_COOKIE['usuario'])){ | ||
| + | $usuario = $_COOKIE['usuario']; | ||
| + | } | ||
| + | </source> | ||
| + | |||
====Borrar una cookie==== | ====Borrar una cookie==== | ||
| − | *Para | + | |
| − | {{Tip| | + | *Para eliminar una cookie se envía nuevamente con una fecha de expiración pasada. |
| + | |||
| + | {{Tip|El tiempo utilizado es una marca temporal UNIX}} | ||
| + | |||
<source lang="php"> | <source lang="php"> | ||
<?php | <?php | ||
| − | + | ||
setcookie("user", "", time()-3600); | setcookie("user", "", time()-3600); | ||
| + | |||
?> | ?> | ||
</source> | </source> | ||
| + | |||
{{MRM_Actividad|Title= Información sobre visitas| | {{MRM_Actividad|Title= Información sobre visitas| | ||
[[Usuario:ManuelRomero/ProgramacionWeb/php/Aut_Ses_Coo/ejercicios#Almacenar el momento de las visitas a una página| Cookies con información de visitas]] | [[Usuario:ManuelRomero/ProgramacionWeb/php/Aut_Ses_Coo/ejercicios#Almacenar el momento de las visitas a una página| Cookies con información de visitas]] | ||
}} | }} | ||
| − | |||
{{MRM_Resumen| | {{MRM_Resumen| | ||
| − | + | ||
| + | ;Creación de cookies | ||
<source lang="php"> | <source lang="php"> | ||
<?php | <?php | ||
| − | $expire = time() | + | |
| + | $expire = time()+60*60*24*30; // cookie de 30 días | ||
setcookie("user", "Alex Porter", $expire); | setcookie("user", "Alex Porter", $expire); | ||
| + | |||
?> | ?> | ||
</source> | </source> | ||
| − | + | ||
| + | ;Cookie de sesión (se elimina al cerrar el navegador) | ||
| + | |||
<source lang="php"> | <source lang="php"> | ||
<?php | <?php | ||
| − | + | ||
| − | setcookie("user", "Alex Porter", | + | setcookie("user", "Alex Porter", 0); |
| + | |||
?> | ?> | ||
</source> | </source> | ||
| − | + | ||
| + | ;Leer cookies | ||
| + | |||
<source lang="php"> | <source lang="php"> | ||
<?php | <?php | ||
| + | |||
// Ver una cookie concreta | // Ver una cookie concreta | ||
echo $_COOKIE["user"]; | echo $_COOKIE["user"]; | ||
| − | // | + | // Ver todas las cookies |
print_r($_COOKIE); | print_r($_COOKIE); | ||
| + | |||
?> | ?> | ||
</source> | </source> | ||
| − | + | ;Borrar cookies | |
| + | |||
<source lang="php"> | <source lang="php"> | ||
<?php | <?php | ||
| − | + | ||
setcookie("user", "", time()-3600); | setcookie("user", "", time()-3600); | ||
| + | |||
?> | ?> | ||
</source> | </source> | ||
| + | |||
}} | }} | ||
| + | </div> | ||
Última revisión de 18:34 4 mar 2026
Contenido
¿Qué es una Cookie?
- Una cookie es un pequeño fragmento de datos que un servidor web envía al navegador del usuario para que éste lo almacene.
- Sirve para guardar información relacionada con el cliente o con sus preferencias en relación con un sitio web.
|
Una cookie es un pequeño fichero de datos que se almacena en el cliente (navegador) y que guarda información asociada a un determinado sitio web. |
- Una vez que el cliente almacena una cookie, cada vez que realice una solicitud al mismo servidor enviará automáticamente las cookies asociadas a ese sitio.
(
:
Un cliente es normalmente un navegador u otra aplicación capaz de realizar peticiones HTTP a un servidor.
)
- Las cookies permiten mantener cierta información entre distintas visitas a un sitio web, ayudando a gestionar el estado en aplicaciones web.
Como las cookies se almacenan en el cliente, la legislación obliga a informar al usuario y obtener su consentimiento antes de almacenarlas en muchos casos.
http://www.agpd.es/portalwebAGPD/canaldocumentacion/publicaciones/common/Guias/Guia_Cookies.pdf |
- En general no se debe abusar del uso de cookies.
- Además, algunos usuarios pueden tenerlas deshabilitadas, lo que puede impedir que ciertas funcionalidades de la aplicación funcionen correctamente.
- Por ello conviene que una aplicación web no dependa exclusivamente de cookies para su funcionamiento esencial.
Ciclo de vida de la cookie
- Veamos el proceso detallado
|
1. Crear o enviar la cookie al cliente. 2. Leer su contenido cuando el navegador la envíe en una petición.
|
|
|
Crear una cookie
- Para crear una cookie en PHP utilizamos la función setcookie().
setcookie(nombre_cookie, valor_cookie, tiempo_vida);
- Esta función puede recibir hasta 7 parámetros, aunque normalmente se utilizan los tres primeros.
http://es.php.net/manual/es/function.setcookie.php
Parámetros más habituales:
- Nombre de la cookie
- Valor que almacenamos
- Tiempo de expiración
- El tiempo de expiración se expresa como una marca temporal UNIX.
Por ejemplo, para almacenar el nombre de usuario durante una hora:
setcookie("usuario", $_SERVER['PHP_AUTH_USER'], time()+3600);
- Es importante recordar que las cookies deben enviarse antes de que se envíe cualquier contenido HTML al navegador, igual que ocurre con la función header().
Recuperar la cookie
- Cuando el navegador accede a un sitio web, envía automáticamente todas las cookies asociadas a ese dominio.
- Desde PHP podemos acceder a ellas mediante el array $_COOKIE.
$usuario = $_COOKIE['usuario'];
También podemos comprobar si existe una cookie antes de utilizarla:
if(isset($_COOKIE['usuario'])){ $usuario = $_COOKIE['usuario']; }
Borrar una cookie
- Para eliminar una cookie se envía nuevamente con una fecha de expiración pasada.
<?php setcookie("user", "", time()-3600); ?>
|
Cookies con información de visitas
|
<?php $expire = time()+60*60*24*30; // cookie de 30 días setcookie("user", "Alex Porter", $expire); ?>
<?php setcookie("user", "Alex Porter", 0); ?>
<?php // Ver una cookie concreta echo $_COOKIE["user"]; // Ver todas las cookies print_r($_COOKIE); ?>
<?php setcookie("user", "", time()-3600); ?>
|
