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

Problema con response.redirect

Estas en el tema de Problema con response.redirect en el foro de ASP Clásico en Foros del Web. Hola a todos!!! Tengo una página en ASP que dependiendo de un estado un otro lo redirecciona a otra página también ASP. Pero en la ...
  #1 (permalink)  
Antiguo 26/03/2004, 09:02
Avatar de GustavoPY  
Fecha de Ingreso: marzo-2002
Ubicación: Capiatá
Mensajes: 88
Antigüedad: 23 años, 1 mes
Puntos: 0
Problema con response.redirect

Hola a todos!!!

Tengo una página en ASP que dependiendo de un estado un otro lo redirecciona a otra página también ASP.

Pero en la línea donde escribo response.redirect "menu.asp"

Me salta lo siguiente:

/emed/nohora.asp, line 17

Los enbezados HTTP ya están escritas en el explorador cliente. Cualquier cambio en el encabezado HTTP se debe hacer antes de escribir el contenido de la página.

Mi linea es la siguiente:

response.redirect "menu.asp"

Ya he probado con

response.redirect ("menu.asp")

Pero nada!!!


¿A qué puede deberse este problema?

Desde ya muchas gracias!!
__________________
*********************************
Gustavo Arriola
http://www.gustavoarriola.com
*********************************
  #2 (permalink)  
Antiguo 26/03/2004, 09:04
 
Fecha de Ingreso: marzo-2004
Ubicación: Extremadura
Mensajes: 92
Antigüedad: 21 años, 1 mes
Puntos: 0
a ver, lee bien el mensaje de error ke te dice: "Los enbezados HTTP ya están escritas en el explorador cliente. Cualquier cambio en el encabezado HTTP se debe hacer antes de escribir el contenido de la página."

por lo tanto debes tener el kodigo asp kon response.redirect antes de eskribir las etiketas html, es decir, antes del <HTML>
__________________
Aupa Athletik!!!
  #3 (permalink)  
Antiguo 26/03/2004, 10:18
Avatar de GustavoPY  
Fecha de Ingreso: marzo-2002
Ubicación: Capiatá
Mensajes: 88
Antigüedad: 23 años, 1 mes
Puntos: 0
Entiendo!!

El código que utilizo es este: es identico al de aspfacil.com.

¿Debo borrar los tags HTML, y dejarlo asp puro? porque la idea es que si no cumple la condición que vuelva a cargar el mismo sitio pero un mensaje de error!!!

Desde ya muchas gracias malpika!!

login.asp

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<html>
<head>
<title>.:: Men&uacute; Principal ::.</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<link rel=Stylesheet type="text/css" href="style.css" title="Estilo">

</head>

<body bgcolor="#000000" text="#FFFF00" link="#FF0000" vlink="#6699FF" leftmargin="0" topmargin="0">

<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><div align="center"></div></td>
</tr>
<tr>
<td><div align="center">
<script language="JavaScript">
<!--
var mydate=new Date();
var year=mydate.getYear();
if (year < 1000)
year+=1900;
var day=mydate.getDay();
var month=mydate.getMonth();
var daym=mydate.getDate();
if (daym<10)
daym="0"+daym;

var dayarray=new Array("Domingo","Lunes","Martes","Miércoles","Juev es","Viernes","Sábado");
var montharray=new Array("Enero","Febrero","Marzo","Abril","Mayo","Ju nio","Julio","Agosto","Septiembre","Octubre","Novi embre","Diciembre");
document.write("<font color='ffffff' face='Verdana, Arial' size=1>"+ dayarray[day] + " " + daym + " de " + montharray[month] + " de " + year + "</font>");

// -->
</script>
</div></td>
</tr>
<tr>
<td><div align="center">
<hr noshade>
</div></td>
</tr>
</table>
<p>&nbsp;</p>
<table width="75%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td><div align="center"><font color="#FFFFFF" size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="principal.asp" target="mainFrame">Home</a></font></div></td>
</tr>
<tr>
<td><div align="center"><font color="#000000" face="Verdana, Arial, Helvetica, sans-serif"></font></div></td>
</tr>
<tr>
<td><div align="center"><font color="#000000" face="Verdana, Arial, Helvetica, sans-serif"></font></div></td>
</tr>
</table>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<form action="login.asp" method="POST" name="frm_login" id="frm_login">
<p><font color="#FF0000" size="1" face="Verdana, Arial, Helvetica, sans-serif"><p align="center"><%=request.querystring("msg")%></p>
</font></p>
<div align="center">
<center>
<table width="18%" border="3" align="center" cellpadding="0" cellspacing="0">
<tr>
<td><table border="0" width="100%" bgcolor="#000000">
<tr>
<td colspan="2" bgcolor="#0000FF"> <p align="center"><font color="#FFFFFF" size="1" face="Verdana, Arial, Helvetica, sans-serif">Login</font></td>
</tr>
<tr bgcolor="#000000">
<td width="20%"><font color="#FFFFFF" size="1" face="Verdana, Arial, Helvetica, sans-serif">Usuario:</font></td>
<td width="80%"><input class="boton" name="txt_usuario" type="text" id="txt_usuario3" size="10"></td>
</tr>
<tr bgcolor="#000000">
<td width="20%"><font color="#FFFFFF" size="1" face="Verdana, Arial, Helvetica, sans-serif">Contrase&ntilde;a</font><font color="#FFFFFF" size="1" face="Verdana, Arial, Helvetica, sans-serif">:
</font></td>
<td width="80%"> <input class="boton" name="txt_clave" type="password" id="txt_clave3" size="10"></td>
</tr>
<tr bgcolor="#000000">
<td width="20%"> <p align="center"><font color="#000000"><font color="#FFFFFF"><font size="1"><font face="Verdana, Arial, Helvetica, sans-serif"></font></font></font></font></td>
<td width="80%"><input class="boton" name="cmd_enviar" type="submit" id="cmd_enviar3" value="Login!"></td>
</tr>
</table></td>
</tr>
</table>
</center>
</div>
</form>
<p>

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

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("db/files.mdb"))
set rs = CreateObject("ADODB.Recordset")
sqltxt="Select * from tbl_usuarios where Usuario='"&usuario&"' and Clave= '"&password&"'"
response.write sqltxt
rs.Open sqltxt, conn

