Control de usuarios en ASP y MySQL

Anuncio
Control de usuarios en ASP y MySQL
Control de usuarios con ASP para una herramienta con base de datos MySQL. Verifica también que el usuario
no esté autenticado ya en la aplicación.
Vamos a realizar un control de usuarios con ASP para una herramienta de código libre que está montada en php sobre
base datos, en nuestro caso MySQL. Aunque dicha herramienta, llamada Moodle, está desarrollada en PHP, nuestro
control de usuarios está desarrollado en ASP, porque nos viene mejor, estámos más familiarizados y porque nuestro
servidor, montado sobre un sistema operativo Windows, soporta tanto PHP como ASP.
El control de usuario, realizado en asp, verifica que dentro de dicha herramienta no exista ningún usuario con el mismo
nombre que el que se quiere conectar. Esto es útil, porque si un usuario realizar un ejercicio y otro entra en el sistema y
realiza el mismo ejercicio se crearía un conflicto a la hora de guardar los cambios.
Lo primero que necesitamos es instalar un controlador MySQL OBDC (yo lo encontré en Internet, si mal no recuerdo en
DriverGuide). En concreto, instalé la versión 3.51 del Driver ODBC. Utilizamos este controlador porque vamos a hacer
la conexión a través de OBDC de los servidores Windows, pero estos no incluyen controladores para MySQL por
defecto. (Los sistemas Windows suelen venir con los drivers de bases de datos como Access, SQL Server, etc.)
Referencia: En DesarrolloWeb.com se ha ofrecido información sobre el Driver ODBC para MySQL.
Instalar el driver ODBC para conectar con una base de datos MySQL
La página de oficial donde se puede descargar y obtener más información del controlador ODBC para
MySQL es http://www.mysql.com/products/connector/odbc/
Login.asp
La aplicación comienza con una página (login.asp) con un formulario que incluye un cajón donde escribir el login del
usuario. Al hacer clic en el botón enviar, nos redirecciona al control de usuarios.
<%@ Language=VBScript %>
<html>
<head>
<title>Control de usuarios</title>
<base target="bienvenida">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFF99" text="#333333">
<form method=post action=verify.asp >
<div align="center"><strong>Introduzca el nombre de usuario</strong> </div>
<p align="center"><strong>   LOGIN: </strong>
<input name=login type=text size="12">
<br>
<br></fomr>
<input type=submit value="Enviar" name="Enviar">
</p>
</body>
</html>
Verify.asp
En esta página se encuentra el verdadero control de usuarios
<%conn_string="DSN=moodle;User=root;Password=xxxxxx"
set conn = server.CreateObject("ADODB.Connection")
conn.Open conn_string
strQuery = "SELECT username, id, lastaccess FROM mdl_user"
Set RS = conn.Execute(strQuery)
%>
El nombre de la base de datos es moodle. También debemos indicar cual es el nombre del usuario y el password.
Realizamos una select sobre la tabla mdl_user obteniendo el nombre de usuario, su id y su lastacces, datos que usaremos
posteriormente.
<% usuario=request.form("login")%>
<%while not RS.eof%>
<%if usuario=RS("username") then%>
<%idusuario=RS("id")%>
<%lastaccess=Rs("lastaccess")%>
<%acceso=1%>
<%end if %>
<%RS.MoveNext%>
<%wend%><br>
<%conn.close%>
Desde otra página que incluye un formulario enviamos el nombre del usuario que se guardará en la variable usuario.
A continuación se hace una comprobación del nombre del usuario, para saber si existe y se obtiene su id (único en la
base de datos) así como el instante del último acceso a la aplicación, lastacces
<%conn_string2="DSN=moodle;User=root;Password=xxxxxx"
set conn2 = server.CreateObject("ADODB.Connection")
conn2.Open conn_string2
strQuery2 = "SELECT userid,timeaccess FROM mdl_user_students "
Set RS2 = conn2.Execute(strQuery2) %>
<%while not RS2.eof%>
<%if RS2("userid")=idusuario then%>
<%timeaccess=RS2("timeaccess")%>
<%end if%>
<%RS2.MoveNext%>
<%wend%><br>
<%conn2.close %>
En un Segundo acceso a la base de datos, en este caso a la tabla mdl_user_students obtenemos para el usuario cuyo id
obtuvimos con anterioridad el timeacces
<%if acceso=0 then %>
<%response.Redirect("aviso.html")%><br>
<%elseif timeaccess<>0 and timeaccess=lastaccess and acceso=1 then%>
<%response.redirect("error.asp")%>
<%else%>
<%response.redirect("/escuelavirtual/index.php")%>
<%end if%>
</body>
</html>
Finalmente, cuando la variable acceso=0 (inicialmente la habíamos inicializado a 1) es que no se encontró el usuario o
este no existe y nos manda a la página aviso.html que emite un aviso de error
Si acceso =1 y tmieacces=lastacces implica que ya existe un usuario dentro del sistema con ese nombre y por tanto se
deniega la entrada reenviándonos a otra página de error.
Finalmente, si no se da ninguna de las otras opciones, el usuario es correcto y nos reenvía a la página donde se inicia la
aplicación.
Informe de Carlos Blanco Arca*
Descargar