2012-06-22 7 views
16

Es Seite in PHP zu umleiten scheint, dass es nicht ratsam ist,Wie nach wenigen Sekunden ohne meta http-equiv = REFRESH CONTENT = Zeit

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

für Umleitungen zu verwenden, sondern stattdessen

header('Location: url') 

Ich möchte dem Benutzer jedoch eine Nachricht zeigen und ihnen etwas Zeit geben, sie zu lesen, bevor sie umgeleitet werden. Gibt es einen Weg, es ohne Meta zu machen?

+1

Haben Sie Javascript in Betracht gezogen? Ich würde das Meta-Tag selbst verwenden. – BugFinder

+0

Ich denke, dass Javascript mehr unangemessen ist, als "Meta" -Tag. – Dador

Antwort

35

try "refresh" Header:

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

Auch Sie bei dieser Frage Refresh HTTP Header aussehen kann.

+0

ist das nicht dasselbe wie ''? –

+0

Es macht das gleiche, aber über verschiedene Wege. – Dador

+0

ist in html's Tag platziert und ich frage mich, ob es wie header() im HTTP-Stream handelt. Wenn das stimmt, sind sie beide gleich. –

1

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

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

Natürlich wird dies von der Person abhängen, die JavaScript aktiviert.

Offensichtlich um die Verzögerung setzen Sie so etwas wie setTimeout verwenden können:

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

Header-Tags werden beim Laden der Seite an den Browser gesendet, so dass der Benutzer schnell zur gewünschten Seite weitergeleitet werden kann, ohne sie zu rendern oder sogar in den Verlauf zu laden. Daher können Sie keine Weiterleitung aufrufen, nachdem die Seite bereits geladen wurde, da die Header bereits bearbeitet wurden.

Sie können stattdessen führen dies mit:

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

die im Grunde setzt die <meta>-Tag in den Header der Seite selbst, dh Sie nicht aus dem Tag schreiben müssen.

5

php Weg Header zu setzen, leitet Sie in 5 Sekunden bis test.php:

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

Anruf, bevor eine Ausgabe gesendet wird.

Und in javascript:

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

Es ist nichts falsch mit dem Meta-Refresh-Tag.

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

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

Verwenden Sie JavaScript ist eine Option, aber stellen Sie sicher, dass Sie einen Link sagen "Wenn Sie nicht automatisch umgeleitet werden, klicken Sie bitte hier". Sie sollten diesen Link in beide Richtungen einfügen.

+0

Das Meta-Refresh-Tag scheint gemäß diesem http://www.w3.org/TR/WCAG10-HTML-TECHS##metal-Element veraltet zu sein – zhenming

2

Durch was euch sagen, theoretisch sollte diese dann arbeiten:

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 tut sich nichts. Ich habe es auch an der Spitze der Seite, so dass es die Header senden kann.

es funktioniert nicht in Firefox ich gerade herausgefunden habe.

1

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

-1

https://codingislove.com/redirect-pages-php/

Überprüfung der oben genannten Artikel aus, wo sie über deutlich erklärt, wie die Seiten in PHP umleiten, indem Sie Zeit einstellen.

Umleitungscode ohne eingestellte Zeit: header ('location: URL ADDRESS');

Umleitung Code mit drei Sekunden Zeit gesetzt: Header ('Refresh: 3; URL = URL-Adresse');

Verwandte Themen