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

Problema "extraño" con el Login en ASP

Estas en el tema de Problema "extraño" con el Login en ASP en el foro de ASP Clásico en Foros del Web. Hola, hace unos días tuve un inconveniente con un código de Login para Usuarios que por suerte ya lo pude solucionar, pero me enfrento ahora ...
  #1 (permalink)  
Antiguo 11/01/2005, 21:13
Avatar de Hayi  
Fecha de Ingreso: febrero-2002
Ubicación: Santa Fe - Santa Fe
Mensajes: 121
Antigüedad: 23 años, 3 meses
Puntos: 3
Pregunta Problema "extraño" con el Login en ASP

Hola, hace unos días tuve un inconveniente con un código de Login para Usuarios que por suerte ya lo pude solucionar, pero me enfrento ahora con un incoveniente al que no le encuentro sentido: nada del otro mundo, un sistema típico de ingreso de usuarios cuyos datos están almacenados en una BD en ASP. El problema es que solamente puedo 'loguearme' desde la página "index.asp", ya que si quiero hacerlo desde las otras páginas del sitio prueba con el que trabajo, me redirecciona al "index.asp". ¿Por qué pasa esto si el código es EXACTAMENTE igual en todas las páginas pero solamente puedo 'loguearme' desde "index.asp"?. Parte del código al que llamo desde el formulario de todas la páginas (<FORM NAME="form" ACTION="user.asp" METHOD="post">):

user.asp
<%
Dim user, pass, conexion, tabla
'Si los campos están vacíos, redirecciono a "index.asp"
If Request.Form("user") = "" OR Request.Form("pass") = "" Then
Response.Redirect "index.asp"
Else
...
%>


Hasta dónde lo veo, el error pasa porque me toma cómo vacío los campos con los datos que ingreso pero no encuentro ni entiendo el por qué lo hace (la única parte del código que redirecciona a "index.asp" es la que expuse arriba). Gracias de antemano y saludos.
  #2 (permalink)  
Antiguo 11/01/2005, 21:20
Avatar de Mickel  
Fecha de Ingreso: mayo-2002
Ubicación: Lima, Peru
Mensajes: 4.619
Antigüedad: 23 años
Puntos: 7
Lo que pasa es que al tener Request.Form("user") y Request.Form("pass") como condiciones, entonces estas exigiendo que se hayan llenado desde un formulario anterior.

Te sugiero que agregues un or con variables de session a ese if para que no ocurra eso

Por ejemplo:
If (Request.Form("user") = "" OR Request.Form("pass") = "") and (Session("user")="" or Session("pass")="") Then
Response.Redirect "index.asp"

No estoy muy seguro de la sintaxis de Session(mucho PHP) pero algo asi es...
  #3 (permalink)  
Antiguo 13/01/2005, 07:27
Avatar de Hayi  
Fecha de Ingreso: febrero-2002
Ubicación: Santa Fe - Santa Fe
Mensajes: 121
Antigüedad: 23 años, 3 meses
Puntos: 3
Pregunta Gracias pero...

... lamentablemente no funcionó, sigue haciendo exactamente lo mismo que antes, no me toma los valores del formulario de otra página que no sea "index.asp"... Gracias nuevamente y saludos.
  #4 (permalink)  
Antiguo 13/01/2005, 10:03
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Vamos por partes, ¿cómo esta eso de que te quieres loguear desde otras páginas?, por loguear, entiendo que en otras páginas, igual tienes un formulario de login y password, que apuntan a user.asp (queno entiendo el por qué, pero bueno), si esto es verdad, entonces la única opción posible para que no te este obteniendo los valores del formulario, es que dichos controles no se llamen "user" y "pass".
  #5 (permalink)  
Antiguo 13/01/2005, 10:06
 
Fecha de Ingreso: noviembre-2004
Mensajes: 30
Antigüedad: 20 años, 5 meses
Puntos: 0
espero te sirva

Hola, mi primera ayuda en el foro... espero te sirva de algo..

Yo uso es mismo sistema de login .. y el codigo es el siguiente:

Código:
<%@LANGUAGE="VBSCRIPT"%>
<!--#include file="Connections/omarweb.asp" -->

<%
if request.form("usuario")="" then %>

<%else
'eliminamos las posibles comillas de la entrada
'para evitar la introducción de sentencias SQL
usuario=replace(request.form("usuario"),"'","")
password=replace(request.form("password"),"'","")


Set Recordset1 = Server.CreateObject("ADODB.Recordset")
'aqui puedes crear tu objeto de conexion yo uso este porque hago mis paginas con dreamweaver

