Ver Mensaje Individual
  #30 (permalink)  
Antiguo 10/10/2007, 15:04
Avatar de u_goldman
u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 4 meses
Puntos: 98
Re: Un módulo de usuarios

Hola de nuevo, primero que nada, me di cuenta que de acuerdo a mi costumbre estaba desordenando todo, ya teniamos una serie de archivos en la raiz del folder admin que no tenian por que estar ahi, asi que me permiti crear un nuevo folder llamado controles, en el cual pondremos todo los controles que vayamos creando para nuestro admin, footer y header incluidos, de tal manera que nuestro directorio admin deberia quedar asi:

Código:
admin
|
|--controles
    |
    |--footer.asp
    |--header.asp
    |--autentificar.asp
|
|--index.asp
|--login.asp
En negritas los nuevos folders/archivos

Ahora, como cambiamos la ruta de algunos de los archivos que ya estabamos ocupando, tambien tenemos que cambiar la ruta de las directivas include de estos archivos, de manera tal que los includes en login.asp, quedan de la siguiente manera:

Código:
<!--#include file = "../conexion.asp"-->
<!--#include file = "../componentes/usuario.asp"-->
<!--#include file = "../componentes/encriptar.asp"-->
<!--#include file = "../admin/controles/header.asp"-->
.
.
.
.
<!--#include file = "../admin/controles/footer.asp"-->
Ahora si...

Siempre que hagamos una zona protegida, tenemos que asegurarnos que aquellos archivos que viven de manera protegida, no puedan ser accesibles mediante URL directamente, para esto con frecuencia nos valemos de un archivo asp que evalúa una sesión previamente creada en nuestra forma de login (session("usuarioID")), si esta sesión no existe o no tiene valor, entonces simplemente refgirigimos a nuestra forma de login, la ventaja de poner esta directiva en un archivo aparte emulando un control, es que lo podemos reutilizar en cualquier lado.

Abrimos nuestro archivo controles/autentificar.asp y escribimos lo siguiente:
Código:
<%
if len(Session("usuarioID")) = 0 then
	Response.Redirect("../admin/login.asp")
end if
%>
Básicamente solo estamos diciendo que si no existe la sesion o no tiene valor, lo mande a volar

Ahora comencemos la verdadera diversión, hasta aquí hemos creado nuestras clases y el formulario pero todo esta un poco disperso...vamos a integrarlo

Abrimos nuestro archivo index.asp y escribimos este código:
Código:
<!--#include file = "../admin/controles/auntentificar.asp"-->
<!--#include file = "../conexion.asp"-->
<!--#include file = "../componentes/usuario.asp"-->
<%
Dim ObjUsuario
Set ObjUsuario = new usuario

ObjUsuario.id = Session("usuarioID")
if ObjUsuario.ObtenerDatos() then
%>
	<!--#include file = "../admin/controles/header.asp"-->
	<div class="usuario_datos">Cuenta: <a href="#"><%=ObjUsuario.uname%></a></div>
	<!--#include file = "../admin/controles/footer.asp"-->
<%
	Set ObjUsuario = Nothing
else
	Set ObjUsuario = Nothing
	Session.Contents.Remove("usuarioID")
	Response.Redirect("../admin/login.asp")
end if
%>
La idea del código es la siguiente:

1. Incluimos los archivos que necesitaremos para la autentificación de nuestro usuario

2. Si pasa la primera aduana (que la sesion exista y tenga valor), entonces creamos un nuevo objeto llamado ObjUsuario y de acuerdo con el valor de la sesion obtenida en el form de login que debe ser ni mas ni menos que el id del usuario, obtenemos sus datos mediante nuestro método ObtenerDatos() que creamos en sesiones pasadas.

3. Si existe este usuario, entonces comenzamos a devolver el HTML correspondiente y como ya tenemos todas sus propiedades, "pintamos" su username en un link que ya después le daremos uso.

4. Si no se encuentra este usuario, redirigimos a login.asp, pero quitamos la sesion usuarioID pues si tiene valor pero es incorrecto.

Un ajuste más a nuestra forma de login es el siguiente:

Código:
	if ObjUsuario.Autentificar() then
        'Guardamos en sesion el id del usuario
        Session("usuarioID") = ObjUsuario.id
		'Response.Write("Ahora si ingresaste")
                 Response.Redirect("index.asp")
	else
Y esto es todo por hoy
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway