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

Cómo validar usuario y contraseña en un bd en sql server....

Estas en el tema de Cómo validar usuario y contraseña en un bd en sql server.... en el foro de ASP Clásico en Foros del Web. [SIZE="3"] Holas,espero ke me puedan ayudar. Estoy recien empezando a hacer paginas web y se me complica validar los datos ingresados con los datos guardados ...
  #1 (permalink)  
Antiguo 06/02/2006, 13:44
 
Fecha de Ingreso: febrero-2006
Mensajes: 98
Antigüedad: 18 años, 4 meses
Puntos: 0
Cómo validar usuario y contraseña en un bd en sql server....

[SIZE="3"]Holas,espero ke me puedan ayudar. Estoy recien empezando a hacer paginas web y se me complica validar los datos ingresados con los datos guardados en una base de datos en sql server.
todos lo ejemplos ke he visto son para base de datos access, ojala me puedan dar una direccion o mucho mejor el codigo para validar usuario y contraseña ke son guardados en un textfield con los campos de la tabla personal.
podria ocupar un procedimiento almacenado???...necesito hacer la validacion en otro formulario??...komo puedo guardar los datos entre formularios?? se ke existen las variables tipo session...como se declaran???...

de antemano...muchas gracias

I need Help!
  #2 (permalink)  
Antiguo 06/02/2006, 16:49
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Bueno, los ejemplos que has visto con access, son exactamente igual con SQL Server, igualitos. Salvo por una sola linea: la cadena de conexión.

Esto es, en lugar de tener algo como:
objConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="& Server.MapPath("prueba.mdb")

Tendrías algo como:
objConnection.Open "Driver={SQL Server};SERVER=10.1.1.1; DATABASE=TuBD;UID=usr;PWD=psw"

Saludos
  #3 (permalink)  
Antiguo 06/02/2006, 20:53
Avatar de tomchat  
Fecha de Ingreso: septiembre-2005
Mensajes: 231
Antigüedad: 18 años, 9 meses
Puntos: 0
bien utiliza una sentencia SQL. Algo como:

SQl="Select usuario, clave From usuario='" & us & "'" And clave=" & cl & "'"
  #4 (permalink)  
Antiguo 07/02/2006, 06:24
 
Fecha de Ingreso: febrero-2006
Mensajes: 98
Antigüedad: 18 años, 4 meses
Puntos: 0
De acuerdo

gracias....
pero tengo ke hacerlo en un formulario aparte????.....
y kuando logre validarlo....komo puedo declarar los datos komo variables de sesion?????
  #5 (permalink)  
Antiguo 07/02/2006, 08:29
 
Fecha de Ingreso: febrero-2006
Mensajes: 98
Antigüedad: 18 años, 4 meses
Puntos: 0
holas

todavia tengo un problema....
kreo ke no me lee la base de datos porke antes keria mostrar los datos de un campo en un comobo box y no podia asi ke recurri a hacerlo manualmente....
ahora trato de comparar los datos del combo box y textfield kon los campos ke se encuentran en el archivo...
segun un ejemplo ke encontre en San google...y le cambie el string de conexion..
aki se los dejo:
<body>
<%Dim Usuario,Contraseña
if request.form("usuario")="" or request.form("contraseña") then
response.Redirect"form_ingresar.asp"
else
usuario=trim(request.form("usuario"))
contraseña=trim(request.form("contraseña"))
usuario=replace(usuario,"'","''")
contraseña=replace(contraseña"'","''")

<!--#include file="../misitio/adovbs.inc" -->
Set connection=Server.CreateObject("ADODB.Connection")
set rs = CreateObject("ADODB.Recordset")
connection.ConnectionString="Driver={SQL Server};Server=3333;User Id=sa; password='xxx'"
connection.Mode=3
connection.open

sql = "SELECT * FROM prueba WHERE usuario = '"& usuario &"'"
rs .open sql,connection,1,2

