Foros del Web » Programando para Internet » PHP »

problema con el header

Estas en el tema de problema con el header en el foro de PHP en Foros del Web. hola amigos del foro otra ayudita saben tengo un problemita con esto q es el haiden ya que me marca un error aqui esta el ...
  #1 (permalink)  
Antiguo 17/10/2005, 23:57
 
Fecha de Ingreso: noviembre-2004
Mensajes: 181
Antigüedad: 13 años, 1 mes
Puntos: 1
problema con el header

hola amigos del foro otra ayudita
saben tengo un problemita con esto q es el haiden ya que me marca un error
aqui esta el codigo y luego les doy el error y le marco donde esta el eroor en q linea,


<?php
session_start();
echo "<html>\n";
echo "<head>\n";
echo "<title>Inicio de sesion</title>\n";
echo "</head>\n";

echo "<body bgcolor='#003399' text='#00FF99'>\n";

if(isset($btningresar))
{
$enlace = mysql_connect("localhost", "root", "") or die("No pudo conectarse : " . mysql_error());
mysql_select_db("hospital") or die("No pudo seleccionarse la BD.");

$consulta="SELECT usuario.login,usuario.pas FROM usuario where LOGIN='$txtlogin' and PAS='$txtpassword'";
$res=mysql_query($consulta) or die("La consulta fall&oacute;: " . mysql_error());
mysql_close();
$num=mysql_numrows($res);

if ($num)
{
echo "<center>DATOS INGRESADOS CORRECTAMENTE</center><br>";
session_register('LOGIN');
$LOGIN=$txtlogin;
header("Location:menu.php");
}
else
{
echo "<center><h3><b>INGRESE SUS DATOS CORRECTAMENTE<b><h3></center>";
echo "<a href='$PHP_SELF'><center>ATRAS</center></a>";
}

}

else
{
echo "<center><h2><b>Mi Inicio2</b></h2></center><br><br>\n";

echo "<form action='$_SERVER' method='post'>\n";

echo "<center>\n";
echo "<table border='1' width='100' height='74'>\n";
echo " <tr> \n";
echo " <td width='50%' height='19'><strong><font face='Verdana'>Login</font></strong></td>\n";
echo " <td width='50%' height='19'><input name='txtlogin' type='text' size='15' maxlength='10'></td>\n";
echo " </tr>\n";

echo " <tr> \n";
echo " <td width='50%' height='18'><strong><font face='Verdana'>Password</font></strong></td>\n";
echo " <td width='50%' height='18'><input name='txtpassword' type='password' size='15' maxlength='10'></td>\n";
echo " </tr>\n";

echo "<tr> \n";
echo " <td><center><a href='inicio2.php'><img src='../general/imagen/mano.gif' border='o'></a></td></center>\n";
echo " <td><input type='submit' value='Ingresar' name='btningresar'></td>\n";
echo "</tr>\n";

echo "</table>\n";
echo "</center>\n";

echo "</form>\n";
echo "</body>\n";
echo "</html>\n";
}
?>


y el error que me arroja es el siguiente
Warning: Cannot add header information - headers already sent by (output started at C:\apache\htdocs\mi_sistema\index.php:3) in C:\apache\htdocs\mi_sistema\index.php on line 25
  #2 (permalink)  
Antiguo 18/10/2005, 02:34
Avatar de jerkan  
Fecha de Ingreso: septiembre-2005
Mensajes: 1.607
Antigüedad: 12 años, 2 meses
Puntos: 18
Cita:
if ($num)
{
echo "<center>DATOS INGRESADOS CORRECTAMENTE</center><br>";
session_register('LOGIN');
$LOGIN=$txtlogin;
header("Location:menu.php");
}
Antes de llamar a la función header no se debe enviar ningun mensaje a la salida. Ese echo de ahí no me gusta un pelo
  #3 (permalink)  
Antiguo 18/10/2005, 02:39
 
Fecha de Ingreso: octubre-2005
Mensajes: 3
Antigüedad: 12 años, 1 mes
Puntos: 0
No se que te pueda pasar yo lo probe pero a mi no me da ese error, vuelvo y te repito lo probe desde un servidor local que tengo en mi pc y me muestra la pagina de acceso, login y password
  #4 (permalink)  
