Foros del Web » Programando para Internet » PHP »

Duda: ¿Por qué los caractéres de nueva línea causan problemas a los encabezados http?

Estas en el tema de Duda: ¿Por qué los caractéres de nueva línea causan problemas a los encabezados http? en el foro de PHP en Foros del Web. Estoy estudiando para el examen de certificación de PHP5 y uno de los primeros temas explica que escribir un caracter de nueva línea antes de ...
  #1 (permalink)  
Antiguo 17/11/2008, 23:54
 
Fecha de Ingreso: noviembre-2008
Mensajes: 13
Antigüedad: 15 años, 5 meses
Puntos: 0
Información Duda: ¿Por qué los caractéres de nueva línea causan problemas a los encabezados http?

Estoy estudiando para el examen de certificación de PHP5 y uno de los primeros temas explica que escribir un caracter de nueva línea antes de que los encabezados http hayan sido escritos puede causar consecuencias desagradables, nunca había escuchado algo como esto (supongo porque es más teórico que práctico).

Más adelante dice que para resolver el problema el parser quita el primer caracter de nueva línea después de la etiqueta de cierre (?>).

Y por último como nota importante dice;

Cita:
An easy way to prevent spurious output from an include file is to omit the closing tag
at the end, which the parser considers this perfectly legal.
Alguien que ya sepa de esto me podría explicar lo más detalladamente posible por favor, les doy las gracias por adelantado.
  #2 (permalink)  
Antiguo 18/11/2008, 00:03
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Duda: ¿Por qué los caractéres de nueva línea causan problemas a los encabe

claro... es algo que también no conocía

según el manual de PHP algunas funciones que envían headers al cliente necesitan que no exista una salida previa al header enviado... vaya, nada de nada (esto justifica la primer parte, no debe existir algo al inicio del script; tan solo el <?php)

o bien, imagina que estas enviando una imagen o ZIP con PHP.... que pasa si tienes un carácter de mas al inicio o final del script ? ... pues se corrompe!

este es un error común al enviar headers/cookies/session etc. si revisas las FAQ's (y espero nunca caigas en este vicio) se relata perfectamente este comportamiento

con respecto al segundo punto, lo lei en el manual... justo como tu lo tienes (o algo así)

el compilar puede omitir el ?> (solo si es un bloque completo) final... desconozco la verdadera razón, pero eso reduce las posibilidades de error... no tanto con saltos de nueva linea, sino con cualquier otro carácter, cadena, salida...

un script completo, debería ir así.... según esta guía de estilo (bueno, no necesariamente)
(no se si valga la pena, pero yo ya estoy escribiendo casi como dice ahí)

foo.php
Código PHP:
<?php

// ....

echo "Hello World!";


// ----

/* EOF: ./el/path/a/foo.php */
http://codeigniter.com/user_guide/ge...tyleguide.html
(te recomiendo su lectura, es casi genial)

espero te sirva de algo, suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 18/11/2008, 00:15
 
Fecha de Ingreso: noviembre-2008
Mensajes: 13
Antigüedad: 15 años, 5 meses
Puntos: 0
De acuerdo Respuesta: Duda: ¿Por qué los caractéres de nueva línea causan problemas a los encabe

Vaya me sorprende el tiempo de respuesta :)

Pues muchas gracias creo que ya lo he comprendido mejor y de hecho me has refrescado la memoria, es verdad que cuando usas sesiones debes poner la función session_start( ) antes de escribir cualquier cosa y un profe me explico que era proque la función encesitaba que no hubiera nada en el encabezado justo como dices.

Y el ejemplo del zip enviado me aclaro un poco más ese tema, muchas gracias paisano se te agradece mucho

Por cierto, quien recomienda ese estilo de codificar?
  #4 (permalink)  
Antiguo 18/11/2008, 10:06
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Duda: ¿Por qué los caractéres de nueva línea causan problemas a los encabe

Zend directamente: Coding Guidelines.

Saludos
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 06:08.