Przekierowanie strony po pewnym czasie PHP

95

Istnieje pewna funkcja PHP do przekierowania po pewnym czasie. Widziałem to gdzieś, ale nie pamiętam. To jak przekierowanie do Gmaila po zalogowaniu. Czy ktoś mógłby mi o tym przypomnieć?

afaolek
źródło
@zerkms: Wygląda na to, że jest na to kilka sposobów.
Wesley Murch
2
@Wesley Murch: Refreshnagłówek nie jest standardowy. Nigdy nie
używałbym
stackoverflow.com/questions/18305258/ ... doprowadził mnie do stackoverflow.com/questions/283752/refresh-http-header, który mówi, że nagłówek odświeżania nie jest standardem, ale powoduje również problemy z wydajnością w Internet Explorerze.
Edward

Odpowiedzi:

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

jest to sposób php do zestawu header, który przekieruje Cię do wherever.phpw 5 sekund


Pamiętaj, że nagłówek () musi zostać wywołany przed wysłaniem jakichkolwiek danych wyjściowych, albo przez normalne znaczniki HTML, puste wiersze w pliku, albo przez PHP. Bardzo częstym błędem jest odczytywanie kodu z włączaniem lub wymaganiem funkcji lub inną funkcją dostępu do pliku, a spacje lub puste wiersze są wyświetlane przed wywołaniem funkcji header (). Ten sam problem występuje w przypadku korzystania z pojedynczego pliku PHP / HTML. (źródło php.net )

Teneff
źródło
1
ciekawe, nigdy wcześniej nie widziałem tej metody ... ale czy to nie spowoduje wyświetlenia pustej strony lub po prostu bezczynności bez żadnej wiadomości, aż skończy się czas?
Ibu
wyświetli stronę ... wszystko, co robi, to ustawienie nagłówka, który powie przeglądarce, aby odświeżyła stronę w ciągu 5 sekund, jeśli naprawdę chcesz wyświetlić pustą stronę, po prostu użyjdie();
Teneff
2
Złe jest to, że ten nagłówek nie jest w standardzie HTTP, klienci mogą go zignorować.
Sven
:) Dobry pomysł! A jeśli chcesz wysłać (zachować) niektóre zmienne i użyć na odświeżonej stronie?
Mugur Ungureanu
od tego posta minęło może miliard lat, ale jak zamieścić wiadomość z przekierowaniem, na przykład „Przekierowywanie strony, proszę czekać”
CAO
25

Możesz użyć javascript do przekierowania po pewnym czasie

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

},5000); // 5 seconds
Ibu
źródło
11
Pytanie
dotyczyło
5
@Jami to prawda, dlatego powiedziałem, że OP może zamiast tego używać javascript.
Ibu
@BenjaminIntal Działa to również jako świetna opcja zastępcza, jeśli przeglądarka ignoruje przekierowanie w nagłówku. Musiałbyś użyć przeglądarki, która nie akceptuje nagłówka ORAZ ma wyłączoną obsługę JavaScript, aby nie otrzymywać przekierowań.
Super Cat
18

Możesz spróbować tego:

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

Gdzie 10 to sekundy.

royrui
źródło
11

chciałbyś użyć php do wypisania metatagu.

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

Nie jest to zalecane, ale jest to możliwe. 5 w tym przykładzie to liczba sekund, po których następuje odświeżenie.

Jan
źródło
3
header( "refresh:5;url=wherever.php" );

w istocie możesz użyć tego kodu, jak powiedział teneff, ale nie musisz koniecznie umieszczać nagłówka przed jakimkolwiek wysłanym wyjściem (spowodowałoby to komunikat „nie można przenieść nagłówka ....: 3 błąd”).

Aby rozwiązać ten problem, użyj funkcji php ob_start();przed wyprowadzeniem jakiegokolwiek kodu HTML.

Aby zakończyć ob, po prostu umieść go ob_end_flush();, gdy nie masz żadnych danych wyjściowych HTML.

Twoje zdrowie!

JJJack
źródło
2

Jeśli przekierowujesz za pomocą PHP, możesz po prostu użyć polecenia sleep () do uśpienia na dowolną liczbę sekund przed przekierowaniem.

Ale myślę, że masz na myśli metatag odświeżania:

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

Jason Palmer
źródło
Korzystanie ze snu nie jest konwencjonalnym podejściem, jak powiedziano powyżej, należy użyć funkcji nagłówka.
Maksim
Czy sen nie opóźnia tylko połączenia?
FluorescentGreen5
2

Odświeżanie PHP po 5 sekundach nie działało podczas otwierania okna dialogowego Zapisz jako w celu zapisania pliku: (nagłówek ('Content-type: text / plain'); header ("Content-Disposition: załącznik; filename = $ filename > ");)

Po kliknięciu łącza Zapisz jako i zapisaniu pliku odświeżanie czasowe zatrzymało się na stronie wywołującej.

Jednak bardzo dziękuję, rozwiązanie javascript ibu po prostu ciągle odkazywało i odświeżało moją stronę internetową, czego potrzebowałem w mojej konkretnej aplikacji. Więc dziękuję ibu za zamieszczenie tutaj rozwiązania javascript dotyczącego problemu z php.

Możesz użyć javascript do przekierowania po pewnym czasie

setTimeout(function () {    
    window.location.href = 'http://www.google.com'; 
},5000); // 5 seconds
JustJohn
źródło
2

Możesz użyć tego kodu javascript do przekierowania po określonym czasie. Mam nadzieję, że to zadziała.

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

},10000); // 10 seconds
Prodip Kirtania
źródło
0

Programowanie czasu przekierowania w PHP:

 <?php
 header("Refresh:10;url=***-----índex.php--OR----URL-----");
 ?>
PauloBoaventura
źródło