Redirecionamento de página após certo tempo PHP

94

Existe uma certa função PHP para redirecionar depois de algum tempo. Eu vi em algum lugar, mas não consigo me lembrar. É como o redirecionamento do gmail após o login. Por favor, alguém poderia me lembrar?

Afaolek
fonte
@zerkms: Parece que existem algumas maneiras de fazer isso.
Wesley Murch
2
@Wesley Murch: o Refreshcabeçalho não é padrão. Eu nunca usaria coisas que não são cobertas por RFCs
zerkms
stackoverflow.com/questions/18305258/… me levou a stackoverflow.com/questions/283752/refresh-http-header que afirma que, além de não ser padrão, o cabeçalho de atualização também causa problemas de desempenho no Internet Explorer.
Edward

Respostas:

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

esta é a maneira php de definir o headerque irá redirecioná-lo wherever.phpem 5 segundos


Lembre-se de que header () deve ser chamado antes que qualquer saída real seja enviada, seja por tags HTML normais, linhas em branco em um arquivo ou de PHP. É um erro muito comum ler código com funções include ou require, ou outra função de acesso ao arquivo, e ter espaços ou linhas vazias que são produzidos antes que header () seja chamado. O mesmo problema existe ao usar um único arquivo PHP / HTML. (fonte php.net )

Teneff
fonte
1
interessante, eu nunca vi esse método antes ... mas isso não vai exibir uma página em branco ou apenas ocioso sem qualquer mensagem até que o tempo acabe?
Ibu
ele vai exibir a página ... tudo o que ele faz é definir o cabeçalho que dirá ao navegador para atualizar a página em 5 segundos, se você realmente deseja exibir a página em branco, simplesmente usedie();
Teneff
2
O lado ruim disso é: esse cabeçalho não está no padrão HTTP, os clientes podem ignorá-lo.
Sven
:) Boa ideia! E se você deseja enviar (manter) algumas variáveis ​​e usar na página recarregada?
Mugur Ungureanu
faz talvez um bilhão de anos desde esta postagem, mas como você publica uma mensagem durante o redirecionamento, como talvez "Redirecionando a página, aguarde"
CAO
25

Você pode usar javascript para redirecionar depois de algum tempo

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

},5000); // 5 seconds
Ibu
fonte
11
A pergunta era para PHP
Benjamin Intal
5
@Jami é verdade, é por isso que eu disse que o OP pode usar javascript.
Ibu
@BenjaminIntal Isso também funciona como um grande substituto se o navegador ignorar um redirecionamento no cabeçalho. Você teria que usar um navegador que não aceita o cabeçalho E ter o Javascript desabilitado para não receber o redirecionamento.
Super Cat
18

Você pode tentar isto:

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

Onde 10 está em segundos.

royrui
fonte
11

você gostaria de usar php para escrever uma meta tag.

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

Não é recomendado, mas é possível. O 5 neste exemplo é o número de segundos antes de atualizar.

John
fonte
3
header( "refresh:5;url=wherever.php" );

na verdade, você pode usar esse código como teneff disse, mas não precisa necessariamente colocar o cabeçalho antes de qualquer saída enviada (isso geraria um "não é possível realocar o cabeçalho ....: 3 erro").

Para resolver isso, use a função php ob_start();antes que qualquer html seja gerado.

Para encerrar o ob, basta colocar ob_end_flush();depois que você não tiver nenhuma saída html.

Felicidades!

JJJack
fonte
2

Se você estiver redirecionando com PHP, então simplesmente use o comando sleep () para dormir por quantos segundos antes de redirecionar.

Mas acho que você está se referindo à meta tag de atualização:

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

Jason Palmer
fonte
Usar o sono não é a abordagem convencional, como foi dito acima, a função de cabeçalho deve ser usada.
Maksim
Não dorme apenas atrasa a conexão?
FluorescentGreen5
2

A atualização do PHP após 5 segundos não funcionou para mim ao abrir uma caixa de diálogo Salvar como para salvar um arquivo: (header ('Content-type: text / plain'); header ("Content-Disposition: attachment; filename = $ filename > ");)

Depois que o link Salvar como foi clicado e o arquivo foi salvo, a atualização cronometrada parou na página de chamada.

No entanto, muito obrigado, a solução javascript do ibu apenas continuou marcando e atualizando minha página da web, que é o que eu precisava para meu aplicativo específico. Então, obrigado ibu por postar solução de javascript para o problema de php aqui.

Você pode usar javascript para redirecionar depois de algum tempo

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

Você pode usar este código javascript para redirecionar após um tempo 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
fonte