Aparte del resumen muy bueno que hay en Wikipedia sobre las
cookies, hay otros sitios donde puedes mirar. En los directorios extra de las distribuciones de los módulos Perl, suelen haber ejemplos.
En el caso del módulo
CGI, hay un apartado específico para las
cookies, y en el directorio correspondiente de
ejemplos, hay
uno en que se muestra cómo usarlas. No referido al control de usuarios, si no de forma general.
El control de usuarios, por medio de galletas es muy básico: si el que ejecuta mi cgi me transmite una galleta, voy a la base de datos para comprobar que el contenido de la galleta (su valor) corresponde a un número de sesión. Busco ese número en la base de datos. Compruebo que la marca de tiempo (un campo que ha guardado el momento en que se creó el registro) está dentro de la ventana temporal que he fijado como duración máxima de una sesión sin intervención del usuario (el
timeout de sesión). Si está dentro de ese periodo, entonces el resto de campos del registro de la base de datos me dan toda la información relativa a qué usuario es y qué es lo que estaba haciendo.
La ejecución del CGI comporta una acción por parte del usuario, bien sea a través de un campo oculto (
action) seleccionado por el usuario, o bien por simple pulsación sobre un enlace de una página, que determina la ejecución de un cgi completo. En ambos casos, la galleta me indica quién es, y la selección del usuario, qué quiere hacer a continuación. Según eso, modifico las condiciones que me pide el usuario: puede ser que me esté pidiendo aumentar en uno el número de paraguas que va a comprar, o pulsar el botón de aceptación de declaración jurada por la que se compromete a no matar al presidente de los EEUU.
Anoto/agrego/modifico lo que sea en la base de datos, y, ya sé qué es lo que debo preparar para enseñar al usuario. Primero confecciono otra galleta para ser enviada en la cabecera de la página que voy a confeccionar, y luego creo el resto del HTML de la página, anotando el nuevo número de paraguas o dándole las gracias por no atentar contra la vida del presidente.
Muchas de estas cosas, llevan una serie de pasos. Aprenderlos está bien. Muy bien. Luego, verás que muchos, pero muchos módulos de Perl ayudan a simplificar toda la gestión de leer/escribir galletas, actualizar datos del usuario, etc. Entramos en los llamados entornos de trabajo CGI de Perl. Uno de los más famosos es
CGI::Application.
En resumen, si solo quieres guardar datos entre llamadas, mira CGI y CGI::Cookie. Si quieres controlar una sesión de usuario,
CGI::Session. Si necesitas crear una aplicación web con diversos estados, CGI::Application (y sus varias docenas de módulos). Luego, hay más entornos de trabajo CGI mucho más elaborados, cada uno de ellos prometiéndote que puedes hacer más con menos de líneas de código. Es cuestión de buscarles por CPAN.
La tarea, en ocasiones no es sencilla... recuerdo que CGI::Session me llevó mucho tiempo para entender la secuencia que se debe seguir. Y con CGI::Application, de las aplicaciones que he hecho, seguro que he metido la pata muchas veces, también en la parte de autenticación de usuarios.
Seguro que hay más lectores de estos foros que nos pueden echar una mano.