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

posible error en codigo para cargar datos validacion de login y usuario

Estas en el tema de posible error en codigo para cargar datos validacion de login y usuario en el foro de ASP Clásico en Foros del Web. HOla a todos y en especial a quien me ayude: esto tratando de armar un sistema de login y usuario esta todo perfecto pero tengo ...
  #1 (permalink)  
Antiguo 04/11/2005, 05:56
 
Fecha de Ingreso: abril-2005
Mensajes: 112
Antigüedad: 20 años
Puntos: 0
posible error en codigo para cargar datos validacion de login y usuario

HOla a todos y en especial a quien me ayude:
esto tratando de armar un sistema de login y usuario esta todo perfecto pero tengo un error constante cuando llego a la pagina.asp estoy casdi seguro que hay un error en el codigo que no deja escribir en la base da datos, he buscado todas las alternativas y nada les muestro el codigo y les digo de antemano el error: siempre me lleva al ultimo response "Datos incorrectos!" y no escribe en la base.
si alguien sabe donde esta el error se los agradezco eternamente.
PD revise mil veces la base y el formulario y esta perofecto. cuando elimino ese response deja todo en blanco y tampoco escribe.

<%
Dim nombre, apellido, telefono, email, login, password
Dim correcto
Dim oConn, rs, SQL


'Recogemos el formulario
nombre=Request.Form("nombre")
apellido=Request.Form("apellido")
Login =Request.Form("Login")
Password=Request.Form("Password")
Tlf=Request.Form("Tlf")
Mail =Request.Form("E-mail")

if nombre="" then correcto=False end if
if apellido="" then correcto=False end if
if login="" then correcto=False end if
if password="" then correcto=False end if
if tlf="" then correcto=False end if
if mail="" then correcto=False end if

if correcto then
'Solo si todo está bien, comprobamos con la bd

set oConn=Server.CreateObject("ADODB.Connection")
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="& Server.MapPath("Usuarios.mdb")
SQL="SELECT * FROM Usuarios WHERE (Login='"&login&"');"
'Ejecutamos la consulta
set rs=oConn.Execute(SQL)

'si no nos devuelve vacío es que el login ya está en uso
if not rs.EOF then
Response.Write("El nombre de usuario ya está siendo utilizado. ")
Response.Write("Por favor, escoja otro.")
else
' es vacio, así que le insertamos en la bd
SQL="INSERT INTO Usuarios (Login, Password, Nombre, Apellido, Tlf, E-mail)"
SQL=SQL & " VALUES ('"&login&"', '"&password&"', '"&nombre&"','"&apellido&"','"&telefono&"','"&mail &"');"
oConn.Execute(SQL)
Response.Write("Gracias por registrarte, "& nombre)
end if

'Limpiamos objetos
rs.Close
oConn.Close
set rs=nothing
set oConn=nothing

else
'El usuario ha metido datos incorrectos
Response.Write("Datos incorrectos!")
end if

%>
  #2 (permalink)  
Antiguo 04/11/2005, 06:16
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 21 años, 4 meses
Puntos: 144
Revisa los nombres de las variables y de los inputs. Me parece que telefono y tlf deben estar algo mezclados (en la segunda línea de la sentencia SQL lo están, aunque ese no es el motivo de tu error).

Fíjate que declaras la variable telefono, pero luego usas tlf. La verdad es que no sé como has llamado a los inputs, pero deben estar por ahí los tiros, ya que la variable "correcto" siempre te la coge como false.
  #3 (permalink)  
Antiguo 04/11/2005, 06:51
 
Fecha de Ingreso: abril-2005
Mensajes: 112
Antigüedad: 20 años
Puntos: 0
gracias por la rapida respuesta!!! te comento he revisado eso de TLF lo puse igual a todo pero sigue llevando a ese response.
para mi el error esta en esta parte:
if nombre="" then correcto=False end if
if apellido="" then correcto=False end if
if login="" then correcto=False end if
if password="" then correcto=False end if
if tlf="" then correcto=False end if
if mail="" then correcto=False end if

if correcto then

te muestro el codigo del fromulario pero me parece que no esta el problema aqui
<form name="login" method="post" action="alta.asp">
<p>Nombre:
<input type="text" name="Nombre">
</p>
<p>Apellido:
<input type="text" name="Apellido">
</p>
<p>Tel&eacute;fono
<input type="text" name="Tlf">
</p>
<p>E-Mail:
<input type="text" name="Mail">
</p>
<p>Nombre de usuario:
<input type="text" name="Login">
</p>
<p>Contrase&ntilde;a :
<input type="text" name="Password">
</p>
<p>
<input type="submit" name="Submit" value="Darme de Alta">
</p>
</form>
por utimo te comento que tengo una base de datos con : Login - Password Nombre - Apellido - Tlf - Mail . en ese orden (y con mayusculas todas al incio)
  #4 (permalink)  
Antiguo 04/11/2005, 07:02
Avatar de virla  
Fecha de Ingreso: julio-2002
Ubicación: Rio Gallegos - Santa Cruz
Mensajes: 893
Antigüedad: 22 años, 9 meses
Puntos: 1
lo unica diferencia que veo yo es que en el formulario tu tienes los name que comienzan en mayusculas y despues lo recojes algunso en minusculas y quizas por eso te da vacio
__________________
---->Sin ayuda no se llega a ningun lado<----
Virla
  #5 (permalink)  
Antiguo 04/11/2005, 07:21
Avatar de kaduco  
Fecha de Ingreso: agosto-2004
Ubicación: Coquimbo - Chile
Mensajes: 63
Antigüedad: 20 años, 8 meses
Puntos: 0
una vez tuve un problema similar y era porque no eliminaba los espacios en blanco:

variable = Trim(variable_ingresada)


Otro consejo, prueba con un if orimero y despues pasas al sgte para detectar el error.
  #6 (permalink)  
Antiguo 04/11/2005, 07:46
Avatar de virla  
Fecha de Ingreso: julio-2002
Ubicación: Rio Gallegos - Santa Cruz
Mensajes: 893
Antigüedad: 22 años, 9 meses
Puntos: 1
si tienes un poco de tiempo y quieres te paso el que tengo yo lo unico es que tengo que hacerle un par de modificaciones, ya que no me di cuenta de algo que tu si y es el tema de que si el nombre de usuario ya esta registrado le avise que se cambie tanto eso como el mail. Mandame un mensaje privado con tu mail y en unos dias te lo paso, ademas este tiene para poner categorias a los usuarios.
__________________
---->Sin ayuda no se llega a ningun lado<----
Virla
  #7 (permalink)  
Antiguo 04/11/2005, 07:48
 
Fecha de Ingreso: abril-2005
Mensajes: 112
Antigüedad: 20 años
Puntos: 0
virla: probe con el tema mayuculas y nada es mas ahora me tira error interno de servidor, le doy actualizar y me sale el bendito "datos incorrectos"
Kaduco eliminados los espacios y probe con los if, desde el primero me salta el error. y sacando todos los if dejando solo

correcto =true

if correcto Then

directamente me tira error de servidor
ta muestro el codigo original haber si le ves el error
<%

Dim nombre, apellidos, telefono, email, login, password
Dim correcto
Dim oConn, rs, SQL

'Recogemos el formulario
nombre=Request.Form("nombre")
apellidos=Request.Form("apellidos")
...

correcto=True
'Comprobamos que no hay campos vacíos
if nombre="" then correcto=False end if
if apellidos="" then correcto=False end if
...
if password="" then correcto=False end if

if correcto then
'Solo si todo está bien, comprobamos con la bd

set oConn=Server.CreateObject("ADODB.Connection")
oConn.Open ...
SQL="SELECT * FROM Usuarios WHERE (Login='"&login&"');"
'Ejecutamos la consulta
set rs=oConn.Execute(SQL)

'si no nos devuelve vacío es que el login ya está en uso
if not rs.EOF then
Response.Write("El nombre de usuario ya está siendo utilizado. ")
Response.Write("Por favor, escoja otro.")
else
' es vacio, así que le insertamos en la bd
SQL="INSERT INTO Usuarios " & _
"(Login, Password, Nombre, Apellidos, Tlf, Email)"
SQL=SQL & " VALUES ('"&login&"', '"&password & _
"', '"&nombre&"','"&apellidos&"','"&telefono&"','"&ema il&"');"
oConn.Execute(SQL)
Response.Write("Gracias por registrarte, "& nombre)
end if

'Limpiamos objetos
rs.Close
oConn.Close
set rs=nothing
set oConn=nothing
else

'El usuario ha metido datos incorrectos
Response.Write("Datos incorrectos!")
end if


%>


estara aqui el problema de mi codigo???:
set oConn=Server.CreateObject("ADODB.Connection")
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="& Server.MapPath("Usuarios.mdb")
SQL="SELECT * FROM Usuarios WHERE (Login='"&login&"');"
  #8 (permalink)  
