PHP - Problema con el 'header'

 
Vista:

Problema con el 'header'

Publicado por Jorge (5 intervenciones) el 16/03/2010 13:22:37
Hola!

Estoy desarrollando un php con un registro de usuarios y por el momento todo funciona bien, mi problema es que al redireccionar de la pantalla de login al menu principal el header me da el siguiente error:

'Warning: Cannot modify header information - headers already sent by (output started at C:\AppServ\www...'

Ya tengo otro header puesto en otro archivo y me funciona perfectamente...

Os dejo el código por si me poder hechar una mano... Muchas gracias!

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
</head>
<body>
<?php
$usuario=$_POST["usuario"];
$password=$_POST["password"];
$conectar=mysql_connect("localhost", "root", "1234") or die ("No se puede establecer conexión con el servidor");
$seleccionar=mysql_select_db("bd_teorico", $conectar) or die("No se puede establecer conexión con la base de datos");
$consulta= mysql_query("select * from alumnos");
while ($row= mysql_fetch_array ($consulta)){
if($usuario==$row['Usuario'] and $password==$row['Password']){
header ("location: menu.php");
}
}
mysql_close($conectar);
?>
</body>
</html>
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:Problema con el 'header'

Publicado por PasabaPorAqui (43 intervenciones) el 16/03/2010 18:19:53
Buenas

El problema lo tienes porque ya hiciste una salida por pantalla. Los tags html, tendrías que limpiar la salida o evitar envíar nada hasta que hayas conectado.

Por lo que veo lo que tienes es un php que no va a lanzar ninguna salida, salvo que falle. Así que te puede valer simplemente con esto.

<?php
$usuario=$_POST["usuario"];
$password=$_POST["password"];
$conectar=mysql_connect("localhost", "root", "1234") or die ("No se puede establecer conexión con el servidor");
$seleccionar=mysql_select_db("bd_teorico", $conectar) or die("No se puede establecer conexión con la base de datos");
$consulta= mysql_query("select * from alumnos");
while ($row= mysql_fetch_array ($consulta)){
if($usuario==$row['Usuario'] and $password==$row['Password']){
header ("location: menu.php");
}
}
mysql_close($conectar);
?>

En caso de que no conecte o no se seleccione la BD, el error va a salir igualmente por pantalla, y si esto va bien y conectas, no tendrás problema con el header.
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:Problema con el 'header'

Publicado por Jorge (5 intervenciones) el 16/03/2010 19:43:06
Gracias, aunque sigo sin entender... ¿Como puedo limpiar la salida de los tag html?
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:Problema con el 'header'

Publicado por Diego Romero (1450 intervenciones) el 17/03/2010 02:53:13
No puedes.
Una vez que enviaste algo al navegador, ya está, no hay marcha atrás.

Cuando uses header() (y también session_start()) debes hacerlo de forma tal que la función se ejecute antes de enviar cualquier cosa al navegador. Esto se debe a que header() como su nombre indica envía y/o modifica las cabeceras HTTP que el servidor le envía al navegador y las cabeceras solo se pueden enviar una sola vez antes del cuerpo del documento HTML.
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