Hola
me he leído todo el hilo
y básicamente es el mismo problema que tengo yo.
Tengo enlaces que en el onclick actualizan unos campos y envían el formulario a un script php descargar.php
El script php hace
Código:
ob_start();
// evito el tiempo maximo de ejecucion
@set_time_limit(0);
//Fuerzo la terminacion del script aunque el usuario aborte
@ignore_user_abort(false);
//----
//compruebo el tipo de fichero
$FILECMD = '/usr/bin/file';
$contentType = '';
$fp=popen("$FILECMD -bin $filename", 'r');
if (!$fp) $contentType='application/octet-stream';
else {
while($string=fgets($fp, 1024)) $contentType .= $string;
pclose($fp);
}
//----
// de todo el path me quedo solo con el nombre
$nom_corto=explode('/',$nombre);
$nom_corto=$nom_corto[count($nom_corto)-1];
// preparo las cabeceras
if(strpos($HTTP_SERVER_VARS['HTTP_USER_AGENT'], 'MSIE')){
// IE no puede descargar de sesiones sin cache
header('Cache-Control: public');
}
header('Content-Description: File Transfer');
header('Content-type: '.$contentType);
header('Content-Disposition: attachment; filename="'.$nom_corto.'"');
header("Content-length:".(string)(filesize($nombre)));
// salida en bloques en vez de usar fpassthru que puede cargarse la memoria del proceso
$fp= fopen ($nombre, 'r');
while (!feof ($fp)) {
$b= fread ($fp, 131072); // leo en bloques de 128k
echo $b;
}
fclose($fp);
ob_end_flush();
ob_end_clean();
Con esto me sale el dialogo de descarga del archivo pero me deja en la misma pagina y yo quiero que se vaya a otra pagina diferente.
La teoría como bien habéis expuesto antes es que después de los headers no se puede poner nada pero haciendo limpieza de buffer de salida con ob_end_clean() no debería cargarse las cabeceras enviadas y permitirme poner otras
como
header('location: index.php');
Ahí esta mi duda y mi problema de momento.
un saludo