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

Qué hago mal?

Estas en el tema de Qué hago mal? en el foro de ASP Clásico en Foros del Web. Estoy intentando hacer una página en asp que recoga unas variables que le llegan via flash, las recoja, compruebe una base de datos y me ...
  #1 (permalink)  
Antiguo 10/05/2007, 09:11
 
Fecha de Ingreso: julio-2002
Mensajes: 195
Antigüedad: 22 años, 8 meses
Puntos: 0
Qué hago mal?

Estoy intentando hacer una página en asp que recoga unas variables que le llegan via flash, las recoja, compruebe una base de datos y me de un resultado, pero no me sale, siempre da sólo el resultado "si". Me podeis ayudar???
Este es el código:

<%@ Language=VBScript %>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
</HEAD>
<BODY background="">
<%On Error resume next%>
<%
'----------------------- XML
dim fso, archivo
Set fso = createobject("scripting.filesystemobject")
Set archivo = fso.CreateTextFile(Server.MapPath("siono.xml"), True)
archivo.WriteLine("<resultado>")
'----------------------- XML

'Creación de la conexion
set conexion = CreateObject("ADODB.Connection")
conexion.connectionString = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("noticias/datos/ofertas.mdb")
conexion.connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= "& Server.MapPath("noticias/datos/ofertas.mdb") &";Persist Security Info=False"
conexion.Open
'Creacion del recordset
set fila =CreateObject("ADODB.RecordSet")

ls_select = "Select * from descarga"
fila.Open ls_select, conexion,1,3

conexion.BeginTrans


usuario = Request("user")
contra = Request("pass")


for i = 0 to fila.MaxRecords()
if usuario = fila(i) then
if contra = fila(i) then
encontrado = true
return
else
encontrado = false
mensaje = "El password es incorrecto"
end if
else
encontrado = false
mensaje = "Usuario inexistente"
end if
next


if not encontrado then
archivo.WriteLine("no")
else
archivo.WriteLine("si")
end if

%>

</BODY>
</HTML>
__________________
EL conocimiento es la base del poder
  #2 (permalink)  
Antiguo 10/05/2007, 15:36
Avatar de CésarBalaguer  
Fecha de Ingreso: octubre-2006
Ubicación: en mi casa
Mensajes: 181
Antigüedad: 18 años, 5 meses
Puntos: 0
Re: Qué hago mal?

resumiendo:

Cita:
ls_select = "Select * from descarga"
fila.Open ls_select, conexion,1,3

conexion.BeginTrans
para hacer un select no necesitas usar una transacción, estas se utilizan únicamente en INSERT, UPDATE o DELETE; por otro lado, estas haciendo un select * from descarga cuando de ahí únicamente requieres dos columnas, eso significa que estas recargando la memoria de manera innecesaria.

Cita:
for i = 0 to fila.MaxRecords()
if usuario = fila(i) then
if contra = fila(i) then
encontrado = true
return
else
encontrado = false
mensaje = "El password es incorrecto"
end if
else
encontrado = false
mensaje = "Usuario inexistente"
end if
next
esta no es la mejor manera de hacer un recorrido a un cursor devuelto en un recordset, por otro lado tu evaluaciòn usuario = fila(i) de por si esta mal, lo que va entre paréntesis es el número de columna mientras en tu variable i tienes el número de fila.

recomendación:
1. borra el begintransaction que por cierto no cierras en ningún lado.
2. tu query no lo hagas con SELECT * sino SELECT columna1, columna2 FROM dependiendo de las columnas que requieras y cuales requieras.
3. no hagas un recorrido a tu recordset no lo necesitarias si a tu SELECT le agregaras la cláusula WHERE de esta manera
ls_select = "SELECT count(*) FROM descarga WHERE columna1='" & usuario & "' AND columna2='" & contra & "'" (claro esta, con los nombres de columna)que tenga tu tabla.
encontrado = false
fila.Open ls_select, conexion,1,3
if not fila.EOF then

if not isnull(fila(0)) then

if cint(fila(0))>0 then
encontrado = true
end if
end if
end if
para que esto funcione tus Request deben estar antes de crear tu query.
  #3 (permalink)  
Antiguo 11/05/2007, 02:32
 
Fecha de Ingreso: julio-2002
Mensajes: 195
Antigüedad: 22 años, 8 meses
Puntos: 0
Re: Qué hago mal?

Muchas gracias, voy a hacer los cambios que me comentas y ya te diré si consigo que funcione todo.
Muchísimas gracias
__________________
EL conocimiento es la base del poder
  #4 (permalink)  
Antiguo 12/05/2007, 01:05
 
Fecha de Ingreso: julio-2002
Mensajes: 195
Antigüedad: 22 años, 8 meses
Puntos: 0
Re: Qué hago mal?

Cesar, creo que he hecho los cambios que me has comentado (dentro de lo mal que controlo el ASP), pero me sigue dando siempre el resultado positivo, escriba lo que escriba de usuario y contraseña. Te pongo el código rectificado con tus indicaciones, a ver si lo he hecho bien. Muchas gracias de antemano por tu paciencia.

<%@ Language=VBScript %>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
</HEAD>
<BODY background="">
<%On Error resume next%>
<%
'----------------------- XML
dim fso, archivo
Set fso = createobject("scripting.filesystemobject")
Set archivo = fso.CreateTextFile(Server.MapPath("siono.xml"), True)

'----------------------- XML

'Creación de la conexion
set conexion = CreateObject("ADODB.Connection")
conexion.connectionString = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("noticias/datos/ofertas.mdb")
conexion.connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= "& Server.MapPath("noticias/datos/ofertas.mdb") &";Persist Security Info=False"
conexion.Open
'Creacion del recordset
set fila =CreateObject("ADODB.RecordSet")

