problema con login en asp y sql

20/02/2004 - 16:33 por Laura | Informe spam
estoy haciendo un login con el siguiente codigo:

<%
user=Request.Form("user")
pass=Request.Form("pass")
'response.Write(user)
'response.Write(pass)

'
Set CONN = Server.CreateObject("ADODB.Connection")
Conn.open "base","",""
'
Dim Recordset1
Dim Recordset1_numRows

Set Recordset1 = Server.CreateObject("ADODB.Recordset")
Recordset1.ActiveConnection = "tabla"
Recordset1.Source = "SELECT * FROM dbo.tabla WHERE usuario = '" & user &"'
AND clave = '" & pass &"'"
Recordset1.CursorType = 0
Recordset1.CursorLocation = 2
Recordset1.LockType = 1
Recordset1.Open()

cantidad = recordset1.recordcount
response.Write("La cantidad de registros es: ")
response.write(cantidad)

If Recordset1.RecordCount = 1 Then
' Session("sesion")=1
' Session("id")=rs.Fields("iduser").Value
' rs.Close
' Set rs = Nothing
' conn.Close
' Set conn = Nothing
'Response.Redirect(pagina.asp)
response.Write("logueado")
Else
' rs.Close
' Set rs = Nothing
' conn.Close
' Set conn = Nothing
' error="1"
' Response.Redirect("login.asp")
response.Write("no logueado")
End If


%>
<%
Recordset1.Close()
Set Recordset1 = Nothing
conn.Close
Set conn = Nothing
%>
Lo estoy armando con ayuda de macromedia dreamweaver, pero el problema es
que si pongo el usuario y la contraseña bien, el recordcount da -1 y me dice
"no logueado". Si los pongo mal, directamente no carga la pàgina.

Tambien cree dos registros iguales en la tabla y el recordset sigue
dando -1.

Estoy desde ayer y ya no se que hacer. Algun consejo??

Preguntas similare

Leer las respuestas

#1 Maximiliano D. A.
20/02/2004 - 16:43 | Informe spam
Hola Lau, ese problema no es de SqlServer sino de como estas haciendo el
Recordset, revisa muy bien el tipo de cursor que estas usando y el tipo de
Bloqueo,

Proba usar OpenSnapshot, seguro que estas usando Opendynaset


