PHP - Php y redireccionar

 
Vista:

Php y redireccionar

Publicado por Jorge (48 intervenciones) el 09/09/2020 13:35:08
Buenas tardes,

Tengo una pantalla principal con un botón que dice procesar, al darle a ese botón lo que hace es generar un ZIP que contiene documentos en su interior, sale la típica ventana de sistema que pide al usuario si quiere abrirlo o guardarlo. Hasta aquí bien pero resulta que una vez se ha descargado el documento ZIP le indico al código fuente que haga un redireccionamiento a la pantalla anterior y no lo hace.

El código es el siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
// Creamos un instancia de la clase ZipArchive
    $zip = new ZipArchive();
 
    $nombreZIP1 = $nombreCarpeta.'.zip';
    $nombreZIP = str_ireplace(" ","_",$nombreZIP1);
 
    // Creamos y abrimos un archivo zip temporal
    $zip->open("$nombreZIP",ZipArchive::CREATE);
 
//Abrir el directorio donde se encuentran los ficheros descargados
    $dir = $to;
    $dir_open=opendir($dir);
 
    $files = array();
    while ($current = readdir($dir_open)){
        if( $current != "." && $current != "..") {
          if(is_dir($dir.$current)) {
            //  echo $dir.$current.'/';
          } else {
            //echo $current;
            $files[] = $current;
          }
        }
    }
 
if ($zip->open("$nombreZIP",ZipArchive::CREATE) !== TRUE){
        exit("cannot open <$filename>\n"); // puedes lanzar una excepción
    }
 
    // USO TU array $files no verifiqué si lo recogiste correctamente
    foreach($files as $file){
        $localfile = $dir."/".$file;
        $zip->addfile($localfile, $file); // las demás opciones por defecto
    }
 
    $zip->close();
 
// Creamos las cabezeras que forzaran la descarga del archivo como archivo zip.
    header("Content-type: application/octet-stream");
    header("Content-disposition: attachment; filename=".$nombreZIP);
    // leemos el archivo creado
    readfile($nombreZIP);
    // Por último eliminamos el archivo temporal creado
    unlink($nombreZIP);//Destruye el archivo temporal
 
echo"<script type='text/javascript'>
    window.location='paraImprimir.php';
</script>";

El script final no me lo ejecuta. ¿Qué puedo hacer para que una vez descargado el fichero ZIP me redireccione a
paraImprimir.php'?

¡Gracias de antemano!

Saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Luis
Val: 128
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Php y redireccionar

Publicado por Luis (31 intervenciones) el 09/09/2020 14:42:16
Hola, usa el comando header de php

1
header("Location: http://www.ejemplo.es");
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Php y redireccionar

Publicado por Jorge (48 intervenciones) el 09/09/2020 21:13:09
Hola Luis,

Gracias por tu respuesta. Como prueba he incluido el siguiente código al final de todo:

1
header("Location: http://www.google.es");

Esta nueva línea la he puesto en el lugar dónde tenía el siguiente script:

1
2
3
4
5
echo"<script type='text/javascript'>
    window.location='paraImprimir.php';
</script>";

Pero no hace nada.

Descarga el ZIP correctamente pero no ejecuta el header del final de todo :(

Me estoy volviendo loco con este tema.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Php y redireccionar

Publicado por Jorge (48 intervenciones) el 21/09/2020 10:04:40
Hola Luís,

¿Sabes si cuando hay más de un header hay forma de priorizar cuál quieres que ejecute primero y cuál después?

Gracias!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Yoel
Val: 617
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Php y redireccionar

Publicado por Yoel (198 intervenciones) el 21/09/2020 23:38:48
Hola jorge, respondiendo tu pregunta lo que te puedo decir es que php es sincrónico, por lo que se te va a ejecutar linea por linea. En el caso que quieras hacer, más de una redirección en un mismo script eso no es posible debido a que una vez que envías la la cabecera hacia el otro script, el anterior ya no estaría activo por lo que tendrías que colocar la redirección en el script que este activo en ese momento.

Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar