Post on 14-Nov-2014
description
PHP y las cookies
• ¿QUÉ SON LAS COOKIES?• Las cookies son información que el servidor web envía
al navegador web y que el cliente almacena en su sistema local como ficheros de texto
• La información almacenada en ese fichero puede ser recuperada por el servidor web cuando el usuario visita cualquier página del servidor.
• Su principal objetivo es identificar al usuario para poder preparar páginas personalizadas
• Son muy prácticas para almacenar cosas como el número de visitas, preferencias, estado de conexión, y en general información que sirva para realzar la navegación del cliente
PHP y las cookies
• Las cookies pueden ser usadas para simular una conexión continua – Gracias a ellas el usuario puede continuar la navegación por un
sitio web en el último punto en que lo dejó su última conexión– No fueron creadas para “espiar” o invadir la privacidad de los
usuarios de Internet– No tienen posibilidades de realizar acciones sobre el equipo del
cliente– El usuario tiene la posibilidad de configurar su navegador para:
• No aceptar cookies• Aceptar únicamente las cookies de determinados servidores• Pregunta al usuario antes de generar el fichero local con la cookie
PHP y las cookies
• La cookie es enviada al navegador desde el servidor y si éste la acepta, se almacena en un fichero de texto local
• Cada vez que el usuario visita una página del sitio web, el servidor solicita la cookie al navegador
• El servidor recibe la cookie con información del usuario y puede preparar una página personalizada
PHP y las cookies
• Importante: Las cookies deben ser enviadas desde el servidor al cliente antes que ninguna otra información
• Para crear una cookie se utiliza la función de PHP setcookie cuya sintaxis mínima es – Setcookie(nombre, valor)La función anterior devuelve un valor booleano indicando si se
produjo algún fallo en el proceso. Si devuelve un valor true no significa que el usuario aceptó la cookie
Si en la llamada a la función no se especifica ningún valor, lo que realmente se realiza es borrar la cookie indicada
setcookie (nombre)
PHP y las cookies
• Los protocolos web establecen un número máximo de cookies que pueden ser enviadas de un mismo servidor a un mismo usuario (20 como máximo)
• Para recuperar el valor de una cookie basta con utilizar una variable PHP con el nombre de la cookie
$nombre
PHP y las cookies• Ejemplo: Fecha y hora del último acceso• <?• setcookie("visita",date("d/m/Y \a \l\a\s H:i"),time()+30*24*3600);• ?>• <HTML>• <HEAD>• <TITLE>• PÁGINA DE INCIIO• </TITLE>• </HEAD>• <BODY>• <H1>• Bienvenido a nuestra página• </H1>• <?php• if (isset($visita))• echo "La última vez que nos visitaste fue $visita";• ?>• </BODY>
PHP y las cookies• <html> <head><title>Registro</title></head>• <body>• <h1>Registro como usuario</h1>• Introduzca su nombre:• <FORM ACTION ="COOKIE.PHP" METHOD ="GET">• <INPUT TYPE="TEXT" NAME="nombre"><BR>• <INPUT TYPE ="SUBMIT" VALUE="ENVIAR">• </FORM>• </BODY>• </HTML>• <?• if (isset($nombre))• setcookie("nomusuario",$nombre);• ?>• <?• if (isset($nomusuario))• echo "$nomusuario, gracias por su visita";• else• echo "Por favor, regístrese";• ?>
Cookie 1• <!doctype html public "-//W3C//DTD HTML 4.0 //EN">• <?php• if (isset($nvis)){• $nvis++;• setcookie("nvis",$nvis,time()+3600);}• else{• setcookie("nvis",1,time()+3600);• $nvis=1;• }
• ?>• <html>• <head>• <title>Ya, ya</title>• </head>• <body>• <?php• if ($nvis>5){• echo "Acceso no permitido";}• else{• echo "Número de visita ",$nvis;• }• ?>• </body>• </html>
Cookie 2• <!doctype html public "-//W3C//DTD HTML 4.0 //EN">• <?php• $ahora=time();• setcookie("ultima",$ahora);• if (isset($ultima) and ($ahora-$ultima>5))• echo "Hace más de cinco segundos que no nos visitabas, mardito roedor";
• ?>• <html>• <head>• <title>Fantabulosa segunda cookie</title>• </head>• <body>
• <H1> Bienvenido a nuestra página</H1>• </body>• </html>
PHP y las cookies
• Cuando se crean las cookies con la sintaxis anterior, éstas estarán definidas únicamente durante la sesión (cuando el usuario cierra su navegador desaparecen)
• Si queremos que la cookie permanezca en el equipo del usuario cuando éste cierre la sesión, deberá indicarse en su costrucción un parámetro adicional con un período de expiraciónsetcookie (nombre, valor, expiración)
El parámetro de expiración se indica sumando a la función time() el número de segundos que se desea que permanezca la cookie en el equipo del usuario
PHP y las cookies
• Cookie con un período de expiración de 60 segundos
• Setcookie(“cookie1”,”valor1”,time()+60
• Una hora:
• Setcookie(“cookie1”,”valor1”,time()+3600
• 30 días
• Setcookie(“cookie1”,”valor1”,time()+30*24*3600
PHP y las cookies
• Para borrar una cookie que tiene establecido un valor con período de expiración, debe utilizarse la sintaxis:
• Setcookie(“NombreCookie”,””,time());
PHP y las cookies• En todo script PHP siempre se tiene acceso a una variable de tipo
array global predefinida en la que están almacenadas todas las cookies recibidas del equipo del cliente
• $http_cookie_vars:• <?• foreach($HTTP_COOKIE_VARS as $c){• echo "$c<br>";• }• while(list($n,$v)=each($HTTP_COOKIE_VARS)){• echo "$n=$<br>";• }• ?>
PHP y las cookies
• Por defecto, si una cookie ha sido generada desde una página web su valor puede ser visto desde cualquier otra página del mismo directorio o subdirectorios en el que reside la página inicial
• Si se desea modificar esa visibilidad se puede indicar la ruta concreta en el servidor web a partir de la cual la cookie es visible
• Setcookie(“micookie”,”1”,timr()+60,”/sub/ Visible a partir del subdirectorio sub
PHP y las cookies
• Ejercicios:– Construir una página PHP que no permita
acceder a ella desde el mismo ordenador más de cinco veces
– Construir una página que muestre un mensaje “Bienvenido, hace mucho que no te vemos por aquí”, cuando acceda un usuario que haga más de diez días que no visitaba la página
Base de datos 1• <!doctype html public "-//W3C//DTD HTML 4.0 //EN">• <html>• <head>• <title>Title here!</title>• </head>• <body>
• <table border="0" summary="">• <form action="Basedatos.php" method="post">
• <tr>• <td>Código</td>• <td><input type="text" name="Codigo" size="20" maxlength="256"></td>• </tr>• <tr>• <td>Nombre</td>• <td><input type="text" name="Nombre" size="20" maxlength="256"> </td>• </tr>• <tr>• <td>Dirección Postal</td>• <td><input type="text" name="Dirección" size="20" maxlength="256"> </td>• </tr>• <tr>• <td>E-Mail</td>• <td><input type="text" name="Mail" size="20" maxlength="256"> </td>• </tr>• </table>
Base de Datos 1• <Input type="submit"value="Enviar">• <Input type="reset" value="borrar">• </form>• <?php• if (isset($Nombre)){• $c=mysql_connect("localhost","root","");• if (!$c){• die("Conexión Fallida");• }• $s=mysql_select_db("mibd",$c);• $consulta="INSERT INTO usuarios(codigus,nombre,direccion,email) VALUES ('$Codigo','$Nombre','$Dirección','$Mail')";• $resultado=mysql_query($consulta);
• if ($resultado){• print("El usuario ha quedado registrado");• }• else{• Print("Error en el registro");• }• mysql_close($c);• }
• ?>