if (rs.eof =true) then
response.write "este usuario no existe"
else if rs.fields("password")=contraseña then
response.write"hola"
else
response.write "esta contraseña no concuerda"
response.redirect"form_ingresar.asp"
end if
end if
end if%>

</body>
</html>

toda ayuda sirve....vale!
  #6 (permalink)  
Antiguo 07/02/2006, 09:06
Avatar de FiNo  
Fecha de Ingreso: octubre-2004
Ubicación: Costa Rica
Mensajes: 265
Antigüedad: 19 años, 8 meses
Puntos: 1
Buenas, deberias cambiar la palabra connection, y tu conexion quedaria algo asi:

Set oConn = Server.CreateObject ("ADODB.Connection")
oConn.Open "Driver={SQL Server};Server=3333;User Id=sa; password='xxx'".

Luego ejecutas el sql asi:

rs.Open sql, oConn
__________________
3S-CRM
  #7 (permalink)  
Antiguo 07/02/2006, 09:24
 
Fecha de Ingreso: febrero-2006
Mensajes: 98
Antigüedad: 18 años, 4 meses
Puntos: 0
[COLOR="Blue"]ke significan las ultimas letras y numeros????[/C OLOR]
  #8 (permalink)  
Antiguo 07/02/2006, 09:25
 
Fecha de Ingreso: febrero-2006
Mensajes: 98
Antigüedad: 18 años, 4 meses
Puntos: 0
No pasa nada.....
  #9 (permalink)  
Antiguo 07/02/2006, 09:29
 
Fecha de Ingreso: febrero-2006
Mensajes: 98
Antigüedad: 18 años, 4 meses
Puntos: 0
Toy usando un combobox en la parte de usuario y un textfield en contraseña...
el asunto tambien es ke si no escribo nada en la contraseña deberia redericcionar a la pagina inicial,pero no lo hace...les dejo el script de la pagina inicial:
<body>
<form method="post" action="validar.asp" name="form_ingresar">
<div align="center">
<p><img src="file:///C|/Documents%20and%20Settings/debora/Mis%20documentos/Mis%20imágenes/dddddddd.JPG" width="491" height="84">
</p>
<p>&nbsp;</p>
<p>&nbsp; </p>
</div>
<table width="265" border="0" cellspacing="0" cellpadding="0" height="84" align="center" style="BORDER: 1px solid black" bgcolor="#A5CDFA">
<tr align="center">
<td height="20" colspan="3" class="toolbar4"><strong>Iniciar Sesi&oacute;n</strong></td>
</tr>
<tr>
<td width="8" height="20">&nbsp;</td>
<td width="86" height="20" class="head"><div align="right"><strong>Nombre: </strong></div></td>
<td width="149" height="20">
<select name="usuario" size="1">
<option value="Abarca Carlos ">Abarca Carlos</option> </select>
</td>
</tr>
<tr>
<td width="8" height="20">&nbsp;</td>
<td width="86" height="20" class="head"><strong>Contrase&ntilde;a : </strong></td>
<td width="149" height="20">
<input type="password" name="contraseña" value="">
</td>
</tr>
</table>
<p>&nbsp;</p>
<p><br>
</p>
<div align="center"><input type="submit" name="Submit" value="Ingresar" style="BORDER: 1px solid #000000; background-color: #CCCCCC" onmouseover="this.style.cursor='hand';this.style.c ursor='pointer'"></div>

</form>
</body>
</html>

no sera que tal vez no este enviando los datos de un formulario a otro??...
me lo pueden confirmar y arreglar,GRACIAS
  #10 (permalink)  
Antiguo 07/02/2006, 10:05
Avatar de FiNo  
Fecha de Ingreso: octubre-2004
Ubicación: Costa Rica
Mensajes: 265
Antigüedad: 19 años, 8 meses
Puntos: 1
Intenta con esto:

<%
IF (Request.Form("contraseña") <> "") or (Request.Form("usuario") <> "") THen

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Mode = adModeReadWrite
Conn.Open "Driver={SQL Server};SERVER=10.1.1.1; DATABASE=TuBD;UID=usr;PWD=psw"

usuario = Request.Form("usuario")
pass = Request.Form("contraseña")

SQL = "SELECT pass FROM prueba WHERE usuario = '"&usuario&"' AND pass = '"&pass&"'"
Set rs = Conn.Execute(SQL)
If not rs.EOF THen
Response.Write("Bien?")
else
Response.Redirect("form_ingresar.asp")
End IF
End IF
%>
'-----Fin--------
__________________
3S-CRM
  #11 (permalink)  
Antiguo 07/02/2006, 11:41
 
Fecha de Ingreso: febrero-2006
Mensajes: 98
Antigüedad: 18 años, 4 meses
Puntos: 0
buuu...se me borro.
muchas gracias por tus consejo FiNO...
lo voy a aplicar.
te cuento si no funciona,muchas gracias!!!!
  #12 (permalink)  
Antiguo 07/02/2006, 12:50
 
Fecha de Ingreso: febrero-2006
Mensajes: 98
Antigüedad: 18 años, 4 meses
Puntos: 0
Nop...no Funciona no se ke onda?!!!
  #13 (permalink)  
Antiguo 07/02/2006, 13:31
Avatar de FiNo  
Fecha de Ingreso: octubre-2004
Ubicación: Costa Rica
Mensajes: 265
Antigüedad: 19 años, 8 meses
Puntos: 1
y ahora porque no funciona?
__________________
3S-CRM
  #14 (permalink)  
Antiguo 07/02/2006, 13:47
 
Fecha de Ingreso: febrero-2006
Mensajes: 98
Antigüedad: 18 años, 4 meses
Puntos: 0
No me muestra nada...si hay no ingreso nada no sale el mensaje,si ingreso mal no sale el mensaje.simplemente del "form_ingresar.asp" cuando lo envio al "validar.asp"me muestra una pantalla en blanco...kreo ke tengo problemas con las lectura en la base de datos...realmente no lo se..son especulaciones mias.Ademas probe otro y tampoko funciona...y tengo la base de datos,tengo el archivo CON datos.no se porke mierda no lo hace!
  #15 (permalink)  
Antiguo 07/02/2006, 17:00
Avatar de a n g e l u s  
Fecha de Ingreso: enero-2006
Ubicación: Chile
Mensajes: 237
Antigüedad: 18 años, 5 meses
Puntos: 1
Sonrisa un aporte

<%
'mmm por lo genera me evito de utlizar caracteres complicados como la Ñ
'asi que dejemoslo como contrasena mejor!!!

IF (Request("contrasena") <> "") or (Request("usuario") <> "") THen

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Mode = adModeReadWrite
Conn.Open "Driver={SQL Server};SERVER=10.1.1.1; DATABASE=TuBD;UID=usr;PWD=psw"

'------ayuda para el sql injection
'puedes buscar unas funciones muy buenas con respecto a sqlinjection

usuario = replace(Request("usuario"),"'","")
pass = replace(Request("contrasena"),"'","")


SQL = "SELECT pass FROM prueba WHERE usuario = '"&usuario&"' AND pass = '"&pass&"'"

' como no esta funcionando tu programa pon esto y en el foro colocas el error
on error resume next
Set rs = Conn.Execute(SQL)

if err <> 0 then
response.write("Debora se ha producido el siguente error : <br>"&err.description)

else
If not rs.EOF THen
Response.Write("Bien?")
else
'-> Vamos a decirle al usuario que se equivoco para que se de cta que la pag esta funcionando
session("msn") = "Sus datos no son correctos<br>Intente Nuevamente"
'en debajo del tu form coloca <% = session("msn") y cierras
Response.Redirect("form_ingresar.asp")
End IF

end if '->fin de control de error
End IF
%>
__________________
Atte,
A n g e l u s
Concepción - Chile
más vale respuestas bien pensadas, que 7000 post
  #16 (permalink)  
Antiguo 08/02/2006, 07:36
 
