Redireccionar login y password URGENTE

En mi página hice una BD en ASP de la siguiente manera:
Usuario password web
User pass http://www.x.com
Y cree una página en asp llamada "login.asp" con el siguiente código para redireccionar cuando el usuario se loguea:
<%if request.form("usuario")="" then%>
<%=request.querystring("msg")%> <!-- mensaje de error en caso de que el usuario y contraseña sean inválidos -->
<form method="POST" action="login.asp">
Usuario: <input type="text" name="usuario"><br>
Password: <input type="password" name="Password"> <br><input type="submit" value="Entrar">
</form>
<%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 Conn = Server.CreateObject("ADODB.Connection")
Conn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("login.mdb"))
set rs = CreateObject("ADODB.Recordset")
sqltxt="Select * from usuarios where usuario='"&usuario&"' and password= '"&password&"'"
'response.write sqltxt
rs.Open sqltxt, conn
if not rs.eof then
' nos ha devuelto un registro, ahora miraremos si es válido
' con ello evitamos el ataque típico SQL
if rs("usuario")=usuario and rs("password")=password then
' si el usuario esta en la base de datos y la password coincide
session("autorizacion")=1
Web= Rs("Web")
Response.Redirect rs("Web")
end if
else
session("autorizacion")=-1
end if
rs.close
set rs=nothing
conn.close
set conn=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 "login.asp?msg=Usuario%20o%20password%20incorrecta"
end if
end if%>
EL PROBLEMA es que no funciona, no redirecciona, pero si detecta cuando un usuario no esta o es incorrecto podes ver el ejemplo en esta dirección: http://free.7host03.com/saag1/LOGINRED/login.asp la BD esta como te la describí arriba.
Ojala me podas ayudar urgente.

10 respuestas

