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 originalrequire_once ("configuraciones.php"); // incluir configuracion.
$archivo = "archivo.pdf"; // nombre del archivo pdf a descargar
if ($_GET['desc'] == "variable_de_control_del_archivo") {
$fichero = /home/user/public_html/descarga/".$archivo; // aqui la ruta al archivo pdf
if (file_exists($fichero)) {
header ("Expires: Thu, 27 Mar 1980 23:59:00 GMT"); //la pagina expira en una fecha pasada
header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); //ultima actualizacion ahora cuando la cargamos
header ("Cache-Control: no-cache, must-revalidate"); //no guardar en CACHE
header ("Pragma: no-cache");
header ("Content-type: application/pdf");
header ("Content-Disposition: attachment ; filename=".basename($archivo));
ob_clean();
flush();
readfile($fichero);
exit;
}else{ // Si no existe el archivo, mostramos error
?>
<p style='font-family: georgia; text-align: center; color: #CC0000; font-weight: bold; font-size: 22pt; padding-top: 120pt;'>Archivo inexistente</p>
<?php
}
} else { // Si no tiene la variable de control, mostramos otro error
?>
<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>
<?php
}
?>
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.