Fecha de Ingreso: febrero-2006
Mensajes: 98
Antigüedad: 18 años, 4 meses
Puntos: 0
Lo intente...No funciono!.Ni siquiera muestra el error.
  #17 (permalink)  
Antiguo 08/02/2006, 08:24
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
La pantalla en blanco es claro que no tiene nada que ver con el código asp, normalmente es por que no ejecutó absolutamente nada.

Lo que tienes que hacer para "debuguear" es lo siguiente:

1) Lo primero es ir a opciones avanzadas del IE y desmarcar "mostrar errores descriptivos de HTTP", esto es para que veas errores de asp en lugar de un error 500.
2) Cuando te muestre una pantalla en blanco, primero debes ver el código generado (ya sabes, botón derecho->ver código) si no te genero nada de lo esperado, es por alguno de los if's que tienes.
3) Debes ir corriendo por partes tu código, esto significa que debes de colocar la cláusula response.end justo antes de partes críticas del código, en tu caso, igual primero antes de los if's y luego dentro de las opciones junto con desplegados, por ejemplo:

Tu tienes esto:

Cita:
if request.form("usuario")="" or request.form("contraseña") then
response.Redirect"form_ingresar.asp"
else
usuario=trim(request.form("usuario"))
.....
Deberías primero hacer esto:
Cita:
response.write "usuario: " & request.form("usuario") & "<br>"
response.write "pasword: " & request.form("contraseña") & "<br>"
response.end

if request.form("usuario")="" or request.form("contraseña") then
response.Redirect"form_ingresar.asp"
else
usuario=trim(request.form("usuario"))
...
luego de verificar los valores que llegan a la página, quitas esas tres lineas y las colocas dentro del IF y dentro del ELSE para ver por donde se fue la ejecución del programa, y así sucesivamente.

Pese a que se te puede hacer engorrosa esta operación, el hacer esto, es infinitamente más rápido que esperar que alguien desde internet te resuelva el problema. Ok, los compañeros estan tratando de ayudar y seguramente alguien le atinará, pero seguro luegotendras otros problemas y se aprendes a sacar tu sola los errores, terminarás antes tus tareas.

Saludos
  #18 (permalink)  
Antiguo 08/02/2006, 08:56
 
Fecha de Ingreso: febrero-2006
Mensajes: 98
Antigüedad: 18 años, 4 meses
Puntos: 0
muchas gracias...
soy novata en todo esto,¿no se nota?.

En fin,se hace lo ke puede no mas...
muchas garcias a todos las ayudas ke me han dado.
  #19 (permalink)  
Antiguo 08/02/2006, 08:59
 
Fecha de Ingreso: febrero-2006
Mensajes: 98
Antigüedad: 18 años, 4 meses
Puntos: 0
Sorry otra pregunta,¿donde keda IE?
asunto errores)
  #20 (permalink)  
Antiguo 08/02/2006, 11:47
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
IE = Internet Explorer
  #21 (permalink)  
Antiguo 08/02/2006, 12:41
Avatar de a n g e l u s  
Fecha de Ingreso: enero-2006
Ubicación: Chile
Mensajes: 237
Antigüedad: 18 años, 5 meses
Puntos: 1
uff... :)

agrega esto tambien al codigo antes de los if
response.write " "
response.flush()

esto mostrara lo ultimo que se ejecuto en tu codigo.

pd. porque no subes tu codigo para revisarlo mejor... :). y das detalles mas completos de tu proyecto, quizas nos das una idea mas macro y compartamos algun codigo que nosotros ya tenemos y partimos de 0.
__________________
Atte,
A n g e l u s
Concepción - Chile
más vale respuestas bien pensadas, que 7000 post
  #22 (permalink)  
Antiguo 08/02/2006, 12:58
 
Fecha de Ingreso: febrero-2006
Mensajes: 98
Antigüedad: 18 años, 4 meses
Puntos: 0
El codigo ya lo subi...
Lo ke intento hacer es en esta parte la pagina de "login" del usuario.
uso en el usuario id komo nombre (el kual es unico)...esos nombres los muestro en un combobox,ke se supone es llenado kon los datos de la base de datos (ke se llama trabajo...en sql server),el archivo se llama "usuario"
kon este codigo :
<SELECT NAME="personal"> <%do while not rs.eof
nombre = rs("describ")%> <OPTION VALUE="<%=nombre%>"><%=nombre%></OPTION>
<%rs.movenext
loop %> </SELECT>
El asunto es ke no me llena el combobox (antes habia hecho un ejercicio y si lo llenaba) y tuve ke llenar "manualmente" el combobox.

Ahora kiero validar ke el nombre ke selecciono el usuario (ke se encuentra en el combobox) y la contraseña (en un textfield) sea correcta.
tengo un formulario ke se llama "form_ingresar.asp"ke muestra la pantalla inicial (donde sale el combobox y el textfield) y otro formulario ke se llama "validar.asp".ke se supone me deberia,valga la redundancia validar los datos ke el usuario ingreso,el problema es ke el ultimo formulario mencionado no me muestra absolutamente nada....ni sikiera los response.write ("hola") ke le hago antes de entrar en los "if"....
eso es todo
ya pegue el codigo (esta mas arriba),el primero es el de validar y el segundo de form_ingresar.asp..
eso...
ese es todo mi problema.
I Need Help!!!!!!!
  #23 (permalink)  
Antiguo 08/02/2006, 13:19
Avatar de a n g e l u s  
Fecha de Ingreso: enero-2006
Ubicación: Chile
Mensajes: 237
Antigüedad: 18 años, 5 meses
Puntos: 1
mmm...

no se si hoy ando medio lento para mis respuestas o definitivamente no te estoy captando la idea.

1.- haces un <select> para mostrar todos los usuarios registrados en tu sistema y que solo ingresen la contraseña!!! ( no te lo recomiendo para nada ).

solucion (espero que sea buena para ti ).

<body>

<!--- PRIMERA PARTE EL FORMULARIO --->
<form method="get" action="default.asp">
Login <input type="text" name="login" size="20"><br>
Clave<input type="password" name="pws" size="20"><br>
<%=session("msn")%><br>
<input type="submit" value="Enviar" name="B1">
</form>

<%
'--- SEGUNDA PARTE RECEPCION DE LA INFORMACION ----
if request("login") <> "" or request("pws") <> "" then

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Mode = adModeReadWrite
Conn.Open "Driver={SQL Server};SERVER=10.1.1.1; DATABASE=TuBD;UID=usr;PWD=psw"

'------ayuda para el sql injection
'puedes buscar unas funciones muy buenas con respecto a sqlinjection

usuario = replace(Request("usuario"),"'","")
pass = replace(Request("pws"),"'","")

response.write "usuario :" & usuario &"<br> clave"& pass

SQL = "SELECT pass FROM prueba WHERE usuario = '"&usuario&"' AND pass = '"&pass&"'"

' como no esta funcionando tu programa pon esto y en el foro colocas el error
on error resume next
Set rs = Conn.Execute(SQL)

if err <> 0 then
response.write("Debora se ha producido el siguente error : <br>"&err.description)

else
If not rs.EOF THen
Response.Write("Bien?")
else
'-> Vamos a decirle al usuario que se equivoco para que se de cta que la pag esta funcionando
session("msn") = "Sus datos no son correctos<br>Intente Nuevamente"
Response.Redirect("default.asp")
End IF

end if '->fin de control de error
End IF
%>


end if
%>

</body>
__________________
Atte,
A n g e l u s
Concepción - Chile
más vale respuestas bien pensadas, que 7000 post
  #24 (permalink)  
Antiguo 08/02/2006, 13:29
Avatar de a n g e l u s  
Fecha de Ingreso: enero-2006
Ubicación: Chile
Mensajes: 237
Antigüedad: 18 años, 5 meses
Puntos: 1
OTRA COSA IMPORTANTISIMA...

