Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] ¡Los headers ya han sido enviados!

Estas en el tema de ¡Los headers ya han sido enviados! en el foro de PHP en Foros del Web. Hola! Me explico. Un usuario llena un formulario y da clic en el submit. Se ejecuta un PHP que tiene la misión de guardar la ...
  #1 (permalink)  
Antiguo 30/06/2014, 20:43
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 2 meses
Puntos: 22
Pregunta ¡Los headers ya han sido enviados!

Hola!

Me explico. Un usuario llena un formulario y da clic en el submit. Se ejecuta un PHP que tiene la misión de guardar la inf del formulario en una base de datos, y en seguida envía un correo al email del usuario dando gracias. Eso es todo.

Pero resulta que en pantalla sale el siguiente error: Los headers ya han sido enviados.

He aquí el código en cuestión:

Código PHP:
if ( !$mail->send() )
    {
        
header("Location: ../php/bad-contacto.php");
    }
else
    {
        
$query "INSERT INTO `miBD`.`registros` (`id`, `nombre`, `email`) VALUES ('', '$nombre', '$email')";
        
mysql_query($query);

        
header("Location: ../php/ok-contacto.php");
    }

¿Alguna idea de cómo solucionar la cosa?

Saludos!
  #2 (permalink)  
Antiguo 01/07/2014, 06:11
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 1 mes
Puntos: 292
Respuesta: ¡Los headers ya han sido enviados!

Cita:
header("Location: ../php/bad-contacto.php");

<< Antes de eso....... se imprime algo con echo / print... hay un especio delante de <?php o bien se genera un warning / error / excepcion y se imprime ese "error"

Cualquier cosa que se envie al navegador rompe los headers


PD: verifica tambien estes guardando el documento como WITHOUT BOM (w/ BOM)
__________________
Salu2!
  #3 (permalink)  
Antiguo 02/07/2014, 07:03
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 2 meses
Puntos: 22
De acuerdo Respuesta: ¡Los headers ya han sido enviados!

Cita:
Iniciado por Italico76 Ver Mensaje
...Cualquier cosa que se envie al navegador rompe los headers...

Mi amigo Italico76, antes ya me había sucedio eso de lo headers. Conocía eso de que no tiene que haber espacios después del <?php, que no se tiene imprimir nada con un echo, print, etc. Así que no sé por qué no funcionaba la cosa, si cumplía al menos con estos detalles.

Pero ahora que leí tu respuesta, pensé que quizá el problema estaba con el include que realiza la conexión a la BD.

Pues resultó que el problema sí era ese. Si quito el include y pongo directamente las líneas que realizan la conexión, la cosa funciona.

Ahora veo que, entonces, el include es, digamos, un especie de echo.



Saludos!

  #4 (permalink)  
Antiguo 02/07/2014, 07:10
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 1 mes
Puntos: 292
Respuesta: ¡Los headers ya han sido enviados!

Cita:
Iniciado por berkeleyPunk Ver Mensaje
Ahora veo que, entonces, el include es, digamos, un especie de echo.
Hola,

No es que el include forzosamente envie algo al navegador pero en ese archivo incluido debes cumplir con lo mismo:

Nada debe imprise con echo / print... no puede haber un especio delante de <?php o bien se genera un warning / error / excepcion y se imprime ese "error" y tambien debe ser un documento WITHOUT BOM (w/ BOM)
__________________
Salu2!
  #5 (permalink)  
Antiguo 04/07/2014, 05:51
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 2 meses
Puntos: 22
De acuerdo Respuesta: ¡Los headers ya han sido enviados!

Cita:
Iniciado por Italico76 Ver Mensaje
...No es que el include forzosamente envie algo al navegador pero en ese archivo incluido debes cumplir con lo mismo...
Hice unas pruebas y sigue saliéndome el problema con que los headers ya se han enviado si pongo el include cumpliendo con los requisitos que indicas, Italico76.

Sólo me funciona de la otra forma, si quito el include y en su lugar pongo directamente las líneas de conexión a la BD.

Bueno, a estas alturas no importa mucho eso. Mientras me funcione, me doy por bien servido. Aunque, ciertamente, sería bueno saber cómo hacer que funcione con el include.

Saludos!
  #6 (permalink)  
Antiguo 04/07/2014, 06:03
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: ¡Los headers ya han sido enviados!

quita el ?> final de ese include...
__________________
>> Eleazan's Source
>> @Eleazan

Etiquetas: Ninguno
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 20:46.