none
Ayuda con Login en Asp (Clasico) RRS feed

  • Pregunta

  • Tengo un Login con Base de Datos pero q pasa tengo q hacerlo q cuando un Usuario q esta en mi base de Datos Intente Entrar con su Usuario pero su contraseña este mal que me le cuente 1 intento fallido y eso se me agregue a la base de datos, luego cuando ese usuario tenga 3 intento Fallidos se Bloque.!!

    Necesito Ayuda Urgente.

    Se lo voy a Agradecer Full

    jueves, 2 de junio de 2011 21:17

Respuestas

  • Hola de nuevo:

     

    Suponiendo que el campo fuese INTENTOS INT NOT NULL:

    <%
    Dim usuario, password, oConn, RS
    'Primero nos fijamos si ambos campos fueron completados.
    'Si no se cumple, redireccionamos a pagina1.asp
    If Request.Form("usuario") = "" OR Request.Form("password") = "" then
       Response.Redirect "pagina1.asp"
    Else
       'Guardamos los datos del Form en variables y evitamos la comilla simple
       usuario = Trim(Request.Form("usuario"))
       password = Trim(Request.Form("password"))
       usuario = Replace(usuario,"'","''")
       password = Replace(password,"'","''")

       'Conectamos a nuestra BD.
       Set oConn = Server.CreateObject ("ADODB.Connection")
       oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="& Server.MapPath("./basedatos.mdb")

       'Seleccionamos de la tabla solo los registros que concuerden con el usuario del Form.
       sql = "SELECT * FROM prueba WHERE usuario = '"& usuario &"'"
       Set RS = Server.CreateObject ("ADODB.RecordSet")
       RS.Open sql, oConn

    Dim update As Boolean = false

    Dim intentos As Integer = 0

    'Si el valor EOF (fin de la tabla elegida) es verdadero, no existe el usuario.
       If (RS.EOF = true) then
          Response.Write "Ese usuario no existe"

       ElseIf RS.Fields("intentos") = 3

           Response.Write "Usuario bloqueado"
       ElseIf RS.Fields("password") = password then 'Si el campo de la tabla es igual a nuestra variable, estas logueado.
          Response.Write "Te logueaste con exito... Bienvenido <B>"& usuario &"</B>"

          update = True

       Else 'Otra cosa, seria cuando el password no es la que seleccionamos.
          Response.Write "Esa contraseña no concuerda con el usuario ingresado"

           intentos = RS.Fields("intentos") + 1

          update = True

       End If

     

     'Limpiamos y cerramos.

       RS.Close
       oConn.Close

       Set RS = Nothing

    If update hen

     

       oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="& Server.MapPath("./basedatos.mdb")

       oConn.execute "UPDATE prueba SET INTENTOS=" & CStr(intentos) &" WHERE usuario = '"& usuario &"'"

     

    End If




       Set oConn = Nothing
    End If

    No he probado el código, pero la idea es esta.

     

    Un saludo

    • Marcado como respuesta HdezCortes lunes, 18 de julio de 2011 19:52
    viernes, 17 de junio de 2011 13:42