Antiguo 18/10/2005, 07:37
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Un header() .. de PHP envia cabeceras HTTP al navegador (en tu caso de redirección) ..

Si te fijas en la lógica de tu script .. NO tiene sentido poner ese HTML:
Código PHP:
echo "<html>\n";
echo 
"<head>\n";
echo 
"<title>Inicio de sesion</title>\n";
echo 
"</head>\n";

echo 
"<body bgcolor='#003399' text='#00FF99'>\n"
si tu código hace dos cosas:
1) valida cierta condición .. si no se cumple, redireccionas a otra página. Ahí tampoco corresponde otras "salida" como lo que menciona jerka.
2) si pasa la validación .. generas una página con un mensaje ..


Código PHP:
<?php
session_start
();

if(isset(
$btningresar))
{
$enlace mysql_connect("localhost""root""") or die("No pudo conectarse : " mysql_error());
mysql_select_db("hospital") or die("No pudo seleccionarse la BD.");

$consulta="SELECT usuario.login,usuario.pas FROM usuario where LOGIN='$txtlogin' and PAS='$txtpassword'";
$res=mysql_query($consulta) or die("La consulta fall&oacute;: " mysql_error());
mysql_close();
$num=mysql_numrows($res);

if (
$num)
{
 
// echo "<center>DATOS INGRESADOS CORRECTAMENTE</center><br>";
// Este mensaje deberías mostrarlo en la página que redireccionas .. NO aquí. Para eso puedes usar una variable de control en:
// header("Location:menu.php?cod_error=1"); 
// y la identificas donde redireccionas si existe.
// Ya que usas sesiones, también puedes usar una variable más de sesión para este propósito y ahorrarte la que pasas por el URL.

session_register('LOGIN'); // este uso de sesiones NO debes usarlo .. revisa las FAQ's del foro PHP o visita [url]www.php.net/session[/url]

$LOGIN=$txtlogin;
header("Location:menu.php"); 
exit; 
// terminamos la ejecución del script aquí .. no nos interesa más.
}
else
{

// Aquí es donde debes componer tu página HTML completa si llega a este caso.

echo "<html>\n";
echo 
"<head>\n";
echo 
"<title>Inicio de sesion</title>\n";
echo 
"</head>\n";

echo 
"<body bgcolor='#003399' text='#00FF99'>\n";


echo 
"<center><h3><b>INGRESE SUS DATOS CORRECTAMENTE<b><h3></center>";
echo 
"<a href='$PHP_SELF'><center>ATRAS</center></a>";
}

}

else
{
echo 
"<center><h2><b>Mi Inicio2</b></h2></center><br><br>\n";

echo 
"<form action='$_SERVER' method='post'>\n";

echo 
"<center>\n";
echo 
"<table border='1' width='100' height='74'>\n";
echo 
" <tr> \n";
echo 
" <td width='50%' height='19'><strong><font face='Verdana'>Login</font></strong></td>\n";
echo 
" <td width='50%' height='19'><input name='txtlogin' type='text' size='15' maxlength='10'></td>\n";
echo 
" </tr>\n";

echo 
" <tr> \n";
echo 
" <td width='50%' height='18'><strong><font face='Verdana'>Password</font></strong></td>\n";
echo 
" <td width='50%' height='18'><input name='txtpassword' type='password' size='15' maxlength='10'></td>\n";
echo 
" </tr>\n";

echo 
"<tr> \n";
echo 
" <td><center><a href='inicio2.php'><img src='../general/imagen/mano.gif' border='o'></a></td></center>\n";
echo 
" <td><input type='submit' value='Ingresar' name='btningresar'></td>\n";
echo 
"</tr>\n";

echo 
"</table>\n";
echo 
"</center>\n";

echo 
"</form>\n";
echo 
"</body>\n";
echo 
"</html>\n";
}
?>
Nota: Debes usar los arrays superglobales: $_POST, $_SESSION .. $_SERVER .. etc .. Te invito a ver las FAQ's de este foro.

Un saludo,
  #5 (permalink)  
Antiguo 18/10/2005, 10:15
 
Fecha de Ingreso: noviembre-2004
Mensajes: 181
Antigüedad: 13 años, 1 mes
Puntos: 1
muchas gracias me funciona ala perfeccion
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 22:32.