Ver Mensaje Individual
  #9 (permalink)  
Antiguo 11/10/2012, 09:48
rbczgz
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: No funciona la descarga de un pdf mediante header()

Por supuesto que comparto la solución, en definitiva es lo mismo que tenía pero quitando los includes que contenían HTML y alguna otra línea de HTML también, queda así:

Código PHP:
Ver original
  1. require_once ("configuraciones.php"); // incluir configuracion.
  2.  
  3. $archivo = "archivo.pdf"; // nombre del archivo pdf a descargar
  4.  
  5. if ($_GET['desc'] == "variable_de_control_del_archivo") {
  6.  
  7.  
  8. $fichero = /home/user/public_html/descarga/".$archivo; // aqui la ruta al archivo pdf
  9. if (file_exists($fichero)) {
  10.     header ("Expires: Thu, 27 Mar 1980 23:59:00 GMT"); //la pagina expira en una fecha pasada
  11.     header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); //ultima actualizacion ahora cuando la cargamos
  12.     header ("Cache-Control: no-cache, must-revalidate"); //no guardar en CACHE
  13.     header ("Pragma: no-cache");
  14.     header ("Content-type: application/pdf");
  15.     header ("Content-Disposition: attachment ; filename=".basename($archivo));
  16.     ob_clean();
  17.     flush();
  18.     readfile($fichero);
  19.     exit;
  20. }else{ // Si no existe el archivo, mostramos error
  21. ?>
  22. <p style='font-family: georgia; text-align: center; color: #CC0000; font-weight: bold; font-size: 22pt; padding-top: 120pt;'>Archivo inexistente</p>
  23. <?php
  24.  
  25. }
  26.  
  27. } else { // Si no tiene la variable de control, mostramos otro error
  28. ?>
  29. <p style='font-family: georgia; text-align: center; color: #CC0000; font-weight: bold; font-size: 22pt; padding-top: 120pt;'>No estás autorizado a descargar este e-book.</p>
  30. <?php
  31. }
  32.  
  33. ?>

Así de sencillo, pero me compliqué la vida aprovechando otro script que tenía y no me di cuenta de quitarle los includes de los menúes y encabezados, así como los encabezados HTML que había por ahí.

Todo por no revisar bien, pero ahora ya está, espero que le sirva a alguien, está probado en FF, IE, Chrome, Opera y Safari y a mi me funciona en todos.