Ver Mensaje Individual
  #92 (permalink)  
Antiguo 15/08/2004, 13:23
choco_cu
 
Fecha de Ingreso: mayo-2004
Ubicación: Ciudad de la Habana
Mensajes: 85
Antigüedad: 20 años, 7 meses
Puntos: 0
Ahora les envio la segunda parte del sistema de usuario y contraseña con session

segunda parte

En la Primera parte les mostramos como hacer una simple interface de proteccion por password funcional para tu Sitio. En est'a parte vamos a explorar como agregar mensajes de error, pertimir que los usuarios se relogeen o sea se reconecten, y solicitar a la base de datos por el nombre de usuario y el password entrado.

La primera cosa que haremos es agregar el codigo para permitir a los usuarios volver a logearse. Para hacerlo necesitamos chequear y ver que el usuario se encuentra logeado y agregar una nueva subrutina para manipular eso. Primero agregamos el codigo para chequear y ver si el usuario se mantiene conectado.

el siguiente codigo necesita se agregado en la cabecera de la pagina de logeo. Este codigo dirigir'a lo que pasa cuando el usuario activa la pagina de logeo.

login = Request.Form("login")
If login = "login_again" Then
Session("UserLoggedIn") = ""
ShowLogin
Else
If Session("UserLoggedIn") = "true" Then
AlreadyLoggedIn
Else
If login = "true" Then
CheckLogin
Else
ShowLogin
End If
End If
End If

Este codigo(anterior) reemplaza este codigo (de abajo) de la primera parte

If Request.Form("login") = "true" Then
CheckLogin
Else
ShowLogin
End If

Luego agregaremos la subrutina. AlredadyLoggedln para decirle al usuario que estan logeado y preguntar si quieren volverse a logear.

<%
Sub AlreadyLoggedIn
%>
You are already logged in.
Do you want to logout or login as a different user?
<form name=form2 action=login2.asp method=post>
<input type=submit name=button1 value='Yes'>
<input type=hidden name=login value='login_again'>
</form>
<%
End Sub
%>

he incluido un script de asp de apertura y cierre para delimitar porque in esa seccion de codigo hay una mescla de ASP y Html.

Ahora para agregar el chequeo de errores necesitamos declarar una variable global para el mensaje de error, agregar el codigo para formatear el mensaje de error e imprimir el mensaje si sse necesita.

Declarar la Variable para almacenar el mensaje de error cerca de la cabecera de la pagina de logeo.

Dim Error_Msg

Y agregamos este pequeño pedazo de codigo al inicio del formulario de logeo. Esto imprimira un mensaje de error si hay alguno.

Response.Write(Error_Msg&"<br>")

Ahora todo lo que nos falta por hacer es agregar el codigo para chequear el nombre de usuario y el password en una base de datos. Para hacerlo Reescribiremos la subrutina CheckLogin de la primera parte.

Sub CheckLogin
Dim Conn, cStr, sql, RS, username, userpwd
username = Request.Form("username")
userpwd = Request.Form("userpwd")
Set Conn = Server.CreateObject("ADODB.Connection")
cStr = "DRIVER={Microsoft Access Driver (*.mdb)};"
cStr = cStr & "DBQ=" & Server.MapPath("\articles\asp\advanced\passwordhow to.mdb") & ";"
Conn.Open(cStr)
sql = "select username from UserTable where username = '" & LCase(username) & "'"
sql = sql & " and userpwd = '" & LCase(userpwd) & "'"
Set RS = Conn.Execute(sql)
If RS.BOF And RS.EOF Then
Error_Msg = "Login Failed. Try Again."
ShowLogin
Else
Session("UserLoggedIn") = "true"
Response.Redirect "protectedpage2.asp"
End If
End Sub

ya esta hecho, puedes cortar y pegar el formulario del codigo de abajo y entonces acomodarlo a tu sitio

nueva variante del sistema

login2.asp [Top]

<%
Response.Expires = -1000 'Evita que el explorador haga una cache del sitio
Response.Buffer = True 'activara el buffer para el contenido asi nuestro Response.Redirect trabajara

Dim Error_Msg

login = Request.Form("login")
If login = "login_again" Then
Session("UserLoggedIn") = ""
ShowLogin
Else
If Session("UserLoggedIn") = "true" Then
AlreadyLoggedIn
Else
If login = "true" Then
CheckLogin
Else
ShowLogin
End If
End If
End If

Sub ShowLogin
Response.Write(Error_Msg & "<br>")
%>
<form name=form1 action=login2.asp method=post>
User Name : <input type=text name=username><br>
Password : <input type=password name=userpwd><br>
<input type=hidden name=login value=true>
<input type=submit value="Login">
</form>
<%
End Sub

Sub AlreadyLoggedIn
%>
Ya estas logeado.
deseas logearte como un usuario nuevo?
<form name=form2 action=login2.asp method=post>
<input type=submit name=button1 value='Yes'>
<input type=hidden name=login value='login_again'>
</form>
<%
End Sub

Sub CheckLogin
Dim Conn, cStr, sql, RS, username, userpwd
username = Request.Form("username")
userpwd = Request.Form("userpwd")
Set Conn = Server.CreateObject("ADODB.Connection")
cStr = "DRIVER={Microsoft Access Driver (*.mdb)};"
cStr = cStr & "DBQ=" & Server.MapPath("\home\codelib\howto\aspadvanced\pa sswordhowto.mdb") & ";"
Conn.Open(cStr)
sql = "select username from UserTable where username = '" & LCase(username) & "'"
sql = sql & " and userpwd = '" & LCase(userpwd) & "'"
Set RS = Conn.Execute(sql)
If RS.BOF And RS.EOF Then
Error_Msg = "Login Failed. Try Again."
ShowLogin
Else
Session("UserLoggedIn") = "true"
Response.Redirect "protectedpage2.asp"
End If
End Sub
%>

protectedpage2.asp[Top]

<%
Response.Expires = -1000 'Makes the browser not cache this page
Response.Buffer = True 'Buffers the content so our Response.Redirect will work

If Session("UserLoggedIn") <> "true" Then
Response.Redirect("login2.asp")
End If
%>

Esta es una pagina protegida por password. si estas leyendo esto has entrado<br>
el nombre y el password correctos.