[Ir al menú de PHP]
Las Cookies

Las cookies

Igual que ocurría con la función mail, no todos los servidores gratuitos tienen habilitada la opción de envío de cookies.

Como sabes las cookies son pequeños ficheros que se escriben en el ordenador del cliente

Si usas Explorer como navegador podrás ver que se almacenan -como ficheros de texto- en un subdirectorio de Windows que se llama Cookies y habitualmente tienen un nombre de esta forma:

xxx@nombre[z].txt donde xxx suele ser el nombre que figura en el registro de windows como titular del ordenador (el que se pone al instalar Windows); nombre suele ser el nombre del directorio de servidor desde el que se envió la cookie y el número z suele ser el ordinal del números de accesos a la página que envía la cookie.

Netscape trata las cookies de distinta forma ya que las almacena en un único fichero llamado cookies.txt y que esta en el subdirectorio del usuario que se crea en la instalación del programa dentro de un subdirectorio de Netscapellamado users.

¿Como enviar cookies?

El script de envío de cookies debe insertarse siempre al principio de la página y antes de cualquier etiqueta HTML. Esto es muy importante... no lo olvides

Hecha esta precisión la sintaxis es la siguiente:

setcookie(nom, val, exp)

donde:
nom es una cadena que contiene el nombre de la variable que recoge el valor de la cookie.
val es el valor que se asignará a la variable anterior. Puede ser tanto numérico como de tipo cadena.

exp es la fecha de caducidad de la cookie. Normalmente se escribe: time() (hora actual) másun número que representa segundos con lo cual (observa los ejemplos) la cookie expirará transcurridos esos segundos.

Los valores asignados a una cookie pueden recogerse a partir de variables (predefinidas o enviadas a través de un formulario).

Tal como puedes ver en el ejemplo galletas5.php también es posible crear cookies en las que la variable contiene un array que puede ser tanto escalar como asociativo.

Como ves en el ejemplo, es necesario incluir un setcookie por cada uno de los valores del array aunque a la hora de devolver esa variable el navegador del cliente envia el array completo.

¿Como leer cookies?

Al invocar la variable con la que fué escrita desde cualquier página alojada en el subdirectorio del servidor desde el que fué creada el valor de la cookie ya estará asignado -de forma automática- a esa variable.

Observa los ejemplos: 2, 4 y 6, la única instrucción que contienen es echo y el nombre de la variable. Si la cookie ha sido creada anteriormente y no ha expirado, esa instrucción escribirá el valor de aquella.


 
 


Una cookie muy simple

Aquí tienes un ejemplo, el más simple, del uso de esta función


<?
setcookie("cookie1","Mi regalito",time()+3600);
echo "Esta es la galletita:",$cookie1;
?>


Ver galletas1.php

<?
echo "Esta es la galletita:",$cookie1;
?>


Ver galletas2.php


Una cookie con valores asignados mediante una variable


<?
$z="Mi regalito";
setcookie("cookie2",$z,time()+3600);
echo "Esta es la galletita:",$cookie2;
?>


Ver galletas3.php

<?
echo "Esta es la galletita:",$cookie2;
?>


Ver galletas4.php


Una cookie definida como array


<?
$valores=Array("Verde","Verano","Rolls-Royce","Millonario");

setcookie("cookie5[color]",$valores[0],time()+3600);
setcookie("cookie5[estacion]",$valores[1],time()+3600);
setcookie("cookie5[coche]",$valores[2],time()+3600);
setcookie("cookie5[finanzas]",$valores[3],time()+3600);

if (isset( $cookie5) ) {
   while( list( $indice, $valor) = each( $cookie5 ) ) {
	  echo "$indice == $valor\n";
   }
}


?>




Ver galletas5.php

<?

if (isset( $cookie5) ) {
   while( list( $indice, $valor) = each( $cookie5 ) ) {
	  echo "$indice == $valor\n";
   }
}
?>


Ver galletas6.php


Una contador como aplicación práctica


<?
$numero=$visitante; 
$numero+=1; 
setcookie("visitante",$numero,time()+86400); 

if($numero==1){print "Es la $numero vez que visitas esta página";} 
if($numero>1){print "Es la $numero ª vez  que visitas esta página";} 
?> 



Ver galletas7.php

Sugerir a un/a amig@ Envíame tus comentarios
Anterior
Indice
Siguiente