Ver Mensaje Individual
  #4 (permalink)  
Antiguo 18/01/2008, 06:29
idasilva
 
Fecha de Ingreso: enero-2008
Mensajes: 1
Antigüedad: 16 años, 3 meses
Puntos: 0
Hola! A mi paso lo mismo, solo que los fin de linea y retorno de carro los tenía luego del "?>". No le encuentro el sentido a esto...es decir, tengo un archivo php con includes en la cabecera y más adelante hago varias cosas: creacion de objetos, dump de la base mysql , zipeo el sql obtenido y finalmente se lo envío al cliente con

header("Cache-Control: ");// leave blank to avoid IE errors
header("Pragma: ");// leave blank to avoid IE errors
header("Content-type: application/octet-stream");
header('Content-Disposition: attachment; filename='.$fn);
header ("Content-Length: ".filesize($f));
readfile($f);

Ahora ...¿porque me agrega en este fichero zip (solo en el que voy a descargar en el cliente) los retornos de carro de los archivos de include, es un misterio para mi? Soy novato en programación web, pero supongo/imagino que al hacer el include, existira una rutina que hace algo así como un "echo" de cada linea del archivo y esta incluyendo los retornos de carro que estan antes o luego de los tags de php y estos otros comandos "header" transmiten al cliente todo lo que sea de tipo "print", "echo", readfile...(cualquier cosa que signifique una salida) y que a ocurrido durante "toda" la ejecución de este php. ¿Alguien me lo puede explicar si hay una forma de indicar claramente lo que se quiere enviar al cliente? En este ejemplo en los header esta bien indicado que es el archivo $f...pero agrega esto otro...me resulta una locura.¿?

El tema de estos "extraños" retornos de carro que terminan en el buffer de salida y que vienen de los archivos includes lo solucione en mi codigo borrando el buffer de salida ("ob_end_clean") antes de la transmisión. Me quedo algo así:

//borro el contenido del buffer de salida x cualquier basura que pueda tener (retornos de carro de los include x ejemplo)
ob_end_clean();

header("Cache-Control: ");// leave blank to avoid IE errors
header("Pragma: ");// leave blank to avoid IE errors
header("Content-type: application/octet-stream");
header('Content-Disposition: attachment; filename='.basename($this->fich_zip));
header ("Content-Length: ".filesize($this->fich_zip));
readfile($this->fich_zip);
ob_end_flush();

Última edición por GatorV; 18/01/2008 a las 08:50