Foros del Web » Programando para Internet » ASP Clásico »

alguien sabe donde esta el error?

Estas en el tema de alguien sabe donde esta el error? en el foro de ASP Clásico en Foros del Web. Hola Amigos! Llevo dias con este tema.Resulta no consigo autenfiticar un usuario de la base de datos. Cada vez que introduzco un usuario que existe ...
  #1 (permalink)  
Antiguo 21/07/2004, 09:51
 
Fecha de Ingreso: abril-2004
Ubicación: zaragoza
Mensajes: 36
Antigüedad: 21 años
Puntos: 0
alguien sabe donde esta el error?

Hola Amigos!
Llevo dias con este tema.Resulta no consigo autenfiticar un usuario de la base de datos.
Cada vez que introduzco un usuario que existe en la base de datos,siempre me sale el mensaje "este usuario no existe"
Aqui os pongo el codigo.

Gracias a todos

<%
Dim usuario, password
set conexion = Server.Createobject("adodb.connection")
strconn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("amigos.mdb")
conexion.open strconn
If Request.Form("logina") = "" OR Request.Form("contraseña") = "" then
Response.Redirect "user.htm"
Else

usuario = Trim(Request.Form("logina"))
password = Trim(Request.Form("contraseña"))
usuario = Replace(usuario,"'","''")
password = Replace(password,"'","''")
autorizacion= true
sql= "select * from personass where nomAmigo='"&request.form("logina") &"'"

set RS= conexion.execute(sql)
If (RS.EOF = true) then

Response.Write "Ese usuario no existe"
ElseIf RS.Fields("contraseña") = password then

Response.Write "Te logueaste con exito... Bienvenido <B>"& usuario &"</B>"
Else
Response.Write "Esa contraseña no concuerda con el usuario ingresado"
End If


RS.Close

Set RS = Nothing

End If
%>
__________________
bibiche
  #2 (permalink)  
Antiguo 21/07/2004, 10:26
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
cambiá If (RS.EOF = true) then por If (RS.BOF AND RS.EOF) then
  #3 (permalink)  
Antiguo 21/07/2004, 13:02
 
Fecha de Ingreso: abril-2004
Ubicación: zaragoza
Mensajes: 36
Antigüedad: 21 años
Puntos: 0
Sigue sin funcionar. Que sinifica BOF?
__________________
bibiche
  #4 (permalink)  
Antiguo 21/07/2004, 13:16
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
comienzo de archivo (Begining Of File, aunque tengo dudas si begining está corresctamente escrito)

Bueno, yo lo haría sí:

<%
Dim usuario, password
set conexion = Server.Createobject("adodb.connection")
strconn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("amigos.mdb")
conexion.open strconn

If Request.Form("logina") = "" OR Request.Form("contraseña") = "" then
Response.Redirect "user.htm"
Else

usuario = Trim(Request.Form("logina"))
password = Trim(Request.Form("contraseña"))
usuario = Replace(usuario,"'","''")
password = Replace(password,"'","''")
'autorizacion= true <- esto no sé para qué está

sql= "select * from personass where nomAmigo='"&request.form("logina") &"' AND contraseña = '" & password & "'"
set RS= conexion.execute(sql)

If (RS.EOF AND RS.BOF) then

Response.Write "Ese usuario no existe o ingresó erroneamente la contraseña"
'ElseIf RS.Fields("contraseña") = password then
else
Response.Write "Te logueaste con exito... Bienvenido <B>"& usuario &"</B>"
End If

RS.Close
Set RS = Nothing

End If
%>

Sólo un par de detalles... tratá de no usar "ñ" ni letras con tildes tanto en el nombre de los campos de la tabla como en el nombre de los campos de un formulario (lo que está en negritas). Además, coloqué la comprobación del par usuario/contraseña todo en la SQL.. así te ahorrás un paso.

sañludos
  #5 (permalink)  
Antiguo 22/07/2004, 08:34
 
Fecha de Ingreso: abril-2004
Ubicación: zaragoza
Mensajes: 36
Antigüedad: 21 años
Puntos: 0
La verdad es que sigue sin funciona.Se ejecuta solo en primer "IF".That is me redirecciona á user.htm siempre.
Seguiré investigando.De todo modo gracias "moderador"
__________________
bibiche
  #6 (permalink)  
Antiguo 22/07/2004, 08:48
 
Fecha de Ingreso: abril-2004
Ubicación: zaragoza
Mensajes: 36
Antigüedad: 21 años
Puntos: 0
Sabeis que? Acaba de cambiar una cosita y me funciona bien ahora.
Thanks por tu ayuda.
__________________
bibiche
  #7 (permalink)  
Antiguo 22/07/2004, 08:50
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Por pura curiosidad:

sql= "select * from personass where nomAmigo='"&request.form("logina") &"' AND
contraseña = '" & password & "'"

