it-swarm.com.de

So leiten Sie eine Seite in PHP nach ein paar Sekunden ohne Meta http-equiv = REFRESH CONTENT = time um

Es scheint, dass es nicht ratsam ist, zu verwenden

<meta http-equiv=REFRESH CONTENT=3;url=url>

für Weiterleitungen aber stattdessen verwenden

header('Location: url')

Ich möchte dem Benutzer jedoch eine Nachricht anzeigen und ihm etwas Zeit zum Lesen einräumen, bevor er umleitet. Gibt es eine Möglichkeit, es ohne Meta zu tun?

17
zhenming

Versuchen Sie den "Refresh" -Header zu verwenden:

header('Refresh: 3;url=page.php');

Sie können sich auch diese Frage ansehen HTTP-Header aktualisieren .

37
Dador

An der Verwendung des Meta-Refresh-Tags ist nichts auszusetzen.

<meta http-equiv="refresh" content="5;URL='http://example.com/'" />

Dieser Tag sagt, warten Sie 5 Sekunden und leiten Sie zu example.com. Dieses Tag ist kein Problem, es sei denn, Benutzer sind im IE6 und es funktioniert immer noch, nur die Verlaufsschaltflächen bricht.

Die Verwendung von JavaScript ist eine Option, aber stellen Sie sicher, dass Sie einen Link mit der Aufschrift einfügen "Wenn Sie nicht automatisch weitergeleitet werden, klicken Sie bitte hier". Sie sollten diesen Link in beide Richtungen einfügen.

6

pHP-Weg, um Header zu setzen, wird Sie in 5 Sekunden zu test.php umleiten:

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

aufruf, bevor eine tatsächliche Ausgabe gesendet wird.

Und in Javascript:

setTimeout(function () {
   window.location.href= url; // the redirect goes here
},5000); // 5 seconds
5
Sanjay

Header-Tags werden beim Laden der Seite an den Browser gesendet, sodass der Benutzer schnell zur gewünschten Seite weitergeleitet werden kann, ohne sich die Mühe machen zu müssen, diese zu rendern oder sogar in den Verlauf zu laden. Aus diesem Grund können Sie eine Umleitung nicht aufrufen, wenn die Seite bereits geladen wurde, da die Header bereits behandelt wurden.

Sie können dies stattdessen durchführen mit:

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

Was setzt im Grunde die <meta> Tag in den Kopfzeilen der Seite selbst, was bedeutet, dass Sie das Tag nicht ausschreiben müssen.

4
Death

Nach dem, was ihr sagt, sollte das dann theoretisch funktionieren:

URL: http://www.example.com/ticketgen/index.php?success=1&redir=1

    <?php
 $myredir = ($_GET['redir']);
    if ($myredir == 1)
    {
        header( "refresh:5;url=http://www.example.com/ticketgen/" );
    }
?>

Aber es macht nichts. Ich habe es auch ganz oben auf der Seite, damit es die Überschriften senden kann.

in Firefox funktioniert es nicht. Ich habe es gerade herausgefunden.

2
Patrick K.

Ich denke wirklich, der beste Weg ist header("Refresh: 10;url=../index.php"); Wie das, was ich mit meiner Arbeit gemacht habe.

1
user2851654

Sie können es mit einem kleinen Stück Javascript tun:

<script type="text/javascript" language="JavaScript">location.href = 'otherpage.php';</script>

Dies hängt natürlich von der Person ab, bei der JavaScript aktiviert ist.

Um die Verzögerung einzustellen, können Sie natürlich so etwas wie setTimeout verwenden:

<script type="text/javascript" language="JavaScript">
    setTimeout(function () {
                      location.href = 'stackoverflowhelp.php'; 
               }, 5000);
</script>
1
Jason Larke