Recordset1.ActiveConnection = MM_omarweb_STRING

sqltxt="Select * from dbo.omarpass where usu='"&usuario&"' and pas= '"&password&"'"
response.write sqltxt

Recordset1.Open sqltxt
if not Recordset1.eof then
' nos ha devuelto un registro, ahora miraremos si es valido
' con ello evitamos el ataque típico SQL

if Recordset1("usu")=usuario and Recordset1("pas")=password and Recordset1.Fields("iden")="admin" then
' si el usuario esta en la base de datos y la password coincide
session("autorizacion")=1
response.redirect "administrador.asp"

Elseif Recordset1("usu")=usuario and Recordset1("pas")=password and Recordset1.Fields("iden")="gerente" then
' si el usuario esta en la base de datos y la password coincide
session("autorizacion")=1
response.redirect "gerenprog.asp" 

Elseif Recordset1("usu")=usuario and Recordset1("pas")=password and Recordset1.Fields("iden")="act" then
' si el usuario esta en la base de datos y la password coincide
session("autorizacion")=1
response.redirect "act.asp" 

Elseif Recordset1("usu")=usuario and Recordset1("pas")=password and Recordset1.Fields("iden")="gda" then
' si el usuario esta en la base de datos y la password coincide
session("autorizacion")=1
response.redirect "gdaprograma.asp" 

Elseif Recordset1("usu")=usuario and Recordset1("pas")=password and Recordset1.Fields("iden")="leo" then
' si el usuario esta en la base de datos y la password coincide
session("autorizacion")=1
response.redirect "leoprog.asp"

Elseif Recordset1("usu")=usuario and Recordset1("pas")=password and Recordset1.Fields("iden")="df" then
' si el usuario esta en la base de datos y la password coincide
session("autorizacion")=1
response.redirect "programadf.asp"

Elseif Recordset1("usu")=usuario and Recordset1("pas")=password and Recordset1.Fields("iden")="tij" then
' si el usuario esta en la base de datos y la password coincide
session("autorizacion")=1
response.redirect "tijuanap.asp"   

Elseif Recordset1("usu")=usuario and Recordset1("pas")=password and Recordset1.Fields("iden")="pue" then
' si el usuario esta en la base de datos y la password coincide
session("autorizacion")=1
response.redirect "puprogramacionbla.asp" 

Elseif Recordset1("usu")=usuario and Recordset1("pas")=password and Recordset1.Fields("iden")="chi" then
' si el usuario esta en la base de datos y la password coincide
session("autorizacion")=1
response.redirect "chiprogramadas.asp" 


end if
else
session("autorizacion")=-1

end if
Recordset1.close
set Recordset1=nothing

aqui esto lo comento poque yo no uso esto
'Oconn.close
'set Oconn=nothing



if session("autorizacion")=-1 or session("autorizacion")="" then
' no hemos encontrado el registro
' eso indica que el usuario y/o la password son erroneos

response.redirect "default.asp?psd=Usuario,%20%20password%20%20incorrecto"
end if

end if%>
ahi me avisas..


mmm se me ocurrio otro error que podrias tener:

en tu formulario que debe ser el siguiente codigo:
Código:
<form action="index.asp" method="post" onSubmit="MM_validateForm('usuario','','R','password','','R');return document.MM_returnValue">
     <p>
      <input name="usuario" type="text" id="usuario" size="8">
      <br>
      <input name="password" type="password" id="password" size="8">
      <input name="image" type="image" src="images/pointer-go.jpg" width=21 height=20 value="Enviar">
      <%=request.querystring ("psd") %></p>
  </form>
creo que tu error es dejar el action="index.asp" y ahi es donde te esta tomando los datos de la otra pagina y no de donde te quieres logear...

bueno ahora ahora si ahi me avisas...
  #6 (permalink)  
Antiguo 21/01/2005, 22:21
Avatar de Hayi  
Fecha de Ingreso: febrero-2002
Ubicación: Santa Fe - Santa Fe
Mensajes: 121
Antigüedad: 23 años, 3 meses
Puntos: 3
Gracias a todos por las molestias tomadas en leer mi consulta. Efectivamente como dijo Myakire (lo de la redirección a "user.asp" es una formalidad, simplemente esa página muestra los datos del ingresante), mi principal problema fue la falta de atención, ya que en "index.asp", dentro del formulario de logueo puse esto:

"<INPUT NAME="password"...>"

y en las demás páginas puse esto otro:

"<INPUT NAME="clave"...>"

Un error simple pero que me trajo demasiados dolores de cabeza. Repito mi agradecimiento a todos y omrios, gracias por tu código...
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 08:53.