Ver Mensaje Individual
  #9 (permalink)  
Antiguo 19/04/2010, 15:36
plcabgut
 
Fecha de Ingreso: mayo-2005
Mensajes: 15
Antigüedad: 18 años, 11 meses
Puntos: 0
Respuesta: redireccionar a una pagina

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

Última edición por plcabgut; 21/04/2010 a las 08:42