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

Donde está el fallo?

Estas en el tema de Donde está el fallo? en el foro de ASP Clásico en Foros del Web. Hola, que falla en este código???, no puedo hacer el login :( Ni siquiera me imprime los datos Cita: <% try{ //Recoger datos del form ...
  #1 (permalink)  
Antiguo 30/07/2008, 20:03
 
Fecha de Ingreso: agosto-2007
Mensajes: 106
Antigüedad: 16 años, 9 meses
Puntos: 0
Donde está el fallo?

Hola, que falla en este código???, no puedo hacer el login :(
Ni siquiera me imprime los datos

Cita:
<%
try{
//Recoger datos del form
var email = Request.Form("email").Item;
var password = Request.Form("password").Item;

//Seleccionar de la tabla Usuarios el registro con dicho email y password
var sql = "SELECT * FROM Usuarios WHERE email = 'email' AND password = 'password'";

var rs = Server.CreateObject("ADODB.Recordset");
rs.Open(sql, conexion);

while (!rs.EOF){
if (rs("usuario").value == 'usuario' && rs("password").value == 'password'){
Session("email") = 'email';
Session.Timeout = 20;
Response.Redirect("default.asp");
}
else{
Response.Redirect("error_login.asp");
}
Response.Write(rs("nombre").value);
Response.Write(rs("email").value);
Response.Write(rs("password").value);
Response.Write(rs("poblacion").value);
rs.MoveNext();
}
rs.Close();
rs = null;

}catch(e){
Response.Write(e);
}

%>

<!-- #include file = "conexion/cerrar_conexion.asp" -->

</body>
  #2 (permalink)  
Antiguo 30/07/2008, 21:56
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Respuesta: Donde está el fallo?

Quitale el error handler e intenta de nuevo, por favor no pongan manejadores de errores hasta que no sepan que su código funciona, de lo contrario nunca sabrán dónde está el error.

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #3 (permalink)  
Antiguo 30/07/2008, 22:13
 
Fecha de Ingreso: agosto-2007
Mensajes: 106
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: Donde está el fallo?

Voy a probar, de todas formas.....el manejador de error no está para eso????para capturar el error y ver cual es???

Gracias!
  #4 (permalink)  
Antiguo 30/07/2008, 22:18
 
Fecha de Ingreso: agosto-2007
Mensajes: 106
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: Donde está el fallo?

He probado y este es el error que me da:

ADODB.Field error '800a0bcd'

El valor de BOF o EOF es True, o el actual registro se eliminó; la operación solicitada requiere un registro actual
. Error en linea (*)

Nuevamente os pongo el código:
Cita:
<%
Response.Buffer = true;
//Recoger datos del form
var email = Request.Form("email").Item;
var password = Request.Form("password").Item;

//Seleccionar de la tabla Usuarios el registro con dicho email y password
var sql = "SELECT * FROM Usuarios WHERE email = 'email' AND password = 'password'";

var rs = Server.CreateObject("ADODB.Recordset");
rs.Open(sql, conexion);


if (rs("email").value == email && rs("password").value == password){ (*)
Session("email") = 'email';
Session.Timeout = 20;
Response.Redirect("default.asp");
}
else{
Response.Redirect("error_login.asp");
}
Response.Write(rs("nombre").value);
Response.Write(rs("email").value);
Response.Write(rs("password").value);
Response.Write(rs("poblacion").value);
rs.MoveNext();

rs.Close();
rs = null;

%>

<!-- #include file = "conexion/cerrar_conexion.asp" -->

</body>

Última edición por jmagago84; 30/07/2008 a las 22:46
  #5 (permalink)  
Antiguo 30/07/2008, 23:26
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Respuesta: Donde está el fallo?

Cita:
Iniciado por jmagago84 Ver Mensaje
Voy a probar, de todas formas.....el manejador de error no está para eso????para capturar el error y ver cual es???

Gracias!
Siempre que sepas como usarlo, en realidad no tiene ninguna ciencia pero en muchas ocasiones te mete en mas problemas que lo que soluciona.

El objeto e que definiste es un objeto de error por lo tanto deberia ser:

Response.Write(e.description);

Para obtener la descripcion del error.

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #6 (permalink)  
Antiguo 30/07/2008, 23:28
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Respuesta: Donde está el fallo?

Cita:
Iniciado por jmagago84 Ver Mensaje
He probado y este es el error que me da:

ADODB.Field error '800a0bcd'

El valor de BOF o EOF es True, o el actual registro se eliminó; la operación solicitada requiere un registro actual
. Error en linea (*)

Nuevamente os pongo el código:

Eso quiere decir que tu recordset esta vacio, tienes que manejar esa condicion:

Código:
if ( rs.EOF == false )
{
    if (rs("email").value == email && rs("password").value == password){ (*)
   //etc
}
else
   Response.Write("No se encontro ningun registro");
Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #7 (permalink)  
Antiguo 30/07/2008, 23:41
 
Fecha de Ingreso: agosto-2007
Mensajes: 106
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: Donde está el fallo?

Perdona, pero creo q sé donde está el problema, puede ser en la var sql????
q no toma el valor de las variables???

Gracias!!!
  #8 (permalink)  
Antiguo 31/07/2008, 00:20
 
Fecha de Ingreso: agosto-2007
Mensajes: 106
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: Donde está el fallo?

Vale, el fallo era del SQL, bueno, llegado hasta aquí lo que hago es mirar a la vez si existe algún registro en db con el email y password que se pasan, pero me da fallo a la hora de mirar el rs, como para recorrerlo.....pero si solo hay un registro o ninguno asi que....como se puede hacer para posicionarse en ese registro sin tener que hacerlo secuencialmente con un While???

Este es el código:
Cita:
<body>

<!-- #include file = "conexion/abrir_conexion.asp" -->

<%
Response.Buffer = true;
//Recoger datos del form
var email = Request.Form("email").Item;
var password = Request.Form("password").Item;

//Seleccionar de la tabla Usuarios el registro con dicho email y password
var sql = "SELECT * FROM Usuarios WHERE email='"+email+"' AND password='"+password+"'";

var rs = Server.CreateObject("ADODB.Recordset");
rs.Open(sql, conexion);

//Aqui es donde falla por tema de EOF y BOF
if (rs("email").value == email && rs("password").value == password){
Session("email") = email;
Session.Timeout = 60;
Response.Redirect("default.asp");
}
else{
Response.Redirect("error_login.asp");
}

rs.Close();
rs = null;

%>

<!-- #include file = "conexion/cerrar_conexion.asp" -->

</body>
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 12:33.