¿Redirigir a la URL especificada en la finalización del script PHP?

votos
31

¿Cómo puedo obtener una función PHP para ir a un sitio web específico cuando se termina de ejecutar?

Por ejemplo:

<?php
  //SOMETHING DONE
  GOTO(http://example.com/thankyou.php);
?>

Realmente me gustaría lo siguiente ...

<?php
  //SOMETHING DONE
  GOTO($url);
?>

Quiero hacer algo como esto:

<?php
  //SOMETHING DONE THAT SETS $url
  header('Location: $url');  
?>
Publicado el 09/12/2008 a las 19:50
fuente por usuario
En otros idiomas...                            


7 respuestas

votos
61

<?
ob_start(); // ensures anything dumped out will be caught

// do stuff here
$url = 'http://example.com/thankyou.php'; // this can be set based on whatever

// clear out the output buffer
while (ob_get_status()) 
{
    ob_end_clean();
}

// no redirect
header( "Location: $url" );
?>
Respondida el 09/12/2008 a las 20:05
fuente por usuario

votos
28

Siempre puede usar la etiqueta para actualizar la página, o simplemente colocar el javascript necesario en la página al final que redirigiría la página. Incluso podría lanzar eso en una función de carga, por lo que una vez que termine, la página se redirige

<?php

  echo $htmlHeader;
  while($stuff){
    echo $stuff;
  }
  echo "<script>window.location = 'http://www.yourdomain.com'</script>";
?>
Respondida el 10/12/2008 a las 05:44
fuente por usuario

votos
13

Si "ALGO HECHO" no invoca ninguna salida a través de echo / print / etc, entonces:

<?php
   // SOMETHING DONE

   header('Location: http://stackoverflow.com');
?>
Respondida el 09/12/2008 a las 20:02
fuente por usuario

votos
5

Tenga en cuenta que esto no funcionará:

header('Location: $url');

Necesitas hacer esto (para expansión variable):

header("Location: $url");
Respondida el 09/12/2008 a las 20:40
fuente por usuario

votos
3
<?php

// do something here

header("Location: http://example.com/thankyou.php");
?>
Respondida el 09/12/2008 a las 20:03
fuente por usuario

votos
0

Aquí hay una solución a las "cabeceras ya fueron enviados" problema. Supongamos que usted está validando y correo electrónico un formulario. Asegúrese de que el código PHP es la primera cosa en su página ... antes que cualquiera de las etiquetas DOCTYPE y de cabeza y todo ese jazz. Entonces, cuando el POST llega de vuelta a la página el código php vendrá primero y no encontrarse con los jefes enviados ya un problema.

Respondida el 21/05/2014 a las 10:43
fuente por usuario

votos
0

no se olvide de poner un 'mueren' después de su llamada a hacer que suceda el redireccionamiento antes de que el resto del código de la página se ejecuta tiró. a. si ha encabezado funciones final de la página que harán caso omiso de los más arriba en el código.

b: im suponiendo que usted no quiere que el resto del código de la página para ser ejecutado y que por eso su puesta en esta redirección en el primer lugar [tal vez].

ejemplo:

<?php

// do something here

header("Location: http://example.com/thankyou.php");
die();

//code down here now wont get run

?>
Respondida el 11/06/2013 a las 15:22
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more