Foros del Web » Programando para Internet » PHP »

redireccionar a una pagina

Estas en el tema de redireccionar a una pagina en el foro de PHP en Foros del Web. tengo una pagina (descarga.php) cuando hago click en un link de esta pagina, me redirecciona a otra pagina(descargando.php) donde le pasa la ruta a un ...
  #1 (permalink)  
Antiguo 03/01/2010, 19:10
 
Fecha de Ingreso: septiembre-2009
Ubicación: Ibague City
Mensajes: 32
Antigüedad: 14 años, 7 meses
Puntos: 0
redireccionar a una pagina

tengo una pagina (descarga.php) cuando hago click en un link de esta pagina, me redirecciona a otra pagina(descargando.php) donde le pasa la ruta a un script para descargar un archivo de mi servidor y sale la tipica ventana de descarga de archivos, quisiera que despues me redireccionara a la pagina(descarga.php) que es la principal. como podria hacerlo? .
Agradeciendo su apreciado tiempo y buena disposición.
  #2 (permalink)  
Antiguo 03/01/2010, 19:56
 
Fecha de Ingreso: agosto-2008
Mensajes: 20
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: redireccionar a una pagina

lo que puedes hacer es que después de procesar el script que recibe el código de descarga en descargando.php agregas la siguiente linea al final

header("location: descarga.php");

el archivo descargando.php seria mas o menos así:

<?php

tu codigo;
header("location: descarga.php");
?>
  #3 (permalink)  
Antiguo 03/01/2010, 20:32
 
Fecha de Ingreso: septiembre-2009
Ubicación: Ibague City
Mensajes: 32
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: redireccionar a una pagina

Gracias por responder miguelension, pero le coloque la instrucción que me diste que es muy logica, pero no me ejecuta el script que le envio, sino se devuelve directamente a la pagina.
el script que no ejecuta es:
echo "<script>document.location.href='$ruta';</script>\n";(donde $ruta es la ruta donde esta mi archivo) al ejecutarlo sale un cuadro de descarga el tipico de internet explorer o mozilla firefox.quiero que cuando salga me direccione otra vez a la pagina.Agradeceria mucho tu ayuda.
  #4 (permalink)  
Antiguo 03/01/2010, 20:45
 
Fecha de Ingreso: enero-2008
Mensajes: 381
Antigüedad: 16 años, 3 meses
Puntos: 19
Respuesta: redireccionar a una pagina

Claro... no le da tiempo a ejecucarse el script.

Prueba esto:

header("refresh: 5; url=descarga.php");

5 son los segundos hasta que se produce la redireccion
  #5 (permalink)  
Antiguo 03/01/2010, 21:08
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: redireccionar a una pagina

error, ningún código después de una descarga forzada debe funcionar... porque ya hay header() previos que le indican al navegador que se trata de una descarga...

y peor aún, ningún código impreso después de la descarga va a funcionar... ¿porque??

pues porque ya le han dicho al navegador "te mando un archivo", y punto... no se puede mezclar Javascript con el código binario... vaya, de que se puede se puede... pero, ¿que sentido tiene??

el navegador al detectar que se trataba de una descarga ningún código de Javascript se va a ejecutar... jamás, ya que no se trata de un documento web, es una descarga!!

la solución ideal es no redireccionar al script que hace la descarga, sino utilizar enlaces... si, el clásico <a/> que contiene el enlace que efectúa la descarga...

así de simple, te evitas para empezar: dejar la pagina que lista las descargas, de modo que regresar ya no sería necesario...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 03/01/2010, 21:36
 
Fecha de Ingreso: enero-2008
Mensajes: 381
Antigüedad: 16 años, 3 meses
Puntos: 19
Respuesta: redireccionar a una pagina

pateketrueke, segun lo que he entendido yo, la descarga se inicia por una redireccion en javascript, el contenido que genera php seria html, espero a que lo aclare el autor
  #7 (permalink)  
Antiguo 03/01/2010, 22:28
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: redireccionar a una pagina

Cita:
Iniciado por El-FeNiX Ver Mensaje
pateketrueke, segun lo que he entendido yo, la descarga se inicia por una redireccion en javascript, el contenido que genera php seria html, espero a que lo aclare el autor
buena pregunta... porque para postear en el foro de PHP, una redirección inicial usando Javascript es absurdo...

y definitivamente sería mejor que el mismo autor del tema aclare muy bien estos puntos...

- ¿como es el código que hace la redirección a la descarga??
- ¿como es el código que hace la descarga??
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 04/01/2010, 00:30
 
Fecha de Ingreso: enero-2008
Mensajes: 381
Antigüedad: 16 años, 3 meses
Puntos: 19
Respuesta: redireccionar a una pagina

Creo que el codigo que hace la redireccion es

<script>document.location.href='$ruta';</script>

... y la descarga supongo que sera un archivo estatico en $ruta
  #9 (permalink)  
Antiguo 19/04/2010, 15:36
 
Fecha de Ingreso: mayo-2005
Mensajes: 15
Antigüedad: 19 años
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

Etiquetas: redireccionar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:11.