Ver Mensaje Individual
  #30 (permalink)  
Antiguo 12/03/2009, 14:44
Avatar de GatorV
GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Sintaxis descargar POO

Ya te comente que tienes que hacer, si no arreglas ese punto no va a servir tu sistema de descargas, tienes que evitar la salida de texto (lease HTML, texto plano, hojas de estilo, etc.) en la linea 19 de tu index.php.

Si no puedes quitar el texto ahí entonces vas a tener que mover el proceso de tus scripts a antes de la salida, por eso te decia que la forma "normal" de programar en PHP es así:
Código php:
Ver original
  1. <?php
  2. // - Iniciar sesión o algo por el estilo si es necesario
  3.  
  4. // - Lees datos de alguna sesión, comprobar un user, etc.
  5.  
  6. if( procesar() ) { // Si hay que procesar algo (un formulario, o una variable get o algo asi)
  7.        // Realizar proceso
  8.  
  9.        // En tu caso aqui envias los headers para descargar el archivo, y lees el file
  10.        // y terminas con un exit();
  11. }
  12.  
  13. // - Realizas mas procesos del script que sean necesarios y levantas variables para la "vista"
  14. //   por ejemplo
  15. $title = "Pagina 1";
  16. $mensaje = "Hola";
  17. ?>
  18. <!-- es a partir de aqui que empiezas con todo tu html ya que acabo el proceso PHP -->
  19. <html>
  20.     <head>
  21.           <title><?php echo $title; ?></title>
  22.     </head>
  23.     <body>
  24.           <h1><?php echo $title; ?></h1>
  25.           <p><?php echo $mensaje; ?></p>
  26.     </body>
  27. </html>

Si sigues ese proceso de diseño vas a evitar problemas como el que pones, ya que si no quitas esa salida de texto NO, repito NO vas a poder descargar el archivo correctamente, porque el contenido de texto se va a inyectar como contenido binario.

Aunque ahorita pensando una solución puede ser usar ob_start() y ANTES de enviar las cabeceras poner ob_end_clean() para borrar lo que habia antes del buffer, aunque repito es un "parche" es mejor si diseñas los scripts como te indico

Saludos