Foros del Web » Programando para Internet » PHP »

Duda con header().

Estas en el tema de Duda con header(). en el foro de PHP en Foros del Web. Buenas a todos, La duda que tengo es que en el manual de la función header() indican esto. Código PHP: <html> <?php /* Esto producirá un error. Fíjate en el html  * que se muestra antes que la llamada a header() */ header ...
  #1 (permalink)  
Antiguo 04/03/2011, 13:19
 
Fecha de Ingreso: mayo-2010
Mensajes: 84
Antigüedad: 13 años, 10 meses
Puntos: 6
Duda con header().

Buenas a todos,

La duda que tengo es que en el manual de la función header() indican esto.

Código PHP:
<html>
<?php
/* Esto producirá un error. Fíjate en el html
 * que se muestra antes que la llamada a header() */
header('Location: http://www.example.com/');
?>
Recuerde que header() debe ser llamado antes de mostrar nada por pantalla, etiquetas HTML, líneas en blanco desde un fichero o desde PHP. Es un error muy común leer código con funciones como include() o require(), u otro tipo de funciones de acceso de ficheros que incluyen espacios o líneas en blanco que se muestran antes de llamar a la función header(). Sucede el mismo problema cuando se utiliza un solo fichero PHP/HTML.

-----------------------------------------------------------------------

Pero yo tengo el siguiente script:

ex10.17.html
Código PHP:
<html><head><title>Redirecting the User</title></head>
<
body bgcolor="#33ff33">
 <
form action="ex10.17.php" method="post">
<
b>
Select a search engine<br>
 </
b>
 <
select name="new_url">
 <
option value="http://www.google.com" />Google
 
<option value="http://www.yahoo.com" /> Yahoo!
 <
option value="http://www.lycos.com" /> Lycos
 
<option value="/index.php" /> PHP Index
</select>
 <
input type="submit" value=" Get the Web Page!" />
 </
b>
 </
form>
 </
body>
</
html
ex10.17.php
Código PHP:
<html>
<h1>dsdsds</h1>
<?php

 
if($_POST[new_url] == ""){
   exit;
 }
else {
  
header("Location: $_POST[new_url]");
  exit;
  
}

?>
Y me funciona correctamente, no me sale el error.
Según indica la función no debe haber ningún caracter html, ni espacio en blanco ni resultado antes del header(), porqué funciona?
  #2 (permalink)  
Antiguo 04/03/2011, 20:31
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Duda con header().

lo mas seguro es que no tengas los errores activados, coloca esto al principio de tu codigo y ve si te da algun error
Código PHP:
Ver original
  1.  ini_set("display_errors", 1);
saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #3 (permalink)  
Antiguo 05/03/2011, 10:05
 
Fecha de Ingreso: mayo-2010
Mensajes: 84
Antigüedad: 13 años, 10 meses
Puntos: 6
Respuesta: Duda con header().

Gracias por tu respuesta carlos_belisario.
Me dí cuenta de lo que pasa.
Esto se debe a que los OUTPUT BUFFERING del php los tengo en ON.
Lo que significa que en todos los scripts php están incluidos las funciones ob_start() al principio y el ob_end_flush() al final.
Si estuviera en OFF el OUTPUT BUFFERING necesitaría poner esas funciones para que no salga el error, tanto en el setcookie() como en el header() que también es una función que necesita ejecutarse en la cabezera del http, antes de cualquier código.
Sé que es una pregunta un poco tonta y sin mucha importancia, pero ya que existe este foro, me gusta despejar todo tipo de dudas con los que saben más. Ya es la tercera vez que me voy dando cuenta de lo que pasa después de postear en el foro, sorry.

Un saludo.
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 13:08.