Antiguo 04/11/2005, 07:55
Avatar de virla  
Fecha de Ingreso: julio-2002
Ubicación: Rio Gallegos - Santa Cruz
Mensajes: 893
Antigüedad: 22 años, 9 meses
Puntos: 1
no, amigo el problema lo tienes aca:

if nombre="" then correcto=False end if
if apellido="" then correcto=False end if
if login="" then correcto=False end if
if password="" then correcto=False end if
if tlf="" then correcto=False end if
if mail="" then correcto=False end if

ya que de ahi pasa al:

'El usuario ha metido datos incorrectos
Response.Write("Datos incorrectos!")
end if

es por eso que revice tu codigo para ver porque sucede eso y lo unico que pude ver eran las mayusculas.

mira esto
<input type="text" name="Nombre">
nombre=Request.Form("nombre")
lo que esta en rojo es lo que esta diferente por la mayuscula, pero no se si eso puede hacer la diferencia, tengo entendido que si.
__________________
---->Sin ayuda no se llega a ningun lado<----
Virla
  #9 (permalink)  
Antiguo 04/11/2005, 08:30
 
Fecha de Ingreso: abril-2005
Mensajes: 112
Antigüedad: 20 años
Puntos: 0
ahora lo tengo asi y me marca directamente error interno
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<html>
<head>
<title>Documento sin t&iacute;tulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<%
Dim nombre, apellido, telefono, mail, login, password
Dim correcto
Dim oConn, rs, SQL


'Recogemos el formulario
nombre=Request.Form("nombre")
apellidos=Request.Form("apellidos")
login=Request.Form("login")
password=Request.Form("password")
telefono=Request.Form("telefono")
email=Request.Form("email")
correcto=True

'Comprobamos que no hay campos vacíos
if nombre="" then correcto=False end if
if apellidos="" then correcto=False end if
if login="" then correcto=False end if
if password="" then correcto=False end if
if telefono="" then correcto=False end if
if email="" then correcto=False end if

if correcto then
'Solo si todo está bien, comprobamos con la bd

set oConn=Server.CreateObject("ADODB.Connection")
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="& Server.MapPath("Usuarios.mdb")
SQL="SELECT * FROM Usuarios WHERE (Login='"&login&"');"
'Ejecutamos la consulta
set rs=oConn.Execute(SQL)

'si no nos devuelve vacío es que el login ya está en uso
if not rs.EOF then
Response.Write("El nombre de usuario ya está siendo utilizado. ")
Response.Write("Por favor, escoja otro.")
else
' es vacio, así que le insertamos en la bd
SQL="INSERT INTO Usuarios " & _
"(Login, Password, Nombre, Apellidos, Telefono, Email)"
SQL=SQL & " VALUES ('"&login&"', '"&password & _
"', '"&nombre&"','"&apellidos&"','"&telefono&"','"&ema il&"');"
oConn.Execute(SQL)
Response.Write("Gracias por registrarte, "& nombre)
end if
else

'Limpiamos objetos
rs.Close
oConn.Close
set rs=nothing
set oConn=nothing

else
'El usuario ha metido datos incorrectos
Response.Write("Datos incorrectos!")
end if

%>
</body>
</html>

me rindooooo !!!!!!!!
  #10 (permalink)  
Antiguo 04/11/2005, 09:21
 
Fecha de Ingreso: julio-2005
Mensajes: 28
Antigüedad: 19 años, 8 meses
Puntos: 0
Puede ser porque en el Formulario al cuadro de texto APELLIDO lo llamas APELLIDO, pero al momento de hacer el REQUEST.FORM lo llamas como APELLIDOS....espero haya sido de ayuda. Saludos
  #11 (permalink)  
Antiguo 04/11/2005, 09:27
Avatar de virla  
Fecha de Ingreso: julio-2002
Ubicación: Rio Gallegos - Santa Cruz
Mensajes: 893
Antigüedad: 22 años, 9 meses
Puntos: 1
tienes mucha razon eso no lo havia visto el tema es que si alguno lo tienes como falso te manda automaticamente al

'El usuario ha metido datos incorrectos
Response.Write("Datos incorrectos!")
end if
__________________
---->Sin ayuda no se llega a ningun lado<----
Virla
  #12 (permalink)  
Antiguo 04/11/2005, 09:40
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 21 años, 4 meses
Puntos: 144
Cita:
Iniciado por v@ro
Puede ser porque en el Formulario al cuadro de texto APELLIDO lo llamas APELLIDO, pero al momento de hacer el REQUEST.FORM lo llamas como APELLIDOS....espero haya sido de ayuda. Saludos
¡¡¡Qué vista tienes!!! :)
  #13 (permalink)  
Antiguo 04/11/2005, 09:46
 
Fecha de Ingreso: julio-2005
Mensajes: 28
Antigüedad: 19 años, 8 meses
Puntos: 0
Cita:
Iniciado por 3pies
¡¡¡Qué vista tienes!!! :)
Gracias...y eso ke es viernes!!!!


a veces hay ke salir del bosque para mirar los arboles
  #14 (permalink)  
Antiguo 04/11/2005, 09:52
Avatar de virla  
Fecha de Ingreso: julio-2002
Ubicación: Rio Gallegos - Santa Cruz
Mensajes: 893
Antigüedad: 22 años, 9 meses
Puntos: 1
bueno me alegro que ayas podido solucionar tu problema
__________________
---->Sin ayuda no se llega a ningun lado<----
Virla
  #15 (permalink)  
Antiguo 05/11/2005, 16:04
 
Fecha de Ingreso: abril-2005
Mensajes: 112
Antigüedad: 20 años
Puntos: 0
amigos: sigo con inconvenientes, resulta qque sigo con este codigo y me esta rompiendo la cabeza:
<%
Dim nombre, apellidos, telefono, mail, login, password
Dim correcto
Dim oConn, rs, SQL


'Recogemos el formulario
nombre=Request.Form("nombre")
apellidos=Request.Form("apellidos")
login=Request.Form("login")
password=Request.Form("password")
telefono=Request.Form("telefono")
email=Request.Form("email")
correcto=True

'Comprobamos que no hay campos vacíos
if nombre="" then correcto=False end if
if apellidos="" then correcto=False end if
if login="" then correcto=False end if
if password="" then correcto=False end if
if telefono="" then correcto=False end if
if email="" then correcto=False end if

if correcto then
'Solo si todo está bien, comprobamos con la bd

set oConn=Server.CreateObject("ADODB.Connection")
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="& Server.MapPath("Usuarios.mdb")
SQL="SELECT * FROM Usuarios WHERE Login='"&login&';"
'Ejecutamos la consulta
set rs=oConn.Execute(SQL)

'si no nos devuelve vacío es que el login ya está en uso
if not rs.EOF then
Response.Write("El nombre de usuario ya está siendo utilizado. ")
Response.Write("Por favor, escoja otro.")
else
' es vacio, así que le insertamos en la bd
SQL="INSERT INTO Usuarios (login, password, nombre, apellidos, telefono, email) values ('"&login&"', '"&password & "','"&nombre&"','"&apellidos&"','"&telefono&"','"& email&"');"
Conn.Execute(SQL)
Response.Write("Gracias por registrarte, "& nombre)
end if

'Limpiamos objetos
rs.Close
oConn.Close
set rs=nothing
set oConn=nothing

else
'El usuario ha metido datos incorrectos
Response.Write("Datos incorrectos!")
end if

%>

lo unico que funciona es el tema de datos incorrectos cuando es asi, pero cuando completo bien los datos directamente me marca error de servidro, yo no se si la orden de conexion tendra algo que ver, si alguien reconoce el error por favor avisenme estoy muy necesitado de resolver este problema
  #16 (permalink)  
Antiguo 05/11/2005, 16:29
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, 1 mes
Puntos: 535
Hagamos una cosa, leé la firma que tengo justo al pié de éste mensaje, seguí las indicaciones y colocá el error real (con código, descripción y línea donde ocurre -y marcá la línea que és porque si llega a ser de la 5 en adelante nos da flojera contarlas :p-)
__________________
...___...
  #17 (permalink)  
Antiguo 05/11/2005, 17:13
 
Fecha de Ingreso: abril-2005
Mensajes: 112
Antigüedad: 20 años
Puntos: 0
Al zuwaga hice lo que me pediste y me marca este error
Microsoft JET Database Engine error '80040e14'

Error de sintaxis en la instrucción INSERT INTO.

/alta.asp, línea 48

aparantemente es en esta linea

oConn.Execute(SQL)

que viene de
else
' es vacio, así que le insertamos en la bd
SQL="INSERT INTO Usuarios " & "(Login, Password, Nombre, Apellidos, Tlf, Email)"
SQL=SQL & " VALUES ('"&login&"', '"&password& "', '"&nombre&"','"&apellidos&"','"&telefono&"','"&ema il&"');"
rs=oConn.Execute(SQL)
Response.Write("Gracias por registrarte, "& nombre)
end if
  #18 (permalink)  
Antiguo 05/11/2005, 17:14
 
Fecha de Ingreso: abril-2005
Mensajes: 112
Antigüedad: 20 años
Puntos: 0
perdon pero seria asi
else
' es vacio, así que le insertamos en la bd
SQL="INSERT INTO Usuarios " & "(Login, Password, Nombre, Apellidos, Tlf, Email)"
SQL=SQL & " VALUES ('"&login&"', '"&password& "', '"&nombre&"','"&apellidos&"','"&telefono&"','"&ema il&"');"
oConn.Execute(SQL) Response.Write("Gracias por registrarte, "& nombre)
end if
( en rojo donde marca el error)
  #19 (permalink)  
Antiguo 05/11/2005, 17:28
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, 1 mes
Puntos: 535
bien, ahora si :)
Estoy casi un 100% seguro que se trata de errores de palabaras reservadas en tu sentencia SQL.
Tratá modificando ésta línea:

SQL="INSERT INTO Usuarios " & "(Login, Password, Nombre, Apellidos, Tlf, Email)"

por ésta

SQL="INSERT INTO Usuarios " & "([Login], [Password], Nombre, Apellidos, Tlf, Email)"

No estoy seguro que login sea un palabra reservada, pero si que password lo és. Si las ponés entre corchetes "[]", se solucionaría el problema.

Intentá y comentame.
Saludos

EDIT: Para que no dependas de nadie ante otros errores de éste tipo.
La próxima vez, ahora que sabés cómo hacer para que IE te informe del error real, vas a www.aspfaq.com y buscás por el código de error (80040e14, en éste caso). Puede haber varias causales, pero te apoyás en la descripción del mismo (Error de sintaxis en la instrucción INSERT INTO, aunque siempre hacelo en inglés)
__________________
...___...

Última edición por AlZuwaga; 05/11/2005 a las 17:40
  #20 (permalink)  
Antiguo 05/11/2005, 17:45
 
Fecha de Ingreso: abril-2005
Mensajes: 112
Antigüedad: 20 años
Puntos: 0
genial estaba el problema ahi miles miles de gracias dejo el codigo completo por si alguien lo necesita

<%
Dim nombre, apellidos, telefono, mail, login, password
Dim correcto
Dim oConn, rs, SQL


'Recogemos el formulario
nombre=Request.Form("nombre")
apellidos=Request.Form("apellidos")
login=Request.Form("login")
password=Request.Form("password")
telefono=Request.Form("telefono")
email=Request.Form("email")
correcto=True

'Comprobamos que no hay campos vacíos
if nombre="" then correcto=False end if
if apellidos="" then correcto=False end if
if login="" then correcto=False end if
if password="" then correcto=False end if
if telefono="" then correcto=False end if
if email="" then correcto=False end if

if correcto then
'Solo si todo está bien, comprobamos con la bd

set oConn=Server.CreateObject("ADODB.Connection")
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="& Server.MapPath("nuestrabasededatos.mdb")
SQL="SELECT * FROM Usuarios WHERE (Login='"&login&"');"
'Ejecutamos la consulta
set rs=oConn.Execute(SQL)

'si no nos devuelve vacío es que el login ya está en uso
if not rs.EOF then
Response.Write("El nombre de usuario ya está siendo utilizado. ")
Response.Write("Por favor, escoja otro.")
else
' es vacio, así que le insertamos en la bd
SQL="INSERT INTO Usuarios " & "([Login], [Password], Nombre, Apellidos, Telefono, Email)"
SQL=SQL & " VALUES ('"&login&"', '"&password& "', '"&nombre&"','"&apellidos&"','"&telefono&"','"&ema il&"');"
oConn.Execute(SQL)
Response.Write("Gracias por registrarte, "& nombre)
end if


'Limpiamos objetos
rs.Close
oConn.Close
set rs=nothing
set oConn=nothing

else
'El usuario ha metido datos incorrectos
Response.Write("Datos incorrectos!")
end if

%>
gracias nuevamente a todos!!!
  #21 (permalink)  
Antiguo 05/11/2005, 18:01
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, 1 mes
Puntos: 535
De nada, Cristian
__________________
...___...
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 10:57.