response.write sql

Si copias y ejecutas esa consulta en el Access o en SQLServer, ¿si te regresa datos?
  #8 (permalink)  
Antiguo 22/07/2004, 09:43
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
Cita:
Iniciado por copine13
Sabeis que? Acaba de cambiar una cosita y me funciona bien ahora.
Thanks por tu ayuda.

ok, pero podrías poner las modificaciones para ver en dónde estaba el error? Es que no lo veo!

saludos
  #9 (permalink)  
Antiguo 22/07/2004, 14:51
 
Fecha de Ingreso: noviembre-2003
Ubicación: Distrito Federal
Mensajes: 225
Antigüedad: 21 años, 5 meses
Puntos: 0
Seria bueno que vieramos cual fue la solucion al problema.
Por otro lado quiero hacer un comentario bien intencionado y constructivo. La forma que propuso Dazuaga para realizar la consulta del usuario y contraseña es correcta, sin embargo por ahi hay un problema de seguridad, por que con un metodo de inyeccion cualquier persona podria tener acceso sin la necesidad de estar registrado y por obvias razones de tener un usuarios y una contraseña valida.
Es mejor hacer la busqueda del usuario con una consulta SQL y luego confirmar la contraseña con ASP o desde el principio revisar que el usuario no este tratando de entrar con el metodo de inyeccion
  #10 (permalink)  
Antiguo 22/07/2004, 15:05
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
Hola Ysdragil.

Entiendo lo que decís, pero creo entender que la única manera de que te hagan un sql-inyection es mediante la introducción del caracter ' (apóstrofe) en el nombre de usuario y/o contraseña.

Bueno, eso está solucionado aquí:

Código:
usuario = Trim(Request.Form("logina"))
password = Trim(Request.Form("contraseña"))
usuario = Replace(usuario,"'","''")
password = Replace(password,"'","''") 

Si hay otro método o ese es inseguro, te pediría me orientes para solucionarlo.

Saludos
  #11 (permalink)  
Antiguo 26/07/2004, 09:36
 
Fecha de Ingreso: abril-2004
Ubicación: zaragoza
Mensajes: 36
Antigüedad: 21 años
Puntos: 0
En realidad el problema estaba en otro codigo.Me equivoqué en las variables.
De todos modos os pongo en codigo.


Codigo del formulario

<html>
<head><title>Usuario</title>
</head>
<body bgcolor=#FCB230 background="foto/fondo.gif">

<table cellpadding="0" cellspacing="0" width="175" border="0" bgcolor="#D5E6FD" >
<form action=pruebausuario.asp method=post >
<tr><td rowspan="6"><img src="foto/pixel.gif" width="8" height="1" border="0"></td>
<td colspan="2"><img src="foto/pixel.gif" width="1" height="5" border="0"></td>
<td rowspan="6"><img src="foto/pixel.gif" width="8" height="1" border="0"></td>
<tr><td width="60%"><span class="negrita">Nombre usuario<span></td><td><input type="text" name="logina" maxlength="20" value="" size="7"></td></tr>
<tr><td valign="top"><table cellpadding="3" cellspacing="0"><tr><td><span class="negrita">Contraseña</span></td></tr></table></td><td><input type="password" name="password" maxlength="20" size="7">
</td></tr>
<tr><td valign="top"><a href="olvido.asp" class="footerlink"><font class="negritapeque">¿Has olvidado tu contraseña?</a></td><td><input type="image" src="foto/enviar.gif" width="52" height="24" border="0" name="Login" value="Logina" align="middle" alt="Enviar"></td></tr>
<input type='hidden' name='procedenciad' value='/Default.asp'>
<tr><td colspan="2"><img src="foto/pixel.gif" width="1" height="5" border="0"></td></tr></form>
</table>
</body>
</html>

Codigo de verificacion de datos


<%
Dim usuario, password
set conexion = Server.Createobject("adodb.connection")
strconn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("amigos.mdb")
conexion.open strconn
If Request.Form("logina") = "" OR Request.Form("contraseña") = "" then
Response.Redirect "user.htm"
Else

usuario = Trim(Request.Form("logina"))
password = Trim(Request.Form("contraseña"))
usuario = Replace(usuario,"'","''")
password = Replace(password,"'","''")
autorizacion= true
sql= "select * from personass where nomAmigo='"&request.form("logina") &"'"

set RS= conexion.execute(sql)
If (RS.BOF AND RS.EOF) then

Response.Write "Ese usuario no existe"
ElseIf RS.Fields("contraseña") = password then

Response.Write "Te logueaste con exito... Bienvenido <B>"& usuario &"</B>"
Else
Response.Write "Esa contraseña no concuerda con el usuario ingresado"
End If


RS.Close

Set RS = Nothing

End If
%>


Saludos
__________________
bibiche
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:59.