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

En Programación Orientada a Objetos (OOP ó POO), generalmente tenemos dos métodos que se llaman "Constructor y Destructor" para cada clase, éstos son ejecutados cada vez que la clase se instancia o se destruye respectivamente, VBS al no ser un lenguaje OOP, no tiene tales métodos, sin embargo, implementa dos subrutinas similares llamadas

Class_Initialize y Class_Terminate respectivamente, sendas subrutinas se ejecutan al iniciar y destruir nuestro objeto, como son privadas, solo se ven en el interior de nuestra clase, es decir, no podremos hacer que nuestro objeto llame a estos métodos a voluntad, el sabe que los ejecutará al iniciar y terminar, si no se definen estos métodos, no pasa nada, en caso que te estuvieras preguntando .

Ahora, Myakire se adelantó hace rato por eso le dí un citatorio para sus papás (no tanto) realmente no tenía planeado incluír este método pero ya que metió su cuchara tendremos que hacerlo (gracias )

Vamos a trabajar y hagamos que al instanciar nuestra clase, sus propiedades tomen valores por defecto, abrimos nuestro archivo usuario.asp y escribimos nuestra subrutina Class_Initialize:

Código:
	Private sub Class_Initialize
		m_id = -1
		m_uname = ""
		m_pwd = ""
	End sub
Esto hará el truco


* Lógica del formulario
Es siempre la mejor idea sentarse un rato a pensar antes de comenzar a tirar líneas de código, te sugiero siempre crear un algoritmo básico para todo proceso, y siempre tratar de hacerlo de manera ordenada y estandarizada, programar una aplicación ordenadamente te ahorrará muchos dolores de cabeza a tí y a quien mantenga tu sistema -y dirán uy si que ordenado es u_g, para nada, pero trato de serlo aunque nunca lo logro- en fin, básicamente de lo que se trata la lógica de nuestro archivo es:

- Detectar si la forma ha sido envíada cuando la página carga
- Si ha sido envíada tratará de "loguear" al usuario
- Si el usuario es autentificado, ya ganamos
- Si el usuario no es autentificado, redireccionaremos a nuestra misma forma, y le avisaremos que una de dos, o las dos (usuario y password) no son válidos.

¿Fácil no?

Abrimos nuestro archivo admin/login.asp, y comenzamos después de la serie de includes, vamos a tratar a lo largo de todo este módulo de declarar todas las variables que utilizaremos, no solo es una buena costumbre, sino ayudará para que ahora que migremos a otros lenguajes, no nos cueste trabajo deshacernos de la herencia maldita de VB:

Código:
<%
'una variable booleana que nos ayudará para saber si la forma se ha envíado
Dim formaHasidoEnviada
'Nuestro objeto usuario
Dim ObjUsuario
'Si existe un error lo imprimiremos con esta varibale
Dim strError

'Si el campo formaEnviada que es nuestro hidden tiene un valor, quiere decir que la forma se ha enviado
formaHasidoEnviada = len(Request.Form("formaEnviada")) > 0
'Inicializamos nuestro variable de error a nada por el momento
strError = ""

'Continua...
Ahora viene la parte divertida...vamos a ver que mostramos de acuerdo a nuestras variables:

Código:
'Si no se ha enviado la forma
if not formaHasidoEnviada then
	'Si existe algun error guardado en sesion, entonces nuestra variable de error adquirira un valor
	if Session("loginError") then
		strError = "Usuario o contraseña incorrectos, por favor intente de nuevo"
		'Si hubo error ya tenemos nuestro string, no tiene caso que sigamos cargando con una variable
		'de sesion mas, asi que la quitamos.
		Session.Contents.Remove("loginError")
	end if
	%>
	<!--Agregamos un div que sirva como etiqueta para mostrar el error, esto va arriba del form--->
	<div class="error"><%=strError%></div>
	<!--Aqui va nuestro formulario--->
else
	'Se ha enviado la forma, necesitamos comprobar al usuario
	'Instanciamos nuestro clase usuario, aqui se llama automaticamente a la subrutina Initialize
	Set ObjUsuario = new usuario
	'Recuperamos nuestros valores asignandolos a su propiedad correspondiente...les quitamos los strings 	'vacios al inicio y final de la cadena
	ObjUsuario.uname = trim(Request.Form("uname"))
	ObjUsuario.pwd = trim(Request.Form("pwd"))
	
	'----------Esta parte la trabajaremos mañana------
	'if ObjUsuario.Autentificar() then
	'	Response.Write("Ahora si ingresaste")
	'else
	'	Set ObjUsuario = Nothing
	'	Session("usuarioID") = ""
	'	Session("loginError") = true
	'	Response.Redirect("login.asp")
	'end if
	'--------------------------------------------------
end if
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway