Diferencia entre revisiones de «Usuario:ManuelRomero/php/cookies/concepto»
De WikiEducator
< Usuario:ManuelRomero | php | cookies
(No se muestran 6 ediciones intermedias de 2 usuarios) | |||
Línea 13: | Línea 13: | ||
*Para trabajar con cookies tenemos que hacer dos cosas | *Para trabajar con cookies tenemos que hacer dos cosas | ||
*El tamaño máximo de un cookie está limitado a 4K. | *El tamaño máximo de un cookie está limitado a 4K. | ||
− | # | + | #Almacenar o crear la cookie |
#Poder leerla en un momento determinado | #Poder leerla en un momento determinado | ||
====Crear una coockie==== | ====Crear una coockie==== | ||
− | *Para ello usaremos la | + | *Para ello usaremos la función '''''setCookie(...)''''' |
*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 23: | Línea 23: | ||
#Valor que almacenamos en ella | #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. | #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 | + | *Por ejemplo si quieremos almacenar el usuario y que tenga un tiempo de duración de 1 hora |
<source lang=php> | <source lang=php> | ||
setcookie("usuario", $_SERVER['PHP_AUTH_USER'], time()+3600); | setcookie("usuario", $_SERVER['PHP_AUTH_USER'], time()+3600); | ||
</source> | </source> | ||
*Importante el envío de cookies al cliente ha de hacerse antes de que se escriba nada en html, igual que las funciones header. | *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==== | ====Recuperar la cookie==== | ||
*El proceso de recuperación de la información que almacena una cookie es muy simple. | *El proceso de recuperación de la información que almacena una cookie es muy simple. | ||
Línea 45: | Línea 46: | ||
</source> | </source> | ||
{{Actividad| | {{Actividad| | ||
− | *En | + | *En una página llamada registro.php , almacena en una cookie el último instante en la que se visitó la página. |
*Si es su primera visita, muestra un mensaje de bienvenida. | *Si es su primera visita, muestra un mensaje de bienvenida. | ||
* En caso contrario, muestra la fecha y hora de su anterior visita. | * En caso contrario, muestra la fecha y hora de su anterior visita. | ||
* Deberás utilizar la función setcookie para guardar el instante de su anterior visita y mostrar su contenido utilizando el array $_COOKIE. | * Deberás utilizar la función setcookie para guardar el instante de su anterior visita y mostrar su contenido utilizando el array $_COOKIE. | ||
− | + | <!-- | |
− | ==Posible | + | ==Posible solución== |
*Tomado el ejemplo anterior (de autentificación), habría que añadir el siguiente código | *Tomado el ejemplo anterior (de autentificación), habría que añadir el siguiente código | ||
+ | |||
<source lang=php> | <source lang=php> | ||
Línea 75: | Línea 77: | ||
− | |||
+ | </source> | ||
+ | --> | ||
}} | }} | ||
{{Resumen| | {{Resumen| | ||
Línea 132: | Línea 135: | ||
*http://www.mclibre.org/consultar/php/lecciones/php_cookies.html | *http://www.mclibre.org/consultar/php/lecciones/php_cookies.html | ||
Normativa: Directiva 2009/136/CE}} | Normativa: Directiva 2009/136/CE}} | ||
+ | |||
===Coockies con array=== | ===Coockies con array=== | ||
*En este caso la cookie en lugar de contener un solo valor va a contener un array | *En este caso la cookie en lugar de contener un solo valor va a contener un array | ||
Línea 203: | Línea 207: | ||
} | } | ||
</source> | </source> | ||
− | + | <!-- | |
===Posible solución del ejercicio=== | ===Posible solución del ejercicio=== | ||
<source lang=php> | <source lang=php> | ||
− | |||
<?php | <?php | ||
// Si el usuario aún no se ha autentificado, pedimos las credenciales | // Si el usuario aún no se ha autentificado, pedimos las credenciales | ||
Línea 319: | Línea 322: | ||
?> | ?> | ||
</source> | </source> | ||
− | + | --> | |
}} | }} | ||
Última revisión de 23:24 17 nov 2016
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.
- Con esto 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.
- Una Cookie es un fichero que se almacene en el cliente y guarda información de ese cliente en referencia a una determinada sitio web.
- Como se guardan en el cliente, se necesita confirmación expresa del cliente para dejar que se almacenen cosas en su equipo
- En general no se debe de abusar de ellas, máxime cuando muchos las pueden tener deshabilitadas y esto puede impedir que nuestra aplicación web se ejecute de forma eficiente o incluso correcta.
- 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
- El tamaño máximo de un cookie está limitado a 4K.
- Almacenar o crear la cookie
- Poder leerla en un momento determinado
Crear una coockie
- Para ello usaremos la función setCookie(...)
- 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.
- Para recuperar los datos anteriores
$usuario = $_COOKIE['usuario'];
Borrar una cookie
- Para borrar la cookie usamos la función setcookie con un tiempo negativo
<?php // Ponemos un tiempo de expiración negativo setcookie("user", "", time()-3600); ?>
|
Creación de coockies<?php $expire = time()*60*60*24*30 //La coockie durará un mes setcookie("user", "Alex Porter", $expire); ?>
<?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); ?> Borrado<?php // Ponemos un tiempo negativo setcookie("user", "", time()-3600); ?> |
|
}}
Normativa: Directiva 2009/136/CE |
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
<?php .... $usuario = $_POST['usuario'] ...... //Leemos la cookie que es un array de accesos $arrayAccesos = $_COOKIE[$usuario]; .....
- 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
.... $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 .....
<div id="login"> <fieldset > <legend>Login</legend> <form action="." method="POST"> <label for='nombre' >Nombre:</label> <input type="text" name ="nombre"> <label for='pass'>Password: </label> <input type="text" name ="pass"> <input type="submit" value="Cambiar Usuario" name="registrar"/> </form> </fieldset> </div>
http://www.manuel.infenlaces.com/cookies/
#login fieldset { width: 230px; padding:10px; border:1px solid #ccc; background-color: #eee; } #login legend { font-family : Arial, sans-serif; font-size: 1.3em; font-weight:bold; color:#333; }
|
- Firefox http://support.mozilla.org/es/kb/Borrar%20cookies?esab=a&s=cookies&r=2&as=s
- Chrome/Chromium: http://support.google.com/chrome/bin/answer.py?hl=es&answer=95647
- Internet Explorer: http://windows.microsoft.com/es-es/windows7/how-to-manage-cookies-in-internet-explorer-9
- Opera: http://help.opera.com/Windows/11.50/es-ES/cookies.html
- Safari: http://support.apple.com/kb/ph5042