Hola.
Si, es posible hacer lo que dices. No directamente pero si indirectamente. Esos script que generas.. ¿los guardas en el disco duro del servidor o directamente los lanzas "al vuelo" al navegador?
Si los tienes guardados en el disco duro, debes enviar primero una cabecera que fuerce la descarga, como puede ser:
Código PHP:
//Enviamos las cabeceras http, que fuerzan la descarga de un archivo
if(isset($HTTP_SERVER_VARS['HTTP_USER_AGENT']) && strpos($HTTP_SERVER_VARS['HTTP_USER_AGENT'],'MSIE'))
{
header('Content-Type: application/force-download');
}
else
{
header('Content-Type: application/octet-stream');
}
Y luego usar la función readfile para leer el archivo y volcarlo a la salida...
Código PHP:
header('Content-Length: '.$file_size);//Cabecera con el tamaño del archivo
header('Content-disposition: attachment; filename='.$file_name); //Cabecera con el nombre del archivo
@readfile($file_path);
Esto está probado y funciona. Supongo que si lo generas al vuelo, deberás hacerlo en sustitución de la función readfile, y aunque no lo he probado, deberá funcionar igualmente. Debes eso si imprimir el código php con echo. Como lo hace php y no el servidor, no pasa por el interprete. Ya nos contarás que tal.
Saludos.