if not rs.eof then
' nos ha devuelto un registro, ahora miraremos si es valido
' con ello evitamos el ataque típico SQL
if rs("Usuario")=usuario and rs("Clave")=password then
' si el usuario esta en la base de datos y la password coincide
session("autorizacion")=1
session("usuario") = usuario
response.Write("OK!!")
response.redirect "menu.asp"
end if
else

session("autorizacion")=-1
end if

'Cierro las conexiones
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.Write("Error")
response.redirect "login.asp?msg=Usuario%20o%20password%20incorrecta "
end if
%>

</p>
<p>&nbsp;</p>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><div align="center"><font color="#666666" size="1" face="Verdana, Arial, Helvetica, sans-serif"><a href="acercade6.htm" target="mainFrame">Copyright
&copy; 2004 - Todos los derechos reservados</a></font></div></td>
</tr>
</table>
<p>&nbsp; </p>
</body>
</html>
__________________
*********************************
Gustavo Arriola
http://www.gustavoarriola.com
*********************************
  #4 (permalink)  
Antiguo 26/03/2004, 10:25
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, 2 meses
Puntos: 535
No sólo antes de las etiquetas HTML, sino que el response.redirect debe estar colocado antes de cualquier comando que envíe información al cliente (como un response.write)

Para que deje de dar ese error y seguir metiendo response.redirect en cualquier parte del código, debés poner como primer línea del script lo siguiente: <% Response.Buffer = TRUE %>

Igual, está de más tener código HTML y response'S.write'S cuando se usa response.buffer = true y response.redirect ya que el contenido jamás será visto por el cliente
  #5 (permalink)  
Antiguo 26/03/2004, 10:31
 
Fecha de Ingreso: marzo-2004
Ubicación: Extremadura
Mensajes: 92
Antigüedad: 21 años, 1 mes
Puntos: 0
Primero tienes que comprobar que el usuario sea de la bd y la contraseña coincida, si se da ese caso tu haces redireccionamiento a menu.asp no? pues bien, todo esto ke tienes y todos los redireccionamientos que quieras hacer segun coincida o no debes hacerlos antes de la etiketa <HTML>, te kedaria algo así:

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

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("db/files.mdb"))
set rs = CreateObject("ADODB.Recordset")
sqltxt="Select * from tbl_usuarios where Usuario='"&usuario&"' and Clave= '"&password&"'"
response.write sqltxt
rs.Open sqltxt, conn

if not rs.eof then
' nos ha devuelto un registro, ahora miraremos si es valido
' con ello evitamos el ataque típico SQL
if rs("Usuario")=usuario and rs("Clave")=password then
' si el usuario esta en la base de datos y la password coincide
session("autorizacion")=1
session("usuario") = usuario
response.Write("OK!!")
response.redirect "menu.asp"
end if
else

session("autorizacion")=-1
end if

'Cierro las conexiones
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.Write("Error")
response.redirect "login.asp?msg=Usuario%20o%20password%20incorrecta "
end if
%>

y aki meterias ya todo el codigo html que desees...

<HTML>
etc etc etc
</HTML>

Espero que te sirva la ayuda
__________________
Aupa Athletik!!!
  #6 (permalink)  
Antiguo 26/03/2004, 10:49
Avatar de GustavoPY  
Fecha de Ingreso: marzo-2002
Ubicación: Capiatá
Mensajes: 88
Antigüedad: 23 años, 1 mes
Puntos: 0
Gracias a todos!!!

Ahora se me pone más claro el panorama!

Lo voy a probar!!

Una vez más...

Gracias!!!
__________________
*********************************
Gustavo Arriola
http://www.gustavoarriola.com
*********************************
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:18.