HTMLpointHTMLpoint HTMLpoint.com


 Gestión de los Cookies



Como todo buen lenguaje referido a la creación dinámica de páginas web, también el PHP permite gestionar los cookies, que son pequeños archivos de texto que incluyen informaciones útiles y no peligrosas para la gestión de las sesiones en el web.
Siendo PHP un lenguaje que nació para la interacción con el WWW, las funciones que se refieren a los Cookies son internas al PHP mismo. Otra cosa totalmente diferente ocurre con los demás lenguajes, Perl en primer lugar (para este tema véase el seminario sobre los Cookies en Perl publicado en CGIpoint y la recensión de cookie-lib en el mismo sitio).

La función que nos interesa es sólo una setcookie(). Básicamente su sintaxis es:

setcookie(Nombre, Valor, Caducidad, Recorrido, Dominio, Secure);

Intentemos aclarar las opciones que se pueden pasar a la función:

  • Nombre es el nombre del cookie que se puede elegir de forma arbitraria;
  • Valor es el valor,arbitrario, que se asigna al cookie;
  • Caducidad es la fecha de caducidad del cookie;
  • Recorrido es el directorio a partir del dominio (ver abajo) para el que es válido;
  • Dominio es el dominio para el que es válido;
  • Secure es un valor que decide si el cookie se tiene que enviar a través de una conexión HTTPS.

    Si queremos enviar de nuestra página un cookie llamado "Test", con valor "Prueba del cookie Test", con duración de un minuto del envío, para el directorio "/nombreusuario" del dominio "http://www.dominio.com" sin utilizar una conexión HTTPS, los parámetros que hay que pasar a setcookie son:

    setcookie("Test", "Prueba del cookie Test", time()+60, "/nombreusuario", ".dominio.com", 0);

    Las cosas interesantes que hay que analizar son dos: el tiempo de duración y la conexión HTTPS. Por lo que se refiere a la segunda, fijamos con "0" que la conexión tiene que ser normal. Si quisiéramos utilizar el protocolo seguro HTTPS, tendríamos que introducir el valor "1". El tiempo de duración no se puede fijar como "Tres minutos", porque no da tiempo. En cambio tenemos que fijar el momento de caducidad a partir del momento en el que el cookie se envía al usuario, por eso utilizamos las función interna time() a la que añadimos el número de segundos a partir de los que tiene que caducar el cookie. Por ejemplo, si el cookie se envía a las 13:20:00 y queremos que caduque al cabo de 30 minutos (60x30=1800 secondi), podemos escribir una expresión de expire:

    time()+1800

    De esta forma, time() corresponde a 13:20:00 y time()+1800 será 13:50:00

    Entre los seis valores que hay que pasar como argumento al cookie, solamente el primero es obligatorio, los demás se pueden dejar en blanco si no nos interesan. Además, para enviar un cookie, es necesario que éste se envíe al browser antes de cualquier output, por eso es necesario introducir la función delante de todos los tag <HTML> o <HEAD>.

    Para terminar, vamos a ver cómo leer un determinado cookie de un script. Recordemos que un cookie se envía como un array de datos y que podemos acudir a las funciones relacionadas a los array. Por lo tanto, podemos escribir:

    if (isset ($cookie) ) {
    while (list ($nombre, $valor) = each ( $cookie ) ) {
    echo "$nombre = $value\n";
    }
    }


    Para todas las informaciones introducidas en el cookie se visualizará una pareja "nombre = valor". Obviamente, el valor es el que habéis establecido en el cookie, los "nombres" son: cookie, expires, path, domain y secure (éste último es singular porque si se fija en 1 da "secure" en el cookie, sino no da nada).
    Para nuestro cookie de ejemplo, leeremos algo como:

    cookie=Test; epires=Thursday, expires=Monday, 31-Jul-00 11:50:00 GMT; path=/nombreusuario; domain=.dominio.com

    Si hubiéramos fijado 1 en vez de 0 para el protocolo HTTPS, hubiera aparecido también "secure" al final de la cadena. Fijaos en una última cosa: la fecha se gestiona de default según la hora GMT. La caducidad, de hecho, se ha fijado para las 11:50:00 GMT, que son las 13:50:00 locales.

  •   Volver al inicio de la página