2012-09-19 16 views
12

Mam stronę, która przekierowuje użytkownika po 10 sekundach z następującego kodu.Przekierowanie 10 sekund Odliczanie

<META HTTP-EQUIV="refresh" CONTENT="10;URL=login.php"> 

Następnie ten kod, który jest echo'd PHP, i jak "10" (w sekundach) odliczanie dynamicznie 10, 9, 8, 7, ..., aby użytkownik mógł zobaczyć sekundy pozostały do ​​przekierowania strony.

echo "We cant find you on the system. <br/> Please return to the <b><a href='login.php'>Login</a></b> page and ensure that <br/>you have entered your details correctly. 
<br> 
<br> 
<b>Warning</b>: You willl be redirected back to the Login Page <br> in <b>10 Seconds</b>"; 

Zastanawiałem się, czy istnieje sposób, że można to zrobić w PHP, jeśli nie to, co byłoby najlepszym sposobem osiągnięcia tego samego?

Odpowiedz

34

Poniższa przekieruje użytkownika od razu do login.php

<?php 
header('Location: login.php'); // redirects the user instantaneously. 
exit; 
?> 

Można użyć następujących opóźnić przekierowanie przez X sekund, ale nie ma graficznego odliczania (dzięki user1111929):

<?php 
header('refresh: 10; url=login.php'); // redirect the user after 10 seconds 
#exit; // note that exit is not required, HTML can be displayed. 
?> 

Jeśli chcesz graficzną odliczanie, oto przykładowy kod w JavaScript:

<p>You will be redirected in <span id="counter">10</span> second(s).</p> 
<script type="text/javascript"> 
function countdown() { 
    var i = document.getElementById('counter'); 
    if (parseInt(i.innerHTML)<=0) { 
     location.href = 'login.php'; 
    } 
    i.innerHTML = parseInt(i.innerHTML)-1; 
} 
setInterval(function(){ countdown(); },1000); 
</script> 
+0

czy istnieje sposób, że w instrukcji echo "10" może odliczać dynamicznie? 10, 9, 8, 7 ..? dzięki – user1662306

+1

Nie, to nie jest możliwe. Po prostu skorzystaj z podanego mi rozwiązania javascript. Następnie użyj Jquery do dynamicznego odliczania. – TimTastic

+0

zajmie się tym. dzięki za twoją radę – user1662306

8

użyłbym JavaScript dla tej

var counter = 10; 
setInterval(function() { 
    counter--; 
    if(counter < 0) { 
     window.location = 'login.php'; 
    } else { 
     document.getElementById("count").innerHTML = counter; 
     } 
}, 1000);​ 

Aktualizacja: http://jsfiddle.net/6wxu3/1/

+0

dzięki @timtastic to jest dokładnie to, czego szukałem i to wor ks świetnie !!! – Baig

+0

, że adres URL jsfiddle to 404 http://jsfiddle.net/6wxu3/1/ –

1

header("Refresh: 2; url=$your_url");

Pamiętaj, aby nie umieszczać żadnych treści HTML przed cel.

+0

Ktokolwiek uwzględnił tę odpowiedź, powinien podać powód. Poprawnie odpowiada na pytanie PO. – Jocelyn

+0

To nie jest poprawne, pytanie dotyczyło zmniejszenia liczby 10, a nie przekierowania za pomocą php –

+1

Pytanie zostało zmodyfikowane po opublikowaniu tej odpowiedzi. [Pierwotne pytanie] (http://stackoverflow.com/posts/12498209/revisions) nie jest zbyt jasne, że dynamiczne odliczanie musi być wyświetlane na ekranie. – Jocelyn

7

Nie można tego zrobić z czystym PHP - ale javascript jest tu twoim przyjacielem.

Zmień kod HTML, aby umieścić liczbę sekund w span:

<b><span id="count">10</span> Seconds</b> 

Następnie usunąć tag meta i używać tej javascript:

var count = 10; 
function decrement() { 
    count--; 
    if(count == 0) { 
     window.location = 'login.php'; 
    } 
    else { 
     document.findElementById("count").innerHTML = "" + count; 
     setTimeout("decrement", 1000); 
    } 
} 
setTimeout("decrement", 1000); 

To będzie zmniejszyć liczbę na stronie każdego po drugie, a następnie przekieruj do login.php, gdy licznik osiągnie 0.