Salu2
Maxi
Buenos Aires Argentina
Desarrollador Microsoft 3 Estrellas .NET
[Maxi_accotto[arroba]speedy[punto]com[punto]ar
MSN:


"Laura" escribió en el mensaje
news:%
estoy haciendo un login con el siguiente codigo:

<%
user=Request.Form("user")
pass=Request.Form("pass")
'response.Write(user)
'response.Write(pass)

'
Set CONN = Server.CreateObject("ADODB.Connection")
Conn.open "base","",""
'
Dim Recordset1
Dim Recordset1_numRows

Set Recordset1 = Server.CreateObject("ADODB.Recordset")
Recordset1.ActiveConnection = "tabla"
Recordset1.Source = "SELECT * FROM dbo.tabla WHERE usuario = '" & user


&"'
AND clave = '" & pass &"'"
Recordset1.CursorType = 0
Recordset1.CursorLocation = 2
Recordset1.LockType = 1
Recordset1.Open()

cantidad = recordset1.recordcount
response.Write("La cantidad de registros es: ")
response.write(cantidad)

If Recordset1.RecordCount = 1 Then
' Session("sesion")=1
' Session("id")=rs.Fields("iduser").Value
' rs.Close
' Set rs = Nothing
' conn.Close
' Set conn = Nothing
'Response.Redirect(pagina.asp)
response.Write("logueado")
Else
' rs.Close
' Set rs = Nothing
' conn.Close
' Set conn = Nothing
' error="1"
' Response.Redirect("login.asp")
response.Write("no logueado")
End If


%>
<%
Recordset1.Close()
Set Recordset1 = Nothing
conn.Close
Set conn = Nothing
%>
Lo estoy armando con ayuda de macromedia dreamweaver, pero el problema es
que si pongo el usuario y la contraseña bien, el recordcount da -1 y me


dice
"no logueado". Si los pongo mal, directamente no carga la pàgina.

Tambien cree dos registros iguales en la tabla y el recordset sigue
dando -1.

Estoy desde ayer y ya no se que hacer. Algun consejo??







Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.581 / Virus Database: 368 - Release Date: 10/02/2004
Respuesta Responder a este mensaje
#2 Gustavo \The Wolf\ Cantero
20/02/2004 - 16:43 | Informe spam
Laura:
Para hacer esto deberias poner el CursorType en 3 (OpenStatic) y el
CursorLocation en 3 (UseClient). De todas formas creo que la mejor manera
de hacer esto sería usar la siguiente instrucción: "SELECT Count(*) FROM
dbo.tabla WHERE usuario = '" & user &"'
AND clave = '" & pass &"'" y fijarse el valor del único campo devuelto, el


cual te va a dar la cantidad de registros que coinciden.
Suerte!

Gustavo Cantero
Microsoft Certified Solution Developer


"Laura" escribió en el mensaje
news:%
estoy haciendo un login con el siguiente codigo:

<%
user=Request.Form("user")
pass=Request.Form("pass")
'response.Write(user)
'response.Write(pass)

'
Set CONN = Server.CreateObject("ADODB.Connection")
Conn.open "base","",""
'
Dim Recordset1
Dim Recordset1_numRows

Set Recordset1 = Server.CreateObject("ADODB.Recordset")
Recordset1.ActiveConnection = "tabla"
Recordset1.Source = "SELECT * FROM dbo.tabla WHERE usuario = '" & user


&"'
AND clave = '" & pass &"'"
Recordset1.CursorType = 0
Recordset1.CursorLocation = 2
Recordset1.LockType = 1
Recordset1.Open()

cantidad = recordset1.recordcount
response.Write("La cantidad de registros es: ")
response.write(cantidad)

If Recordset1.RecordCount = 1 Then
' Session("sesion")=1
' Session("id")=rs.Fields("iduser").Value
' rs.Close
' Set rs = Nothing
' conn.Close
' Set conn = Nothing
'Response.Redirect(pagina.asp)
response.Write("logueado")
Else
' rs.Close
' Set rs = Nothing
' conn.Close
' Set conn = Nothing
' error="1"
' Response.Redirect("login.asp")
response.Write("no logueado")
End If


%>
<%
Recordset1.Close()
Set Recordset1 = Nothing
conn.Close
Set conn = Nothing
%>
Lo estoy armando con ayuda de macromedia dreamweaver, pero el problema es
que si pongo el usuario y la contraseña bien, el recordcount da -1 y me


dice
"no logueado". Si los pongo mal, directamente no carga la pàgina.

Tambien cree dos registros iguales en la tabla y el recordset sigue
dando -1.

Estoy desde ayer y ya no se que hacer. Algun consejo??


Respuesta Responder a este mensaje
#3 Laura
20/02/2004 - 17:00 | Informe spam
GRACIAS, CON ESO LO SOLUCIONE!!

"Gustavo "The Wolf" Cantero" escribió en el mensaje
news:
Laura:
Para hacer esto deberias poner el CursorType en 3 (OpenStatic) y el
CursorLocation en 3 (UseClient). De todas formas creo que la mejor manera
de hacer esto sería usar la siguiente instrucción: "SELECT Count(*) FROM
dbo.tabla WHERE usuario = '" & user &"'
> AND clave = '" & pass &"'" y fijarse el valor del único campo devuelto,


el
cual te va a dar la cantidad de registros que coinciden.
Suerte!

Gustavo Cantero
Microsoft Certified Solution Developer


"Laura" escribió en el mensaje
news:%
> estoy haciendo un login con el siguiente codigo:
>
> <%
> user=Request.Form("user")
> pass=Request.Form("pass")
> 'response.Write(user)
> 'response.Write(pass)
>
> '
> Set CONN = Server.CreateObject("ADODB.Connection")
> Conn.open "base","",""
> '
> Dim Recordset1
> Dim Recordset1_numRows
>
> Set Recordset1 = Server.CreateObject("ADODB.Recordset")
> Recordset1.ActiveConnection = "tabla"
> Recordset1.Source = "SELECT * FROM dbo.tabla WHERE usuario = '" & user
&"'
> AND clave = '" & pass &"'"
> Recordset1.CursorType = 0
> Recordset1.CursorLocation = 2
> Recordset1.LockType = 1
> Recordset1.Open()
>
> cantidad = recordset1.recordcount
> response.Write("La cantidad de registros es: ")
> response.write(cantidad)
>
> If Recordset1.RecordCount = 1 Then
> ' Session("sesion")=1
> ' Session("id")=rs.Fields("iduser").Value
> ' rs.Close
> ' Set rs = Nothing
> ' conn.Close
> ' Set conn = Nothing
> 'Response.Redirect(pagina.asp)
> response.Write("logueado")
> Else
> ' rs.Close
> ' Set rs = Nothing
> ' conn.Close
> ' Set conn = Nothing
> ' error="1"
> ' Response.Redirect("login.asp")
> response.Write("no logueado")
> End If
>
>
> %>
> <%
> Recordset1.Close()
> Set Recordset1 = Nothing
> conn.Close
> Set conn = Nothing
> %>
> Lo estoy armando con ayuda de macromedia dreamweaver, pero el problema


es
> que si pongo el usuario y la contraseña bien, el recordcount da -1 y me
dice
> "no logueado". Si los pongo mal, directamente no carga la pàgina.
>
> Tambien cree dos registros iguales en la tabla y el recordset sigue
> dando -1.
>
> Estoy desde ayer y ya no se que hacer. Algun consejo??
>
>


Respuesta Responder a este mensaje
#4 Manuel Etcheto
20/02/2004 - 21:05 | Informe spam
Laura:
Ejecutar sql con datos que ingresa el usuario es algo que
NO deberías hacer nunca (aunque te haya funcionado...)

El usuario del asp podría hacer/destruir todo lo que en tu
SQL Server tenga autorizado el user de la conexión...

Imagina que en user ingresa aa' OR 1 = 1 --
Todos los registros van a cumplir la condición porque
despues está comentada...
Y también podría agregar DELETE, UPDATE, DROP, etc. etc,
está lleno de ejemplos de inyección sql por ahí..

La solución sería stored procedures y parametros
Y que el usuario con que se conecta asp no tenga ningún
permiso sobre las tablas, solo sobre los stored...

Y si no, al menos, Command con parametros, que no solo es
seguro sino también más rápido

Si necesitas un dato, como el idUser o la cantidad de
registros tenés los parámetros de salida y el valor de
retorno, no un Recordset y encima del lado cliente que es
el objeto más "pesado" que puede tener ADO.

Suerte
Manuel

GRACIAS, CON ESO LO SOLUCIONE!!

"Gustavo "The Wolf" Cantero"


escribió en el mensaje
news:
Laura:
Para hacer esto deberias poner el CursorType en 3




(OpenStatic) y el
CursorLocation en 3 (UseClient). De todas formas creo




que la mejor manera
de hacer esto sería usar la siguiente




instrucción: "SELECT Count(*) FROM
dbo.tabla WHERE usuario = '" & user &"'
> AND clave = '" & pass &"'" y fijarse el valor del




único campo devuelto,
el
cual te va a dar la cantidad de registros que coinciden.
Suerte!

Gustavo Cantero
Microsoft Certified Solution Developer


"Laura" escribió en el




mensaje
news:%
> estoy haciendo un login con el siguiente codigo:
>
> <%
> user=Request.Form("user")
> pass=Request.Form("pass")
> 'response.Write(user)
> 'response.Write(pass)
>
> '
> Set CONN = Server.CreateObject("ADODB.Connection")
> Conn.open "base","",""
> '
> Dim Recordset1
> Dim Recordset1_numRows
>
> Set Recordset1 = Server.CreateObject




("ADODB.Recordset")
> Recordset1.ActiveConnection = "tabla"
> Recordset1.Source = "SELECT * FROM dbo.tabla WHERE




usuario = '" & user
&"'
> AND clave = '" & pass &"'"
> Recordset1.CursorType = 0
> Recordset1.CursorLocation = 2
> Recordset1.LockType = 1
> Recordset1.Open()
>
> cantidad = recordset1.recordcount
> response.Write("La cantidad de registros es: ")
> response.write(cantidad)
>
> If Recordset1.RecordCount = 1 Then
> ' Session("sesion")=1
> ' Session("id")=rs.Fields("iduser").Value
> ' rs.Close
> ' Set rs = Nothing
> ' conn.Close
> ' Set conn = Nothing
> 'Response.Redirect(pagina.asp)
> response.Write("logueado")
> Else
> ' rs.Close
> ' Set rs = Nothing
> ' conn.Close
> ' Set conn = Nothing
> ' error="1"
> ' Response.Redirect("login.asp")
> response.Write("no logueado")
> End If
>
>
> %>
> <%
> Recordset1.Close()
> Set Recordset1 = Nothing
> conn.Close
> Set conn = Nothing
> %>
> Lo estoy armando con ayuda de macromedia dreamweaver,




pero el problema
es
> que si pongo el usuario y la contraseña bien, el




recordcount da -1 y me
dice
> "no logueado". Si los pongo mal, directamente no




carga la pàgina.
>
> Tambien cree dos registros iguales en la tabla y el




recordset sigue
> dando -1.
>
> Estoy desde ayer y ya no se que hacer. Algun consejo??
>
>






.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida