Estoy teniendo unos "ligeros" problemas con el dichoso ie y la descarga de archivos.
Os cuento, quiero que al dar a un enlace vaya a una página que cree un archivo de texto plano con los datos sacados de una base de datos y descarge el archivo con un nombre dinámico, creado dependiendo de la fecha.
Lo he conseguido hacer, después de mirar por varios sitios, de la siguiente forma:
Código PHP:
<?php
require_once ("../../cgi/db_aux.php");
require ("../../extras/db_conf.inc");
$enlace = db_connect($sql_host, $sql_usuario, $sql_pass);
db_database('prointec_horas');
$where = array(
'num_emp LIKE "%"',
);
$resultado = db_query('num_emp, codigo, horas_imputadas, fecha', 'partes_horas', $where);
$salida ='"Num_emp","Codigo","Horas","Fecha"'."\r\n";
while ($linea = mysql_fetch_row($resultado) ){
$salida .= '"'.$linea[0].'","'.$linea[1].'","';
$salida .= $linea[2].'","'.$linea[3].'"';
$salida .= "\r\n";
}
// creo un archivo temporal, introduzco los datos.
$nombre_temp = tempnam("/tmp", "DAT");
$gestor = fopen($nombre_temp, "w");
fwrite($gestor, $salida);
fclose($gestor);
// abrir el archivo en modo binario
$filename = 'horas'.date(my).'.txt';
$gestor = fopen($nombre_temp, 'rb');
// enviar las cabeceras correctas
header("Content-Transfer-Encoding: binary");
header('Content-Type: application/txt');
header("Content-Length: " . filesize($nombre_temp));
header('Content-Disposition:attachment;filename="'.$filename.'"');
// volcar la imagen y detener el script
fpassthru($gestor);
exit;
unlink($nombre_temp);
?>
El fallo viene de que pone el nombre del enlace y no llega a descargar nada (enlazo con una url del estilo http://dominio/admin/?op=enviar y me sale directamente descargar ?op=enviar, en vez de horasXXXX.txt)
Alguien me puede decir porqué diantres no me funcionan bien los headers con el IE ?? (Todos sabemos lo "maravilloso" *cought, *cought, que es el IE, y que nadie debería usarlo, el problema es que eso no se le puede decir a un jefe)
Alguna otra idea para descargar el archivito en cuestión¿?
Gracias de antemano...
PS: Apache 1.3.34, PHP 4.3.11, MySQL 3.23.49. El desarrollo lo hago en un XP, a la espera de que me dejen instalar Debian ;) pero en producción está bajo una Debian (Con la misma configuración)
PS2: Sobre la consulta a la base de datos, lo hago con unas funciones propias, así q podéis saltaros esa parte ;)