Respuesta
1
Tema uno es que te has equivocado de foro. Este es de Access, y aunque lo estés usando para tu login, claramente no tiene nada que ver en tu problema.
Tema dos es que aunque he currado mucho en ASP, casi siempre ha sido en jscript.
Y el tres, que te resultará más útil, es que no veo por ningún lado los encabezamientos de <html>, <body> y resto de la parafernalia. Y lo digo porque me supongo que estarán en algún sitio, y si tu Response. Redirect está dentro del bloque <body> y no recuerdo mal, no funcionará (funciona a nivel de encabezados previos al cuerpo). Por si te vale de pista, en jscript hay que utilizar el 'navigate'.
He sido muy simplista con lo del redirect, pero es que depende de varias cosas (configuración de envío de página del servidor web, p ej.) y me extendería mucho.
Prueba a buscar el equiv de navigate en vbscript y prueba a ver.
Por cierto, la página esa me da un error de que falta un end en linea 42.
Respuesta
1
Como estas, el código lo veo bien... voy a ver si lo puedo probar... pero mientras
cambia esto...
Response.Redirect Web
Disculpa, no pude entrar me da este error:
HTTP Error 500-13 - Server too busy
Internet Information Services
:-(
Sorry socio!
Respuesta
1
No conozco la estructura de la base de datos, pero tendrías que tener un campo web para cada usuario
El funcionamiento para hacer redireccionamientos a otros sitios es como te indique arriba, lo que estas necesitando ahora es modificar la estructura de datos
Te nolesto de nuevo, gracias por la ayuda pero la página no funciono tampoco, entonces te pregunto existe forma PARA que el usuario "X" vaya a la página del usuario "X", y el usuario "Y" a la página del usuario "Y", ¿después de loguearse y no que todos vayan al mismo lugar?
En unas lineas escribste:
Web= Rs("Web")
Response.Redirect rs("Web")
seria lo mismo que escribir
response.redirect web
el problema esta en qeu con response. Redirect podes redireccionar a otra página dentro del smimo sitio, pero si quieres enviar al usuario a otro sitio tendrías que hacer
web = rs("web")
%>
<script>
document.location.href="<%=web%>";
</script>
<%
response.end
Suerte, nico
Respuesta
1
Veamos... en principio el código no parece que esté mal, aunque yo haría un par de modificaciones. Quizás solo sean manías mías de programación, pero puede que sean el origen del problema
Primero de todo, cuando vayas a meter condiciones con cadenas de texto en una sentencia SQL, utiliza "LIKE" en lugar del operador "=". Es decir:
SELECT * FROM CLIENTES WHERE NOMBRE LIKE 'PEPE'
(Para que te devuelva solo los que se llaman "Pepe"
O bien:
SELECT * FROM CLIENTES WHERE NOMBRE LIKE '%A%'
(Para que te devuelva cualquier nombre que tenga la letra A dentro)
Por otro lado, veo que asignas a la variable Web el valor del recordset, pero después haces redirect al Recordset. Más bien seria:
WebUsuario = Rs("Web")
Response.Redirect(WebUsuario)
Y ya por ultimo, como estas cosas no queda más que depurarlas uno mismo viendo los valores de las variables (cosa que desde aquí así no puedo hacer), te daré un par de consejos.
- Primero de todo asegurate de que la tabla tiene los valores bien asignados.
- Create una hoja ASP que simplemente contenga esto:
<% Response.Write(Request.QueryString("texto")) %>
Y despues de hacer la Select la llamas pasandole el resultado de RS("web") para ver que contiene, de este modo:
Response.Redirect("fichero.asp?texto=" & RS("web"))
Si ves que todo esta bien, insiste haciendo redirect a esa hoja pasándole la cadena SQL esa sin lanzarla, para ver que realmente buscas el usuario y password correcto (no vaya a ser que el origen este en el formulario por ejemplo).
En definitiva... como ves el problema puede deberse a muchas cosas que sólo puedes verlas tu desde ahí, ya que en principio el código parece que esta bien. Muchas veces el utilizar una hoja como la que dije para mostrar variables te sirve para ver el problema y soluciona todo.
Suerte.
Respuesta
1
Lo primero que tienes que hacer es cambiar todas las variables de session por variables normales ej.
session("autorizacion")=-1
sw=-1
Luego me avisas
Respuesta
-1
has probado response.redirect web
prueba a poner antes de response un response.write web para ver si te recoge los datos de la variable
Respuesta
-1
Por supuesto que no te debe funcionar...!
El problema es que ya has enviado código html al principio de tu programa y cuando haces el redirect ya hay algo de código en el cache del cliente.
Trata de estructurar tu página para que hagas el redirect lo ante es posible y no envíes código HTML antes de hacer el chequeo
Respuesta
-1
Si te he entendido bien, desgraciadamente lo que tienes que hacer es una base de datos central y una base de datos por equipo que tenga vinculadas la tablas a la Base de datos central.
En cada base de datos particular tendrás que realizar las modificaciones que le diferencien de los demás.
Esta es la única manera, que conozco, para personalizar que cada usuario entre a una página distinta.
Respuesta
-1
Mi impresión es que te complicas demasiado la vida (no te molestes).
Mira es más fácil que eso.
Utiliza una página asp de puente y ahí validas.
Haces un form para el login y el password.
Ese form que te lleve a la página de puente.
Ahí validas:
"Select * from usuarios where usuario='"&request.form("usuario")&"' and password= '"&request.form("password")&"'"
Y si esta consulta te sale eof entonces no existe. Y ya esta. Lo devuelves a la página del principio con un mensaje de error y si no direccionas con response. Redirect
Espero que te haya servido
Un saludo.
P.D: Si tienes dudas acerca de la explicación no dudes en volver a preguntarme.
Respuesta
-1
Así a bote pronto probaría dos cosas.
Primero poner los parámetros del redirect entre paréntesis.
Si no te funciona lo anterior poner la sentencia Response.clear antes del redirect y Response.end despues.
Mira a ver si va...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas