domingo, 13 de diciembre de 2009

MySql - Restricción de actividad por Tiempo/IP

En el desarrollo de sistemas basados en internet a menudo es necesario controlar la actividad de los visitantes, cuando los usuarios no están registrados se hace más complicado el control, los métodos para marcar una actividad suelen ser:

- Registrar la IP de conexión a internet.
- Guardar cookies / SharedObject en flash.

Sabemos que ninguno de los 2 métodos es infalible, se pueden borrar las cookies y cambiar la IP, pero será más trabajoso para el usuario volver a generar actividad. El método infalible es mediante Registro de Usuarios, pero en ocaciones es preferible simplemente recibir acciones de usuarios sin que estén registrados (ejemplo: encuestas, publicación de clasificados, etc.)

En MySql podríamos guardar un campo llamado "fecha" y otro llamado "ip", la consulta para saber si existió actividad desde esa IP en por ejemplo "10" minutos es:

SELECT fecha, now(), ip
FROM prueba
WHERE fecha >= NOW() - INTERVAL 10 MINUTE
AND ip = '127.0.0.1';

Si existe al menos un registro, mostraremos el mensaje de advertencia indicandole al usuario que debe esperar 10 minutos antes de realizar otra actividad.