Diferencia entre revisiones de «Usuario:ManuelRomero/php/cookies/concepto»

De WikiEducator
Saltar a: navegación, buscar
m (Qué es una Cookie)
 
(No se muestran 3 ediciones intermedias de 2 usuarios)
Línea 16: Línea 16:
 
#Poder leerla en un momento determinado
 
#Poder leerla en un momento determinado
 
====Crear una coockie====
 
====Crear una coockie====
*Para ello usaremos la fucnión '''''setCookie(...)'''''
+
*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 el usuario y que tenga un tiempo de duración de 1 hora
+
*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 50: Línea 51:
 
* 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 solucion==
+
==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
  
Línea 72: Línea 73:
 
else
 
else
 
     echo "Bienvenido. Esta es su primera visita."
 
     echo "Bienvenido. Esta es su primera visita."
-->
 
  
  
  
  
</source>
 
  
 +
</source>
 +
-->
 
}}
 
}}
 
{{Resumen|
 
{{Resumen|
Línea 206: 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 322: Línea 322:
 
?>
 
?>
 
</source>
 
</source>
 
+
-->
 
}}
 
}}
  

Última revisión de 22: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.
  1. Almacenar o crear la cookie
  2. 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
  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.
  • 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);
?>


Icon activity.jpg

Actividad

  • 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.
  • 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.






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 sesion
<?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);
?>



Plantilla:Actividades


Icon activity.jpg

Actividad



}}




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
.....



Icon activity.jpg

Actividad

  • Añade en la base de datos usuarios varios usuarios diferentes
  • Crea un formulario para que el usuario sepuede registrar
 <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>
  • Visualiza los accesos del usuario acutual así como los accesos del resto de usuarios
  • Aquí podemos ver el ejemplo
http://www.manuel.infenlaces.com/cookies/
  • Para el formulario este sencillo css
#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;
}








Icon reading.jpg

Administrar cookies en diferentes navegadores