Seitenumleitung nach bestimmter Zeit PHP

94

Es gibt eine bestimmte PHP-Funktion zum Umleiten nach einiger Zeit. Ich habe es irgendwo gesehen, kann mich aber nicht erinnern. Es ist wie bei der Google Mail-Weiterleitung nach dem Anmelden. Könnte mich bitte jemand daran erinnern?

afaolek
quelle
@zerkms: Sieht so aus, als gäbe es ein paar Möglichkeiten, dies zu tun.
Wesley Murch
2
@ Wesley Murch: RefreshHeader ist kein Standard . Ich würde niemals Dinge verwenden, die nicht mit RFCs abgedeckt sind
zerkms
stackoverflow.com/questions/18305258/… führte mich zu stackoverflow.com/questions/283752/refresh-http-header, der besagt, dass der Aktualisierungsheader nicht nur Standard ist, sondern auch Leistungsprobleme in Internet Explorer verursacht.
Edward

Antworten:

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

Dies ist die PHP-Methode, mit headerder Sie wherever.phpin 5 Sekunden weitergeleitet werden


Denken Sie daran, dass header () aufgerufen werden muss, bevor eine tatsächliche Ausgabe gesendet wird, entweder durch normale HTML-Tags, Leerzeilen in einer Datei oder über PHP. Es ist ein sehr häufiger Fehler, Code mit Include- oder Require-Funktionen oder einer anderen Dateizugriffsfunktion zu lesen und Leerzeichen oder Leerzeilen zu haben, die ausgegeben werden, bevor header () aufgerufen wird. Das gleiche Problem besteht bei der Verwendung einer einzelnen PHP / HTML-Datei. (Quelle php.net )

Teneff
quelle
1
Interessant, ich habe diese Methode noch nie gesehen ... aber wird das nicht eine leere Seite anzeigen oder einfach ohne Meldung im Leerlauf sein, bis der Timer abgelaufen ist?
Ibu
es wird die Seite anzeigen ... alles, was es tut, ist den Header zu setzen, der den Browser anweist, die Seite in 5 Sekunden zu die();
aktualisieren
2
Das Schlimme daran ist: Dieser Header ist nicht im HTTP-Standard enthalten, Clients können ihn ignorieren.
Sven
:) Gute Idee! Und wenn Sie einige Variablen senden (behalten) und auf der neu geladenen Seite verwenden möchten?
Mugur Ungureanu
Es ist vielleicht eine Milliarde Jahre her seit diesem Beitrag, aber wie postest du eine Nachricht während der Weiterleitung wie vielleicht "Seite umleiten, bitte warten"
CAO
25

Sie können Javascript verwenden, um nach einiger Zeit umzuleiten

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

},5000); // 5 seconds
Ibu
quelle
11
Frage war für PHP
Benjamin Intal
5
@Jami es ist wahr, deshalb habe ich gesagt, dass das OP stattdessen Javascript verwenden kann.
Ibu
@BenjaminIntal Dies funktioniert auch als großartiger Fallback, wenn der Browser eine Umleitung im Header ignoriert. Sie müssten einen Browser verwenden, der den Header nicht akzeptiert UND Javascript deaktiviert hat, um die Umleitung nicht zu erhalten.
Super Cat
18

Sie können dies versuchen:

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

Wobei 10 in Sekunden ist.

Royrui
quelle
11

Sie möchten PHP verwenden, um ein Meta-Tag zu schreiben.

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

Es wird nicht empfohlen, aber es ist möglich. Die 5 in diesem Beispiel gibt die Anzahl der Sekunden an, bevor eine Aktualisierung durchgeführt wird.

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

Sie können diesen Code zwar verwenden, wie Teneff sagte, aber Sie müssen den Header nicht unbedingt vor einer gesendeten Ausgabe platzieren (dies würde den Fehler "Header kann nicht verschoben werden ....: 3" ausgeben).

Um dies zu lösen, verwenden Sie die PHP-Funktion, ob_start();bevor HTML ausgegeben wird.

Um das ob zu beenden, setzen ob_end_flush();Sie es einfach, nachdem Sie keine HTML-Ausgabe haben.

Prost!

JJJack
quelle
2

Wenn Sie mit PHP umleiten, verwenden Sie einfach den Befehl sleep (), um so viele Sekunden wie möglich zu schlafen, bevor Sie umleiten.

Aber ich denke, Sie beziehen sich auf das Meta-Refresh-Tag:

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

Jason Palmer
quelle
Die Verwendung von Schlaf ist nicht der herkömmliche Ansatz, da oben die Header-Funktion verwendet werden sollte.
Maksim
Verzögert der Schlaf nicht nur die Verbindung?
FluorescentGreen5
2

Die PHP-Aktualisierung nach 5 Sekunden funktionierte beim Öffnen eines Dialogfelds Speichern unter zum Speichern einer Datei nicht: (Header ('Inhaltstyp: Text / Nur'); Header ("Inhaltsdisposition: Anhang; Dateiname = $ Dateiname" > ");)

Nachdem auf den Link Speichern unter geklickt und die Datei gespeichert wurde, wurde die zeitgesteuerte Aktualisierung auf der aufrufenden Seite gestoppt.

Vielen Dank, die Javascript-Lösung von ibu hat meine Webseite immer wieder angekreuzt und aktualisiert, was ich für meine spezifische Anwendung brauchte. Vielen Dank an ibu, dass Sie hier eine Javascript-Lösung für das PHP-Problem veröffentlicht haben.

Sie können Javascript verwenden, um nach einiger Zeit umzuleiten

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

Sie können diesen Javascript-Code verwenden, um nach einer bestimmten Zeit umzuleiten. Hoffe es wird funktionieren.

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

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