Diferencia entre revisiones de «Plantilla:PHP/Cookies»
De WikiEducator
(→Ciclo de vida de la cookie) |
|||
(13 revisiones intermedias por el mismo usuario no mostrado) | |||
Línea 1: | Línea 1: | ||
− | === | + | ===¿Qué es una Cookie?=== |
− | *Una cookie es | + | |
+ | *Una cookie es un pequeño fragmento de datos que el servidor almacena en el navegador del usuario. | ||
+ | *Sirve para guardar información específica sobre el cliente o sus preferencias relacionadas con un sitio web. | ||
+ | |||
{{MRM_Definicion|Title=Cookie| | {{MRM_Definicion|Title=Cookie| | ||
Una '''''Cookie'''' es un fichero que se '''''almacena en el cliente''''' y guarda información de ese cliente en referencia a una determinada sitio web. | Una '''''Cookie'''' es un fichero que se '''''almacena en el cliente''''' y guarda información de ese cliente en referencia a una determinada 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 servidor correspondiente, enviará automáticamente todas las cookies asociadas a ese servidor. |
− | En parte se podría pensar que con esta técnica podemos suplir la característica de que http es un protocolo sin estado (Insistir en que esto es una característica del protocolo, no una limitación), y mantener información después de la visita a un sitio web.<br /> | + | {{Nota| Enfatizamos la idea que un cliente es una aplicacion que realiza una solicitud en una ip o equipo concreto}} |
+ | |||
+ | * En parte se podría pensar que con esta técnica podemos suplir la característica de que http es un protocolo sin estado (Insistir en que esto es una característica del protocolo, no una limitación), y mantener información después de la visita a un sitio web.<br /> | ||
{{Tip|Como se guardan en el cliente, se necesita confirmación expresa del cliente para dejar que se almacenen cosas en su equipo}} | {{Tip|Como se guardan en el cliente, se necesita confirmación expresa del cliente para dejar que se almacenen cosas en su equipo}} | ||
{{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 misma '''exige informar al usuario sobre su utilización y obtener su consentimiento explícito antes de almacenarlas'''. |
+ | * Cuando escribimos cookies, estamos utilizando los recursos del cliente (su disco duro) | ||
*En cualquier caso conviene estar al día. | *En cualquier caso conviene estar al día. | ||
http://www.agpd.es/portalwebAGPD/canaldocumentacion/publicaciones/common/Guias/Guia_Cookies.pdf | http://www.agpd.es/portalwebAGPD/canaldocumentacion/publicaciones/common/Guias/Guia_Cookies.pdf | ||
Línea 29: | Línea 35: | ||
[[Archivo:entrega_solicitud_1.png|700px]] | [[Archivo:entrega_solicitud_1.png|700px]] | ||
;Las cookies se pueden ver | ;Las cookies se pueden ver | ||
− | {{MRM_Actividad|Title | + | {{MRM_Actividad|Title=Localiza tus cookies| |
Busca las cookies en tu servidor y comprueba nombres, valores y servidor que las escribió | Busca las cookies en tu servidor y comprueba nombres, valores y servidor que las escribió | ||
− | [[ | + | <br /> |
− | [[ | + | [[Imagen:cookies1.png|400px]]<br /> |
− | [[ | + | [[Imagen:cookies2.png|500px]]<br /> |
+ | [[Imagen:cookies3.png|400px]]<br /> | ||
}} | }} | ||
}} | }} | ||
+ | |||
+ | {{MRM_Actividad|Title=La cookie queda almacenada en el cliente| | ||
+ | ;Si vemos las cookies del cliente, observamos como el servidor la ha escrito | ||
+ | ;Accediendo como hemos visto en el punto anterior lo vemos con detalle | ||
+ | [[Archivo:cookie_almacenada.png|600px]] | ||
+ | }} | ||
+ | |||
+ | |||
+ | |||
{{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 | ||
;En este caso, junto con la solicitud se enviarán todas las cookies que ese servidor hubiera escrito en este cliente | ;En este caso, junto con la solicitud se enviarán todas las cookies que ese servidor hubiera escrito en este cliente | ||
;Solo las que ha escrito ese servidor | ;Solo las que ha escrito ese servidor | ||
− | [[Archivo: | + | [[Archivo:solicitud_cliente_2.png|800px]] |
}} | }} | ||
{{MRM_Actividad|Title=Servidor entrega recurso| | {{MRM_Actividad|Title=Servidor entrega recurso| | ||
;Ahora el servidor puede analizar los valores de las cookies | ;Ahora el servidor puede analizar los valores de las cookies | ||
;En función de esos valores podrá personalizar la página a ese cliente | ;En función de esos valores podrá personalizar la página a ese cliente | ||
− | [[Archivo: | + | [[Archivo:servidor_entrega_con_cookie.png|800px]] |
}} | }} | ||
Línea 52: | Línea 68: | ||
{{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 cliente la creación de la cookie. | |
− | + | * El cliente guarda la cookie en un archivo local, asociado al navegador. | |
− | + | * Solo el sitio web que creó la cookie puede acceder a ella. | |
− | + | * Para trabajar con cookies es necesario (ambas acciones las establecemos en el servidor): | |
− | + | 1. Crear o almacenar la cookie en el cliente. | |
+ | 2. Leer su contenido cuando sea necesario. | ||
*El tamaño máximo de un cookie está limitado a 4K. | *El tamaño máximo de un cookie está limitado a 4K. | ||
}} | }} | ||
− | ====Crear una | + | {{MRM_Puntos clave|Title=Tamaño de las Cookies| |
− | *Para ello usaremos la función ''''' | + | |
+ | * 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), incluyendo tanto el nombre como el valor de la cookie y los metadatos asociados (como el dominio, la ruta y las banderas secure y HttpOnly). | ||
+ | |||
+ | * Los navegadores suelen permitir entre 20 y 50 cookies por dominio. | ||
+ | |||
+ | * El tamaño total de todas las cookies combinadas para un único dominio suele estar limitado a unos 50 KB. | ||
+ | |||
+ | * Aunque los 4 KB son el estándar más común, algunos navegadores antiguos o configuraciones específicas podrían tener límites ligeramente diferentes. | ||
+ | |||
+ | |||
+ | |||
+ | }} | ||
+ | ====Crear una cookie==== | ||
+ | *Para ello usaremos la función '''''setcookie(...)''''' | ||
+ | <source lang=php> | ||
+ | setcookie(nombre_cookie, valor_cookie, tiempo_vida); | ||
+ | </source> | ||
+ | |||
*En esta función puede recibir hasta 7 parámetros, (sólo el primero es obligatorio). | *En esta función puede recibir hasta 7 parámetros, (sólo el primero es obligatorio). | ||
http://es.php.net/manual/es/function.setcookie.php | http://es.php.net/manual/es/function.setcookie.php | ||
Línea 78: | Línea 112: | ||
*Cuando accedes a un sitio web, el navegador (cliente), le envía de forma automática todo el contenido de las cookies que almacene relativas a ese sitio en concreto (servidor). | *Cuando accedes a un sitio web, el navegador (cliente), le envía de forma automática todo el contenido de las cookies que almacene relativas a ese sitio en concreto (servidor). | ||
*Desde PHP se puede acceder a esta información por medio del array $_COOKIE. | *Desde PHP se puede acceder a esta información por medio del array $_COOKIE. | ||
+ | <source lang=php> | ||
+ | $usuario = $_COOKIE[nombre_cookie]; | ||
+ | </source> | ||
+ | |||
*Para recuperar los datos anteriores | *Para recuperar los datos anteriores | ||
<source lang=php> | <source lang=php> | ||
$usuario = $_COOKIE['usuario']; | $usuario = $_COOKIE['usuario']; | ||
</source> | </source> | ||
+ | |||
====Borrar una cookie==== | ====Borrar una cookie==== | ||
*Para borrar la cookie usamos la función setcookie con un tiempo negativo | *Para borrar la cookie usamos la función setcookie con un tiempo negativo | ||
Línea 97: | Línea 136: | ||
{{MRM_Resumen| | {{MRM_Resumen| | ||
− | + | ;Creación de cookies | |
<source lang="php"> | <source lang="php"> | ||
<?php | <?php | ||
− | $expire = time() | + | $expire = time()+60*60*24*30 //La cookie durará un mes |
setcookie("user", "Alex Porter", $expire); | setcookie("user", "Alex Porter", $expire); | ||
?> | ?> | ||
</source> | </source> | ||
− | *Si tiempo de expiración es 0, la | + | *Si tiempo de expiración es 0, la cookie que solo dura la sesión. |
<source lang="php"> | <source lang="php"> | ||
<?php | <?php | ||
− | $expire = =; //La | + | $expire = =; //La cookie durará lo que dure la sesión |
setcookie("user", "Alex Porter", $expire); | setcookie("user", "Alex Porter", $expire); | ||
?> | ?> | ||
</source> | </source> | ||
− | + | ;Ver el valor de una cookie | |
<source lang="php"> | <source lang="php"> | ||
<?php | <?php | ||
Línea 122: | Línea 161: | ||
</source> | </source> | ||
− | + | ;Borrar cookies | |
<source lang="php"> | <source lang="php"> | ||
<?php | <?php |
Última revisión de 18:57 13 dic 2024
Contenido
¿Qué es una Cookie?
- Una cookie es un pequeño fragmento de datos que el servidor almacena en el navegador del usuario.
- Sirve para guardar información específica sobre el cliente o sus preferencias relacionadas con un sitio web.
Una Cookie' es un fichero que se almacena en el cliente y guarda información de ese cliente en referencia a una determinada sitio web. |
- Una vez que el cliente almacena una cookie, cada vez que realice una solicitud al servidor correspondiente, enviará automáticamente todas las cookies asociadas a ese servidor.
(: Enfatizamos la idea que un cliente es una aplicacion que realiza una solicitud en una ip o equipo concreto)
- En parte se podría pensar que con esta técnica podemos suplir la característica de que http es un protocolo sin estado (Insistir en que esto es una característica del protocolo, no una limitación), y mantener información después de la visita a un sitio web.
Tip: Como se guardan en el cliente, se necesita confirmación expresa del cliente para dejar que se almacenen cosas en su equipo
http://www.agpd.es/portalwebAGPD/canaldocumentacion/publicaciones/common/Guias/Guia_Cookies.pdf |
- En general no se debe de abusar de ellas; hay que tener en cuenta que en muchos las pueden tener deshabilitadas y esto puede impedir que nuestra aplicación web se ejecute de forma eficiente o incluso correcta. Por ello no debería de ocurrir que una aplicación web dependiera de los valores de cookies para funcionar de forma correcta.
Ciclo de vida de la cookie
- Veamos el proceso detallado
|
1. Crear o almacenar la cookie en el cliente. 2. Leer su contenido cuando sea necesario.
|
|
Crear una cookie
- Para ello usaremos la función setcookie(...)
setcookie(nombre_cookie, valor_cookie, tiempo_vida);
- En esta función puede recibir hasta 7 parámetros, (sólo el primero es obligatorio).
http://es.php.net/manual/es/function.setcookie.php
- Es habitual usar los tres primeros que serían
- Nombre de la cookie
- Valor que almacenamos en ella
- Tiempo de expiración: es un entero en segundos. Si no se especifica, la cookie termiará junto a esta sesión.
- Por ejemplo si quieremos almacenar el usuario y que tenga un tiempo de duración de 1 hora
setcookie("usuario", $_SERVER['PHP_AUTH_USER'], time()+3600);
- Importante el envío de cookies al cliente ha de hacerse antes de que se escriba nada en html, igual que las funciones header.
Recuperar la cookie
- El proceso de recuperación de la información que almacena una cookie es muy simple.
- Cuando accedes a un sitio web, el navegador (cliente), le envía de forma automática todo el contenido de las cookies que almacene relativas a ese sitio en concreto (servidor).
- Desde PHP se puede acceder a esta información por medio del array $_COOKIE.
$usuario = $_COOKIE[nombre_cookie];
- Para recuperar los datos anteriores
$usuario = $_COOKIE['usuario'];
Borrar una cookie
- Para borrar la cookie usamos la función setcookie con un tiempo negativo
Tip: Tener en cuenta que el tiempo es respecto al segundo o UNIX
<?php // Ponemos un tiempo de expiración negativo setcookie("user", "", time()-3600); ?>
Cookies con información de visitas
|
<?php $expire = time()+60*60*24*30 //La cookie durará un mes setcookie("user", "Alex Porter", $expire); ?>
<?php $expire = =; //La cookie durará lo que dure la sesión setcookie("user", "Alex Porter", $expire); ?>
<?php // Ver una cookie concreta echo $_COOKIE["user"]; // Para ver todas las cookies print_r($_COOKIE); ?>
<?php // Ponemos un tiempo negativo setcookie("user", "", time()-3600); ?> |