problema con header
Tengo el siguiente problema. algo tan simple como:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title> Login </title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php header("location:main.php");?>
</body>
</html>
me devuelve el error:
Cannot modify header information - headers already sent by (output started at ......
Alguien puede ayudarme a resolver el enigma.
Gracias de antemano.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title> Login </title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php header("location:main.php");?>
</body>
</html>
me devuelve el error:
Cannot modify header information - headers already sent by (output started at ......
Alguien puede ayudarme a resolver el enigma.
Gracias de antemano.
Hola, el problema es que la lÃnea
header("location:main.php");
tiene que ir al principio.
Lo que hace la función header es mandar los headers/cabezales html al navegador. Si hubo antes algún fragmento de código html enviado al navegador, produce ese error.
Para solucionar el problema, tenés (que yo sepa) dos opciones:
a)
<?php
header("location:main.php");
?>
b) usar javascript.
Si lo que querés es que la página simplemente redireccione a otra, pero en sà no tiene contenido html para mostrar en pantalla, con el ejemplo a) alcanza (ni hace falta !doctype y todo lo demás).
Si, en cambio, querés redireccionar después de haber mandado código html al navegador, vas a tener que usar JS. No es muy complicado. Dentro del código HTML, va esto:
<script type="text/javascript">
location='main.php';
</script>
y ya está.
Volviendo a header(), no es indispensable que sea la primera lÃnea, pero antes no tiene que haber ningún "output" — nada de html enviado al navegador. O sea, que tampoco se puede hacer ningún "echo".
<?php
echo "hola<br />";
header("location:main.php");
?>
por ejemplo, también darÃa error.
Suerte.
header("location:main.php");
tiene que ir al principio.
Lo que hace la función header es mandar los headers/cabezales html al navegador. Si hubo antes algún fragmento de código html enviado al navegador, produce ese error.
Para solucionar el problema, tenés (que yo sepa) dos opciones:
a)
<?php
header("location:main.php");
?>
b) usar javascript.
Si lo que querés es que la página simplemente redireccione a otra, pero en sà no tiene contenido html para mostrar en pantalla, con el ejemplo a) alcanza (ni hace falta !doctype y todo lo demás).
Si, en cambio, querés redireccionar después de haber mandado código html al navegador, vas a tener que usar JS. No es muy complicado. Dentro del código HTML, va esto:
<script type="text/javascript">
location='main.php';
</script>
y ya está.
Volviendo a header(), no es indispensable que sea la primera lÃnea, pero antes no tiene que haber ningún "output" — nada de html enviado al navegador. O sea, que tampoco se puede hacer ningún "echo".
<?php
echo "hola<br />";
header("location:main.php");
?>
por ejemplo, también darÃa error.
Suerte.
Te agradezco la ayuda. Pero si dentro de una funcion php, yo quiero redireccionar a una pagina en funcion de una condicion, como lo harias ?
PodrÃas llegar a usar header(), pero habrÃa que ver puntualmente el script. Lo más fácil y práctico es usar JavaScript. El único inconveniente serÃa que algunos navegadores MUY viejos podrÃan tener inconvenientes o algún usuario podrÃa tener JS desactivado. Pero para el, digamos 95% de los usuarios, no habrá problemas porque ya casi nadie tiene IE 3 o anterior, algún netscape viejo, etc. Además, JS está activado por defecto (y la mayorÃa de la gente ni siquiera lo sabe, asà que dificilmente lo hayan desactivado). En sÃntesis, la solución más rápida y práctica serÃa hacer algo asÃ:
test();
function test() {
if (1==1) { // acá va tu condición; ésta que usé siempre se va cumplir!!
echo "<script type='text/javascript'>";
echo "location='main.php'"; // redireccionar acá.
echo "</script>";
}
}
?>
test();
function test() {
if (1==1) { // acá va tu condición; ésta que usé siempre se va cumplir!!
echo "<script type='text/javascript'>";
echo "location='main.php'"; // redireccionar acá.
echo "</script>";
}
}
?>