BORRA TODO LOS ARCHIVOS TEMPORALES Y LIMPIA LA CACHE...

COMO SE HACE.

EN EL INTERNET EXPLORER ELIGE EN LA BARRA DE MENU LA OPCION HERRAMIENTAS LUEGO DENTRO DE LAS OPCIONES QUE SE DESPLIEGEN LA OPCION "OPCIONES DE INTERNET", SE VA A DESPLEGAR UNA PANTALLA CON DISTINTAS PREFERENCIAS. PRESIONA EL BOTON QUE DICE ELIMINAR COOKIES Y ESPERA QUE SE REALIZE EL PROCESO. LUEGO ELIMINAR ARCHIVOS Y ESPERAS QUE SE COMPLETE EL PROCESO.

Y SI QUIERES APAGA EL PC ESPERAS 10 SEG Y LO ENCIENDES DE NUEVO.

Y COMIENZA A PROGRAMAR.

PREGUNTA...
COMO ACCEDES AL SISTEMA
POR EL INTERNET EXPLORER http://localhost/misistema/default.asp
O DE OTRA MANERA...

PD. VAMOS QUE SE PUEDE...
__________________
Atte,
A n g e l u s
Concepción - Chile
más vale respuestas bien pensadas, que 7000 post
  #25 (permalink)  
Antiguo 08/02/2006, 14:34
 
Fecha de Ingreso: febrero-2006
Mensajes: 98
Antigüedad: 18 años, 4 meses
Puntos: 0
Vale...per lo otro ke me escribiste...lo hice y no me funciono.
  #26 (permalink)  
Antiguo 08/02/2006, 15:15
Avatar de FiNo  
Fecha de Ingreso: octubre-2004
Ubicación: Costa Rica
Mensajes: 265
Antigüedad: 19 años, 8 meses
Puntos: 1
http://www.soloasp.com.ar/vereje.asp?eje=5
__________________
3S-CRM
  #27 (permalink)  
Antiguo 08/02/2006, 15:15
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
¿ya empezaste a debuguear?

pusiste muy escondido entre el tipo de letra, el color y la redacción:
Cita:
,el problema es ke el ultimo formulario mencionado no me muestra absolutamente nada....ni sikiera los response.write ("hola") ke le hago antes de entrar en los "if"....
Entonces hay que subir los mensajes y el response.end más arriba hasta encontrar el problema, claro siempre verificando el código HTML resultante (ver código).

La página en blanco que mencionas ¿que URL tiene el navegador cuendo esta en ella? ¿ya verificaste que coincidan los response.redirect con el action del formulario?
  #28 (permalink)  
Antiguo 08/02/2006, 15:47
 
Fecha de Ingreso: febrero-2006
Mensajes: 98
Antigüedad: 18 años, 4 meses
Puntos: 0
si coincide...todavia nodegueo.
komo se hacía?
de donde saco el response.end?
  #29 (permalink)  
Antiguo 08/02/2006, 15:49
 
Fecha de Ingreso: febrero-2006
Mensajes: 98
Antigüedad: 18 años, 4 meses
Puntos: 0
El link ke escribieron un pokito mas arriba...
lo probe y no me funciono.
he estado una semana pegada,fija en el San Google ke no me esta "cumpliendo la manda"...jejeje
  #30 (permalink)  
Antiguo 08/02/2006, 16:52
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Ese es el problema, que estas pegada a "San Google", debías estar pegada a tu página probando y probando, d e b u g u e a n d o.

Cita:
si coincide...todavia nodegueo.
komo se hacía?
http://www.forosdelweb.com/showpost....6&postcount=17

Cita:
de donde saco el response.end?
El objeto response como tal tiene varios métodos (Buffer, End, Flush, Redirect, etc.) que sirven para propósitos específicos. Response.End sirve para detener la ejecución del código ASP y hacer un Response.Flush implícito, esto es envíar el código generado al cliente.

Saludos
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 23:34.