Todas las respuestas

  • Aqui tienes un pequeño ejemplo para que comienzes a implementar el sistema de login:

     

    http://www.soloasp.com.ar/vereje.asp?eje=5

     

    Si despues te surgen dudas más concretas puedes consultarlas aqui.

     

    Un saludo

    viernes, 3 de junio de 2011 10:13
  • Gracias

    Esa Parte del Login ya la Realize lo que me Falta es que cuando un Usuario Intente Entrar con su Usuario correcto pero su contraseña no A ese Usuario en un campo q tengo en mi base de datos se le cuente 1 en intentos fallidos y cuando llegue a 3 intentos Fallidos se Bloque ese Usuario.

    Si me Puedes Ayudar con eso te lo Agradeceria Mucho..

     

    Saludos.

    viernes, 3 de junio de 2011 18:00
  • Hola de nuevo:

     

    Suponiendo que el campo fuese INTENTOS INT NOT NULL:

    <%
    Dim usuario, password, oConn, RS
    'Primero nos fijamos si ambos campos fueron completados.
    'Si no se cumple, redireccionamos a pagina1.asp
    If Request.Form("usuario") = "" OR Request.Form("password") = "" then
       Response.Redirect "pagina1.asp"
    Else
       'Guardamos los datos del Form en variables y evitamos la comilla simple
       usuario = Trim(Request.Form("usuario"))
       password = Trim(Request.Form("password"))
       usuario = Replace(usuario,"'","''")
       password = Replace(password,"'","''")

       'Conectamos a nuestra BD.
       Set oConn = Server.CreateObject ("ADODB.Connection")
       oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="& Server.MapPath("./basedatos.mdb")

       'Seleccionamos de la tabla solo los registros que concuerden con el usuario del Form.
       sql = "SELECT * FROM prueba WHERE usuario = '"& usuario &"'"
       Set RS = Server.CreateObject ("ADODB.RecordSet")
       RS.Open sql, oConn

    Dim update As Boolean = false

    Dim intentos As Integer = 0

    'Si el valor EOF (fin de la tabla elegida) es verdadero, no existe el usuario.
       If (RS.EOF = true) then
          Response.Write "Ese usuario no existe"

       ElseIf RS.Fields("intentos") = 3

           Response.Write "Usuario bloqueado"
       ElseIf RS.Fields("password") = password then 'Si el campo de la tabla es igual a nuestra variable, estas logueado.
          Response.Write "Te logueaste con exito... Bienvenido <B>"& usuario &"</B>"

          update = True

       Else 'Otra cosa, seria cuando el password no es la que seleccionamos.
          Response.Write "Esa contraseña no concuerda con el usuario ingresado"

           intentos = RS.Fields("intentos") + 1

          update = True

       End If

     

     'Limpiamos y cerramos.

       RS.Close
       oConn.Close

       Set RS = Nothing

    If update hen

     

       oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="& Server.MapPath("./basedatos.mdb")

       oConn.execute "UPDATE prueba SET INTENTOS=" & CStr(intentos) &" WHERE usuario = '"& usuario &"'"

     

    End If




       Set oConn = Nothing
    End If

    No he probado el código, pero la idea es esta.

     

    Un saludo

    • Marcado como respuesta HdezCortes lunes, 18 de julio de 2011 19:52
    viernes, 17 de junio de 2011 13:42
  • Lo tienes clarito con ese ejemplo. Yo agregaría un mensaje que notifique que ese usuario fué bloqueado por los 3 intentos.

    Ahora recuerda que las variables en ASP son todas variant; también es recomendable capturar el caracter comodín(%).

    martes, 21 de junio de 2011 21:26
  • Hola de nuevo:

     

    Suponiendo que el campo fuese INTENTOS INT NOT NULL:

    <%
    Dim usuario, password, oConn, RS
    'Primero nos fijamos si ambos campos fueron completados.
    'Si no se cumple, redireccionamos a pagina1.asp
    If Request.Form("usuario") = "" OR Request.Form("password") = "" then
       Response.Redirect "pagina1.asp"
    Else
       'Guardamos los datos del Form en variables y evitamos la comilla simple
       usuario = Trim(Request.Form("usuario"))
       password = Trim(Request.Form("password"))
       usuario = Replace(usuario,"'","''")
       password = Replace(password,"'","''")

       'Conectamos a nuestra BD.
       Set oConn = Server.CreateObject ("ADODB.Connection")
       oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="& Server.MapPath("./basedatos.mdb")

       'Seleccionamos de la tabla solo los registros que concuerden con el usuario del Form.
       sql = "SELECT * FROM prueba WHERE usuario = '"& usuario &"'"
       Set RS = Server.CreateObject ("ADODB.RecordSet")
       RS.Open sql, oConn

    Dim update As Boolean = false

    Dim intentos As Integer = 0

    'Si el valor EOF (fin de la tabla elegida) es verdadero, no existe el usuario.
       If (RS.EOF = true) then
          Response.Write "Ese usuario no existe"

       ElseIf RS.Fields("intentos") = 3

           Response.Write "Usuario bloqueado"
       ElseIf RS.Fields("password") = password then 'Si el campo de la tabla es igual a nuestra variable, estas logueado.
          Response.Write "Te logueaste con exito... Bienvenido <B>"& usuario &"</B>"

          update = True

       Else 'Otra cosa, seria cuando el password no es la que seleccionamos.
          Response.Write "Esa contraseña no concuerda con el usuario ingresado"

           intentos = RS.Fields("intentos") + 1

          update = True

       End If

     

     'Limpiamos y cerramos.

       RS.Close
       oConn.Close

       Set RS = Nothing

     

    If update hen

     

       oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="& Server.MapPath("./basedatos.mdb")

       oConn.execute "UPDATE prueba SET INTENTOS=" & CStr(intentos) &" WHERE usuario = '"& usuario &"'"

     

    End If


     



       Set oConn = Nothing
    End If

    No he probado el código, pero la idea es esta.

     

    Un saludo

    Muchas Gracias

     

    lunes, 18 de julio de 2011 19:52