Diferencia entre revisiones de «Plantilla:PHP/Cookies»

De WikiEducator
Saltar a: navegación, buscar
(Qué es una Cookie)
 
(19 revisiones intermedias por el mismo usuario no mostrado)
Línea 1: Línea 1:
<div class=parrafo>
 
 
===Qué es una Cookie===
 
===Qué es una Cookie===
Una cookie es una pequeña cantidad de datos almacenada por el navegador del usuario cuando solicita una página a un servidor. Básicamente consiste en una cantidad de información que almacena preferencias de un usuario.
+
*Una cookie es una pequeña cantidad de datos almacenada por el navegador del usuario cuando solicita una página a un servidor. *Básicamente consiste en una cantidad de información que almacena preferencias de un usuario.
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 />
+
{{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.<br />
+
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 />
 
Una vez que el cliente almacena ese valor, la próxima vez que ese cliente (una ip y un navegador), haga una solicitud a ese servidor, le enviará también todas las cookies que tenga de ese servidor.<br />
 
Una vez que el cliente almacena ese valor, la próxima vez que ese cliente (una ip y un navegador), haga una solicitud a ese servidor, le enviará también todas las cookies que tenga de ese servidor.<br />
 +
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'''''|
Línea 13: Línea 15:
 
}}
 
}}
 
*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.
 
*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
 +
{{MRM_Actividad|Title=Usuario solicita un recurso web|
 +
;El usuario solicita un recurso en la web a un servidor concreto
 +
[[Archivo:solicitud.png|500px]]
 +
}}
 +
{{MRM_Actividad|Title=Servidor entrega recurso|
 +
;El servidor entrega el recurso si todo va bien
 +
;Junto con el recuros pueden ir instrucciones para escribir cookies
 +
;Las cookies quedarán almacenadas en en disco duro del cliente
 +
 +
[[Archivo:entrega_solicitud_1.png|700px]]
 +
;Las cookies se pueden ver
 +
{{MRM_Actividad|Title=Localiza tus cookies|
 +
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|
 +
;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
 +
;Solo las que ha escrito ese servidor
 +
[[Archivo:solicitud_cliente_2.png|800px]]
 +
}}
 +
{{MRM_Actividad|Title=Servidor entrega recurso|
 +
;Ahora el servidor puede analizar los valores de las cookies
 +
;En función de esos valores podrá personalizar la página a ese cliente
 +
[[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 es quien solicita la creación del coockie en el cliente
 
;El servidor es quien solicita la creación del coockie en el cliente
Línea 23: Línea 71:
 
}}
 
}}
 
====Crear una coockie====
 
====Crear una coockie====
*Para ello usaremos la función '''''setCookie(...)'''''
+
*Para ello usaremos la función '''''setcookie(...)'''''
 +
<source lang=php>
 +
  setcookie(Nombre_cookie,Valor_Coookie, 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 40: Línea 92:
 
*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 59: Línea 116:
  
 
{{MRM_Resumen|
 
{{MRM_Resumen|
==Creación de coockies==
+
;Creación de coockies
 
<source lang="php">
 
<source lang="php">
 
<?php
 
<?php
$expire = time()*60*60*24*30 //La coockie durará un  mes
+
$expire = time()+60*60*24*30 //La coockie durará un  mes
 
setcookie("user", "Alex Porter", $expire);
 
setcookie("user", "Alex Porter", $expire);
 
?>
 
?>
Línea 73: Línea 130:
 
?>
 
?>
 
</source>
 
</source>
== Ver el valor de una cookie ==
+
;Ver el valor de una cookie  
 
<source lang="php">
 
<source lang="php">
 
<?php
 
<?php
Línea 84: Línea 141:
 
</source>
 
</source>
  
== Borrado ==
+
;Borrar cookies
 
<source lang="php">
 
<source lang="php">
 
<?php
 
<?php
Línea 92: Línea 149:
 
</source>
 
</source>
 
}}
 
}}
 
===Coockies con array===
 
*En este caso la cookie en lugar de contener un solo valor va a contener un array
 
*A la hora de leer la cookie se hace igual que hasta ahora
 
*Supongamos que tenemos varias cookies, dependiendo del usuario que se ha conectado
 
*De cada uno de esos usuarios tendríamos los accesos que ha realizado en un array indexado  indicando la hora
 
*Leemos la cookie
 
<source lang=php>
 
<?php
 
....
 
$usuario = $_POST['usuario']
 
......
 
//Leemos la cookie que es un array de accesos
 
$arrayAccesos = $_COOKIE[$usuario];
 
.....
 
</source>
 
*Guardar la cookie
 
*Esto crea el plateamiento de como guardar la cookie a la hora de qué nombre va a tener esta cookie
 
*Es como que en la misma cookie queremos guardar muchos valores, pero en realidad guardamos uno solo que es el array
 
*Una manera de hacerlo es incorporar a la cookie ya guardada el nuevo índice
 
*Para ello una manera de hacerlo es obtener el valor del indice del nuevo elemento obteniendo el tamaño del vector hasta ahora
 
*Incorporamos en la posición correspondiente el nuevo valor
 
<source lang=php>
 
....
 
$usuario = $_POST['usuario']
 
......
 
//Leemos la cookie que es un array de accesos
 
$arrayAccesos = $_COOKIE[$usuario];
 
.....
 
//Ahora ya puedo obtener el tamaño del vector
 
$indice = count($arrayAccesos);
 
//Con este valor añado la nueva entrada
 
setCookie($usuario.'['.$indice.']',time(),time()+3600
 
.....
 
</source>
 
 
 
{{Lectura|Title=Administrar cookies en diferentes navegadores|
 
*'''''Firefox''''': <nowiki>http://support.mozilla.org/es/kb/Borrar%20cookies?esab=a&s=cookies&r=2&as=s</nowiki>
 
*'''''Chrome/Chromium''''': <nowiki>http://support.google.com/chrome/bin/answer.py?hl=es&answer=95647</nowiki>
 
*'''''Internet Explorer''''': <nowiki>http://windows.microsoft.com/es-es/windows7/how-to-manage-cookies-in-internet-explorer-9</nowiki>
 
*'''''Opera''''': <nowiki>http://help.opera.com/Windows/11.50/es-ES/cookies.html</nowiki>
 
*'''''Safari''''': <nowiki>http://support.apple.com/kb/ph5042</nowiki>
 
 
}}
 
</div>
 
{{Lectura|Title=Referencias en la web|
 
*http://docs.php.net/manual/es/features.cookies.php
 
*http://docs.php.net/manual/es/function.setcookie.php
 
*http://www.w3schools.com/php/php_cookies.asp
 
*http://www.mclibre.org/consultar/php/lecciones/php_cookies.html
 
Normativa: Directiva 2009/136/CE}}
 

Última revisión de 04:31 24 may 2023

Qué es una Cookie

  • Una cookie es una pequeña cantidad de datos almacenada por el navegador del usuario cuando solicita una página a un servidor. *Básicamente consiste en una cantidad de información que almacena preferencias de un usuario.


Icon define.gif
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 vez que el cliente almacena ese valor, la próxima vez que ese cliente (una ip y un navegador), haga una solicitud a ese servidor, le enviará también todas las cookies que tenga de 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.

Icon present.gif
Tip: Como se guardan en el cliente, se necesita confirmación expresa del cliente para dejar que se almacenen cosas en su equipo



Icon inter.gif
Legislación sobre las cookies
  • Es muy importante respetar la legislación en el uso de cookies
  • Básicamente consiste en que hay que avisar al cliente de que se están utilizando
  • En cualquier caso conviene estar al día.

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


Icon activity.jpg
Usuario solicita un recurso web
El usuario solicita un recurso en la web a un servidor concreto

Solicitud.png





Icon activity.jpg
Servidor entrega recurso
El servidor entrega el recurso si todo va bien
Junto con el recuros pueden ir instrucciones para escribir cookies
Las cookies quedarán almacenadas en en disco duro del cliente

Entrega solicitud 1.png

Las cookies se pueden ver


Icon activity.jpg
Localiza tus cookies

Busca las cookies en tu servidor y comprueba nombres, valores y servidor que las escribió
Cookies1.png
Cookies2.png
Cookies3.png







Icon activity.jpg
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

Cookie almacenada.png






Icon activity.jpg
Usuario solicita un recurso web
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
Solo las que ha escrito ese servidor

Solicitud cliente 2.png





Icon activity.jpg
Servidor entrega recurso
Ahora el servidor puede analizar los valores de las cookies
En función de esos valores podrá personalizar la página a ese cliente

Servidor entrega con cookie.png






Icon key points.gif

Puntos a tener claros

El servidor es quien solicita la creación del coockie en el cliente
El cliente crea un fichero con dicha información
Una vez creada, solo puede ser leída por el sitio web que la creó.
Para trabajar con cookies tenemos que hacer dos cosas
  1. Almacenar o crear la cookie
  2. Poder leerla en un momento determinado
  • El tamaño máximo de un cookie está limitado a 4K.


Crear una coockie

  • Para ello usaremos la función setcookie(...)
   setcookie(Nombre_cookie,Valor_Coookie, 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
  1. Nombre de la cookie
  2. Valor que almacenamos en ella
  3. 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
Icon present.gif
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);
?>


Icon activity.jpg
Información sobre visitas

Cookies con información de visitas





Icon summary.gif
Resumen
Creación de coockies
<?php
$expire = time()+60*60*24*30 //La coockie durará un  mes
setcookie("user", "Alex Porter", $expire);
?>
  • Si tiempo de expiración es 0, la coockie que solo dura la sesión.
<?php
$expire = =; //La coockie durará lo que dure la sesión
setcookie("user", "Alex Porter", $expire);
?>
Ver el valor de una cookie
<?php
// Ver una cookie concreta
echo $_COOKIE["user"];
 
// Para ver todas las cookies
print_r($_COOKIE);
?>
Borrar cookies
<?php
// Ponemos un tiempo negativo
setcookie("user", "", time()-3600);
?>