ls_select = "SELECT count(*) FROM descarga WHERE usuario="& usuario&" AND contra="&contra&""
encontrado = false
fila.Open ls_select, conexion,1,3

usuario = Request("user")
contra = Request("pass")

if not fila.EOF then
if not isnull(fila(0)) then
if cint(fila(0))>0 then
encontrado = true
end if
end if
end if

if not encontrado then
archivo.WriteLine("<resultado ok=no>")
else
archivo.WriteLine("<resultado ok=si>")
end if

%>

</BODY>
</HTML>
__________________
EL conocimiento es la base del poder
  #5 (permalink)  
Antiguo 14/05/2007, 09:28
 
Fecha de Ingreso: julio-2002
Mensajes: 195
Antigüedad: 22 años, 8 meses
Puntos: 0
Re: Qué hago mal?

Sigo sin conseguir que esto funcione, y me estoy volviendo loco. Alguien me peude decir si el código que he escrito está bien, y por qué siempre devuelve el mismo resultado???
__________________
EL conocimiento es la base del poder
  #6 (permalink)  
Antiguo 14/05/2007, 12:24
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 2 meses
Puntos: 146
Re: Qué hago mal?

Quita esta linea y córrelo de nuevo, lo mas seguro es que te esta tronando en algún lado

<%On Error resume next%>
  #7 (permalink)  
Antiguo 14/05/2007, 17:22
Avatar de CésarBalaguer  
Fecha de Ingreso: octubre-2006
Ubicación: en mi casa
Mensajes: 181
Antigüedad: 18 años, 5 meses
Puntos: 0
Re: Qué hago mal?

pon los request antes de armar tu select.

Cita:
ls_select = "SELECT count(*) FROM descarga WHERE usuario="& usuario&" AND contra="&contra&""
encontrado = false
fila.Open ls_select, conexion,1,3

usuario = Request("user")
contra = Request("pass")
si te das cuenta usas las variables usuario y contra antes que asuman el valor del paràmetro, por otro lado, usuario y contra deben ser alfanumèricos por lo que deberìan ir comillas simples en el query, intenta cambiando esa parte de esta manera:

Cita:
usuario = Request("user")
contra = Request("pass")
ls_select = "SELECT count(*) FROM descarga WHERE usuario='" & usuario & "' AND contra='" & contra & "'"
encontrado = false
fila.Open ls_select, conexion,1,3
  #8 (permalink)  
Antiguo 16/05/2007, 08:16
 
Fecha de Ingreso: julio-2002
Mensajes: 195
Antigüedad: 22 años, 8 meses
Puntos: 0
Re: Qué hago mal?

He quitado lo de <%On Error resume next%> y efectivamente me daba un error en la sintaxis del ls_select.
Lo he corregido tal y como me has dicho, César, y ahora lo que pasa es que la respuesta en vez de ser siempre si, es siempre no. Sigo haciendo algo mal y no sé el qué.
Para ver si el asp recoge bien los datos, he puesto esto:
archivo.WriteLine("El usuario es "& usuario &"")
y el xml no devuelve el valor de la variable usuario, sólo escribe El usuario es.

Éstoy casi seguro de que todo el problema es de sintaxis, pero no me sale.
Vuelvo a postear todo el asp, a ver si encontrais el fallo.
__________________
EL conocimiento es la base del poder
  #9 (permalink)  
Antiguo 16/05/2007, 10:02
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 2 meses
Puntos: 146
Re: Qué hago mal?

Cita:
Vuelvo a postear todo el asp, a ver si encontrais el fallo.
Pues a ver .... como tienes actualmente ese programa?, a ver
  #10 (permalink)  
Antiguo 17/05/2007, 10:35
 
Fecha de Ingreso: julio-2002
Mensajes: 195
Antigüedad: 22 años, 8 meses
Puntos: 0
Re: Qué hago mal?

<%@ Language=VBScript %>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
</HEAD>
<BODY background="">

<%
'----------------------- XML
dim fso, archivo
Set fso = createobject("scripting.filesystemobject")
Set archivo = fso.CreateTextFile(Server.MapPath("siono.xml"), True)

'----------------------- XML

'Creación de la conexion
set conexion = CreateObject("ADODB.Connection")
conexion.connectionString = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("noticias/datos/ofertas.mdb")
conexion.connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= "& Server.MapPath("noticias/datos/ofertas.mdb") &";Persist Security Info=False"
conexion.Open
'Creacion del recordset
set fila =CreateObject("ADODB.RecordSet")

usuario = Request("user")
contra = Request("pass")

ls_select = "SELECT count(*) FROM descarga WHERE usuario='" & usuario & "' AND contra='" & contra &"'"
encontrado = false
fila.Open ls_select, conexion,1,3

if not fila.EOF then
if not isnull(fila(0)) then
if cint(fila(0))>0 then
encontrado = true
archivo.WriteLine("<si>")
archivo.WriteLine("El usuario es "& usuario &"")
else
archivo.WriteLine("<no>")
archivo.WriteLine("El usuario es "& usuario &"")
end if
end if
end if


'if not encontrado then
' archivo.WriteLine("<resultado ok=no>")
'else
' archivo.WriteLine("<resultado ok=si>")
'end if

%>

</BODY>
</HTML>
__________________
EL conocimiento es la base del poder
  #11 (permalink)  
Antiguo 17/05/2007, 11:23
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 2 meses
Puntos: 146
Re: Qué hago mal?

A ver ...

Tienes un response.write "El usuario es "& usuario y dices que solo escribe "El usuario es".

Esto significa que no recibes al parámetro "user"

Checa por ese lado
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 21:31.