PHP - warten Sie ein paar Sekunden, bevor Sie fortfahren?
Ich habe ein HTML-Formular und ich bin mit PHP, um zu überprüfen, dass alles gut ist, bevor eine Meldung auf der Webseite. Dann möchte ich leiten den Benutzer zurück zur Startseite nach ein paar Sekunden.
Problem ist, ich kann nicht einen Weg finden, warten Sie 5 Sekunden oder so und dann Mach den redirect. Die sleep-Funktion einfach wartet 5 Sekunden und zeigt dann die Meldung/Umleitungen an der gleichen Zeit. Hat jemand irgendwelche Ideen?
Dank!
<?php
if (empty($_POST) === false) {
echo 'Success! You will not be able to log in until an administrator approves your account.';
sleep(5);
$url = 'index.html';
echo '<META HTTP-EQUIV=Refresh CONTENT="0; URL='.$url.'">';
}
?>
- Mit meta-refresh mit einem Wert von 5, nicht 0, und entfernen Sie die
sleep
. - Autsch. Ich zuckte im Schlaf-nach-echo. Sie wollen Ihre Validierung und dann wieder Erfolg, nicht nichts tun
- Beachten Sie, dass, wenn die oben genannten arbeiten würden, würden Sie effektiv stellen Sie Ihre web-server-Last zu erhöhen eine Menge. (Nicht sicher, ob/wie PHP verwendet, die Arbeitnehmer, aber es würde sicherlich etwas machen auf dem server gebucht werden für 5 Sekunden, wahrscheinlich blockiert andere Anforderungen. Einer selbstverschuldeten DoS, wenn du willst!)
- Ich bin mit @Arjan. Tun Sie das nicht
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für eine praktische (funktioniert auf dem board AFAIK), aber nicht standardisiert Lösung, verwenden Sie die
Refresh
HTTP-header:Andernfalls können Sie erreichen den Effekt mit einem
<meta>
- tag, aber ohne Einbeziehungsleep()
:<meta>
- tags für die Lösung. Das ist besser als das original schlafen versuchen! Natürlich. Aber es bleibt die Tatsache, dass "'ich habe ein HTML-Formular und ich bin mit PHP, um zu überprüfen, dass alles gut ist, bevor eine Meldung auf der Webseite "" ist SCHLECHTES design. Was ist " gut " nach 5 Sekunden warten?Sollte dies auf der client-Seite mit javascript zum Beispiel.
Deshalb, weil die Ausgabe nicht an den browser der Reihe nach ab. PHP sendet die Ausgabe meistens in einem Rutsch, nachdem das Skript beendet wurde.
Verwenden Sie stattdessen das meta-tag für das warten in html:
Beachten Sie, dass
<meta>
- tags sollte man immer in<head>
.Beachten Sie, dass der browser kann immer wählen, Sie zu ignorieren leitet. Und das, obwohl, dass ist meine persönliche Meinung, Umleitungen, wie das saugen. Eher die Anzeige einer Benachrichtigung flash-Nachricht an der Spitze der nächsten pageload imho.
Die Art, wie Sie solche Umleitungen ist javascript
Machen eine kleine javascript-Funktion wie
und fügen Sie es mit
innerhalb Ihren html-body-tag
Hier ist etwas, was ich gearbeitet bis zu umleiten. Scheint gut zu funktionieren und ich dachte, ich würde teilen.
Den DelayTime-Funktion:
wenn es nicht funktioniert, müssen javascript benutzen