Está en la página 1de 17

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ón
setcookie (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);
• }

• ?>

También podría gustarte