PHP - header

 
Vista:

header

Publicado por DvD (13 intervenciones) el 30/04/2005 19:59:52
Hola, tengo una pagina de validacion usuario / contraseña de tal manera que si el usuario es valido se le de la bienvenida y sea redirigido hacia la pagina de entrada y si no lo es que muestre un mensaje y le lleve a la pagina de error.

He intendado hacerlo con un un if ....else y con un header en cada uno (si /no) que indica la direccion a la que debe ir el navegador, pero no funciona, solo me muestra el mensaje de bienvenida / error y un error de q no puede modificar la informacion de cabecera.

el error es el siguiente:

Warning: Cannot modify header information - headers already sent by (output started at /home/public_html/PRUEBA/validar.php:18) in /home/public_html/PRUEBA/validar.php on line 70

y el codigo ed la pagina:

--------validar.php---------

if ($NFilas!=0) //si hay al menos una fila entra --> usuario/contraseña valido
{ //aqui va el codigo de la pagina o bien la redireccion a otra cosa
echo "Bienvenido:\n"."<font color='FF0000'>".$_SESSION['id']."</font>";
echo "<br>";
header("Location: http://www.dominio.com/PRUEBA/Pclientes.php"); /* Redirigir al navegador */
exit;/* NOs asegurarse de que no se ejecute el codigo adicional cuando se redireccione. */

} else{
print("Usuario no encontrado...");

header("Location: http://www.dominio.com/PRUEBA/novalida.php"); /* Redirigir al navegador */
session_destroy();
exit;
}
$logout ="<font color='FF0000'>Salir</font>";
#print session_name() . "\n\n" . "los datos son correctos";
echo "<a href=\"index.html?action=logout\">"."\n\n".$logout."</a>";
?>

el error me salta en la linea del header("location......) y la linea 18 corresponde a la cabecera y ahi tengo el codigo correspondiente al menu de la pagina:

<script language="JavaScript" type="text/JavaScript">
<!--
function MM_reloadPage(init) { //reloads the window if Nav4 resized
if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);
//-->
</script>

Espero haberme explicado bien, y os agradeceria que me echaseis una mano para poder redireccionar la pagina.

Muchas gracias

Salu2.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:header

Publicado por maxter (54 intervenciones) el 30/04/2005 20:27:35
Bueno lo que te pasa es lo siguiente el HEADER no funciona si hay algún ECHO delante. En tu caso puedes cambiar los header y redireccionar con javascript

echo '<script language="javascript">window.open("pagina.php","_self"); </script>';

Yo me he visto en la necesidad de hacerlo unas cuantas veces.

Espero que te sirva.

Saludos y suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:header

Publicado por DvD (13 intervenciones) el 30/04/2005 20:55:03
Hola amigo,

he probado a poner tu codigo

echo '<script language="javascript">window.open("novalida.php","_self"); </script>';

pero no funciona, ya no me sale ningun mensaje de error,, solo el mensaje de bienvenida pero no redireccion a ningun lado...

sabes por que no hace nada? falta poner algun parámetro o algo.

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:header

Publicado por DvD (13 intervenciones) el 30/04/2005 21:31:47
Buenas otra vez,

ya lo he solucionado, simplemente poniendolo de esta forma:

print("Usuario no encontrado...");

echo "<script>";
echo "window.open('novalida.php','_self');";
echo "</script>";

y funciona, me lo redirecciona correctamente, solo hay una pequeña pega, lo hace directamente, es decir no muestra el mensaje de error "usuario no encontrado"...

exite alguna manera de que se abra la pagina tras 3 segundos? (por ejemplo)

Me interesa saberlo mas que nada porque me puede ser util mas adelante, en este caso daria un poco igual puesto que el mensaje de "Usuario no encontrado" lo podria mostrar en la pagina de error que se abre.

Muchas gracias

Salu2.

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:header

Publicado por maxter (54 intervenciones) el 30/04/2005 21:55:41
Pues con la funcion de javascript setTimeOut('funcion',tiempo en milisegundos) se hace.

echo "<script>";
echo "function ventana(){
window.open('novalida.php','_self');
}
setTimeOut('ventana()', 3000)";
echo "</script>";

Espero que te sirva.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:header

Publicado por Dvd (13 intervenciones) el 02/05/2005 13:01:16
Hola amigo,

he probado el codigo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:header

Publicado por dvd (13 intervenciones) el 02/05/2005 13:08:14
Perdon, por el post de antes, se me fue el dedo y le di a enviar antes de acabarlo, he intentado editarlo para seguir escribiendo en él, pero no he encontrado la opcion...

Hola amigo,

he probado el codigo que me has puesto

echo "<script>";
echo "function ventana(){
window.open('novalida.php','_self');
}
setTimeOut('ventana()', 5)";
echo "</script>";

y no funciona, ni redirige ni se visualiza correctamente la pagina, me sale un error de internet explorer de "error en la linea 40, se esperaba un objeto"

lo que mas me choca es que el erro solo sale si pongo este codigo y en la liena 40 no hay nada "raro", tan solo es el contenido de una de las celdas de una tabla, pero realmente no hay nada, salvo una imagen y algo de texto descriptivo...

esta es la linea 40

<p align="right"><strong><font face="Arial Narrow"><img src="Images/apesta%F1i.jpg" width="287" height="23"></font></strong></p>

sabes que puede ser...

Gracias

Salu2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:header

Publicado por maxter (54 intervenciones) el 02/05/2005 15:37:39
A mí me funciona OK pero como anteriormente te había dado problemas y lo resolviste poniendo cada línea en un ECHO prueba hacerlo de nuevo.

Además pones solo <script> y debes definirle el lenguaje que en este caso es javascript. Pon el código así:

echo "<script language="javascript">
function ventana(){
window.open('novalida.php','_self');
}
window.setTimeOut('ventana()', 5);
</script>";

Saludos y suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:header

Publicado por DvD (13 intervenciones) el 02/05/2005 19:53:20
Hola,

he probado lo que mas dicho pero no funciona, esta vez me da el siguiente error:

Parse error: parse error, unexpected T_STRING, expecting \',\' or \';\' in /home/public_html/PRUEBA/validar.php on line 72

no se dondde esta el error, he probado a ponerle ; al final, ... \" ... de todo, y siempre me dice q algo falla
sabes donde esta esta el error? que tengo mal escrito?

Este el codigo que pongo, y la linea 72 es la primera:

echo \"<script language=\"javascript\">
function ventana(){
window.open(\'Pclientes2.php\',\'_self\');
}
window.setTimeOut(\'ventana()\', 5);
</script>\";

Gracias

Salu2

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:header

Publicado por dvd (13 intervenciones) el 02/05/2005 20:35:20
Hola de nuevo,

he probado a poner ' ' (comillas simples) y ya no me sale el error de antes pero ahora no me carga la pagina, es decir me aparece una pagina vacia, bueno solo aparece el color de fondo de la pagina pero no el contenido q quiero mostrar y se queda buscando la pagina (la barra del navegador se va llenando muy lentamente pero no llega a terminar y mostrar).... sin embargo si la paro si que aparece lo que quiero y pasados los 5 segundos me redirecciona correctamente donde queria ir (Pclientes2.php)

Sabes por que ocuure esto?

Gracias

Salu2

echo '<script languaje="javascript">';
function ventana(){
window.open('Pclientes2.php','_self');
}
window.setTimeOut('ventana()',300);
'</script>';
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:header

Publicado por maxter (54 intervenciones) el 03/05/2005 13:22:44
Mira si no te funciona así mandame a mi correo el script entero para verlo. Y otra cosa el valor de tiempo se da en milisegundos así que si quieres por ejemplo 3 s debes poner 3000

Mejor pones esto entre el head de tu pagina.

<head>
<script languaje="javascript">
function ventana(){
window.open("Pclientes2.php","_self");
}
</script>
</head>

Y esto abajo

echo '<script languaje="javascript">
window.setTimeOut("ventana()",3000);
</script>';

Espero que ahora no te dé problemas.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:header

Publicado por Mike79 (669 intervenciones) el 05/05/2005 07:13:16
Si vas a usar un location, no puedes mandar a imprimir ningun mensaje.

Lo mas sano seria que la página a la cual te redirecciona cuando tu login y passwd es correcto, te de la bienvenida.

Y cuando el passwd es incorrecto, te regrese a la pagina donde te pide tu login y passwd. Si deseas que aparesca un mensaje podrias decirle que si la pagina le pasas un parametro por ejemplo ?Error=1 entonces que muestre un mensaje de error antes de pedir el login o passwd (o despues).

Si quieres esperar x segundos antes de mandar a otra página web , ¿por que no lo haces con un Meta en el head de la pagina asi:

<META HTTP-EQUIV="refresh" CONTENT="3; url=error.html">

Saludos!
-
Miguel Angel
Mike79
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar