Supongamos que tienes dos tablas:
Una para
usuarios
Código:
CREATE TABLE `usuarios` (
`id` tinyint(10) NOT NULL auto_increment,
`nombre` varchar(200) default NULL,
`apellidos` varchar(200) default NULL,
`direccion` varchar(200) default NULL,
`poblacion` varchar(200) NOT NULL default '',
`provincia` varchar(200) NOT NULL default '',
`pais` varchar(200) NOT NULL default '',
`telefono` varchar(10) default NULL,
`login` varchar(40) default NULL,
`pass` varchar(20) default NULL,
`email` varchar(200) default NULL,
`ok` varchar(10) NOT NULL default '',
`cr` varchar(200) NOT NULL default '',
`op` tinyint(10) NOT NULL default '0',
UNIQUE KEY `id` (`id`)
) TYPE=MyISAM
Otra para los
accesos de estos
Código:
CREATE TABLE `accesos` (
`id` int(10) NOT NULL auto_increment,
`iduser` int(12) NOT NULL default '0',
`ip` varchar(25) default '',
`fecha` date default NULL,
`hora` time default NULL,
`intentos` int(10) default '0',
`idioma` char(2) default '',
`referer` varchar(255) default NULL,
`navegador` varchar(255) default NULL,
`ok` tinyint(1) NOT NULL default '0',
`blokeo` tinyint(1),
`datos` text,
PRIMARY KEY (`id`),
KEY `ip_fecha` (`ip`,`fecha`)
) TYPE=MyISAM
Bien. La de usuarios se actualiza ya sea por iniciativa del usuario o por el webmaster el cual asigna la contraseña. Vayamos a por la de acceso.
Cuando un usuario accede a tu web, tiene su nombre de usuario y su contraseña. Tambien podemos sacar desde donde viene (IP - variable del servidor: REMOTE_HOST), que tipo de navegador usa (Variable del servidor: HTTP_USER_AGENT, tambien podemos sacar el S.O. que usa con SERVER_SOFTWARE) y cual es su idioma (variable del servidor: HTTP_ACCEPT_LANGUAGE).
Primer paso: Usuario introduce nombe y contraseña, se envia el POST y se compara con la tabla
usuarios.
Si existe: Se añade a la tabla
accesos el id del usuario, la fecha y la hora y todo lo dicho antes de los server variables y ok=

. Se toma el id de
accesos y se pasea por el querystring (cuando digo querystring, digo formularios, cookies y/o
sessiones ) comprobandose que es la IP correcta cada página importante.
Si no existe: Se busca en la tabla acceso la IP con la hora y fecha (por ej. SELECT * FROM accesos WHERE IP='xxx.xxx.xxx' AND fecha='Hoy' AND hora > 'ahora-60min' AND hora < 'Ahora')
- Si blokeo = 1 --> Error: Lo siento, pero sistema bloqueado. Ponerse en contacto con admin o esperarse a mañana
- Si intentos > 3 o > 6 --> UPDATE blokeo = 1
- Else --> Se añade IP, fecha, hora y todas las server variables, se añade 1 a los intentos
NOTA: Esto lo he hecho a bote pronto con lo cual no esta comprobado pero la dinámica de trabajo es la correcta.
OTRO TEMA
Usar el global.asa no hace mucha gracia a los admins de sistema pero aqui te dejo un ejemplo base muy clarito del uso de application. Como veras son eventos de control de inicio de la aplicacion y final.
Código:
<script Language="VBScript" RUNAT=Server>
Sub Application_OnEnd()
Application.Contents.RemoveAll()
End Sub
Sub Application_OnStart()
Application("NumSesion") = 0
Application("NumVisitas") = 0
End Sub
Sub Session_OnEnd()
Application("NumSesion") = Application("NumSesion") - 1
Session.Abandon
End Sub
Sub Session_OnStart()
Application("NumSesion") = Application("NumSesion") + 1
Application("NumVisitas") = Application("NumVisitas") + 1
End Sub
</script>
Un saludo