Redireccionamiento de página después de cierto tiempo PHP

94

Existe una determinada función PHP para redirigir después de un tiempo. Lo vi en alguna parte pero no recuerdo. Es como la redirección de Gmail después de iniciar sesión. Por favor, ¿alguien podría recordármelo?

afaolek
fuente
@zerkms: Parece que hay un par de formas de hacerlo.
Wesley Murch
2
@Wesley Murch: el Refreshencabezado no es estándar. Nunca usaría cosas que no estén cubiertas con RFC
zerkms
stackoverflow.com/questions/18305258/… me llevó a stackoverflow.com/questions/283752/refresh-http-header que dice que, además de no ser estándar, el encabezado de actualización también causa problemas de rendimiento en Internet Explorer.
Edward

Respuestas:

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

esta es la forma de configuración de php headerque lo redireccionará wherever.phpen 5 segundos


Recuerde que se debe llamar a header () antes de enviar cualquier salida real, ya sea mediante etiquetas HTML normales, líneas en blanco en un archivo o desde PHP. Es un error muy común leer código con funciones include, o require, u otra función de acceso a archivos, y tener espacios o líneas vacías que se generan antes de que se llame a header (). El mismo problema existe cuando se usa un solo archivo PHP / HTML. (fuente php.net )

Teneff
fuente
1
interesante, nunca había visto este método antes ... pero ¿no va a mostrar una página en blanco o simplemente inactivo sin ningún mensaje hasta que se acabe el tiempo?
Ibu
va a mostrar la página ... todo lo que hace es configurar el encabezado que le dirá al navegador que actualice la página en 5 segundos, si realmente desea mostrar la página en blanco, simplemente usedie();
Teneff
2
Lo malo de esto es: este encabezado no está en el estándar HTTP, los clientes pueden ignorarlo.
Sven
:) ¡Buena idea! ¿Y si desea enviar (mantener) algunas variables y utilizarlas en la página recargada?
Mugur Ungureanu
Es posible que hayan pasado mil millones de años desde esta publicación, pero ¿cómo se publica un mensaje mientras se redirecciona como tal vez "Redireccionando la página, por favor espere"?
CAO
25

Puede usar javascript para redirigir después de un tiempo

setTimeout(function () {
   window.location.href= 'http://www.google.com'; // the redirect goes here

},5000); // 5 seconds
Ibu
fuente
11
La pregunta era para PHP
Benjamin Intal
5
@Jami es verdad, por eso dije que el OP puede usar javascript en su lugar.
Ibu
@BenjaminIntal Esto también funciona como una gran alternativa si el navegador ignora una redirección en el encabezado. Tendría que usar un navegador que no acepte el encabezado Y tener Javascript deshabilitado para no recibir la redirección.
Super Cat
18

Puedes probar esto:

header('Refresh: 10; URL=http://yoursite.com/page.php');

Donde 10 es en segundos.

Royrui
fuente
11

querría usar php para escribir una etiqueta meta.

<meta http-equiv="refresh" content="5;url=http://www.yoursite.com">

No se recomienda pero es posible. El 5 en este ejemplo es el número de segundos antes de que se actualice.

Juan
fuente
3
header( "refresh:5;url=wherever.php" );

de hecho, puede usar este código como dijo teneff, pero no tiene que colocar necesariamente el encabezado antes de cualquier salida enviada (esto generaría un "no se puede reubicar el encabezado ...: error 3").

Para resolver esto, use la función php ob_start();antes de que se publique cualquier html.

Para terminar el ob, simplemente coloque ob_end_flush();después de que no tenga ninguna salida html.

¡salud!

JJJack
fuente
2

Si está redirigiendo con PHP, entonces simplemente usaría el comando sleep () para dormir durante tantos segundos antes de redirigir.

Pero creo que a lo que te refieres es a la metaetiqueta de actualización:

http://webdesign.about.com/od/metataglibraries/a/aa080300a.htm

Jason Palmer
fuente
Usar dormir no es el enfoque convencional, como se dijo anteriormente, se debe usar la función de encabezado.
Maksim
¿El sueño no solo retrasa la conexión?
FluorescentGreen5
2

La actualización de PHP después de 5 segundos no funcionó para mí al abrir un diálogo Guardar como para guardar un archivo: (encabezado ('Tipo de contenido: texto / plano'); encabezado ("Contenido-Disposición: archivo adjunto; nombre de archivo = $ nombre de archivo > ");)

Una vez que se hizo clic en el enlace Guardar como y se guardó el archivo, la actualización programada se detuvo en la página de llamada.

Sin embargo, muchas gracias, la solución javascript de ibu siguió activando y actualizando mi página web, que es lo que necesitaba para mi aplicación específica. Así que gracias ibu por publicar la solución javascript al problema php aquí.

Puede usar javascript para redirigir después de un tiempo

setTimeout(function () {    
    window.location.href = 'http://www.google.com'; 
},5000); // 5 seconds
JustJohn
fuente
2

Puede utilizar este código JavaScript para redireccionar después de un tiempo específico. Espero que funcione.

setRedirectTime(function () 
{
   window.location.href= 'https://www.google.com'; // the redirect URL will be here

},10000); // 10 seconds
Prodip Kirtania
fuente