Ver Mensaje Individual
  #8 (permalink)  
Antiguo 23/01/2006, 11:42
tammander
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 19 años, 4 meses
Puntos: 7
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