PHP, как создать таймер обратного отсчета? - PullRequest
2 голосов
/ 13 мая 2009

Как это сделать:

"вы будете перенаправлены на domain.com через 5 .. (4,3,2,1) секунд"

в php ???

Ответы [ 7 ]

14 голосов
/ 13 мая 2009

Я уверен, что javascript - ваш лучший вариант. Единственный другой способ сделать это - перенаправлять на новый URL каждую секунду, что, на мой взгляд, излишне.

Вот полный исходный код примера отсчета:

<html>
  <head>
    <meta http-equiv="refresh" content="5;url=http://example.com" />
    <title>Countdown Sample</title>
  </head>
  <body>
    you will be redirected to example.com in <span id="seconds">5</span>.
    <script>
      var seconds = 5;
      setInterval(
        function(){
          document.getElementById('seconds').innerHTML = --seconds;
        }, 1000
      );
    </script>
  </body>
</html>

Редактировать

Вот улучшенная версия с советом Альнитака:

Я изменил JavaScript для перенаправления пользователей и запретил обратный отсчет ниже 1 и добавил тег <noscript> вокруг <meta> для пользователей без JavaScript.

<html>
  <head>
    <noscript>
      <meta http-equiv="refresh" content="5;url=http://example.com" />
    </noscript>
    <title>Countdown Sample</title>
  </head>
  <body>
    you will be redirected to example.com in <span id="seconds">5</span>.
    <script>
      var seconds = 5;
      setInterval(
        function(){
          if (seconds <= 1) {
            window.location = 'http://example.com';
          }
          else {
            document.getElementById('seconds').innerHTML = --seconds;
          }
        },
        1000
      );
    </script>
  </body>
</html>
12 голосов
/ 13 мая 2009

Лучше всего этого не делать в PHP, потому что веб-сервер должен держать соединение с клиентом открытым, пока идет обратный отсчет.

Это (ИМХО) было бы гораздо лучше сделать в Javascript с setInterval().

5 голосов
/ 13 мая 2009

Вы должны использовать javascript для визуализации обратного отсчета, в php вы можете установить таймер для перенаправления следующим образом:

header('refresh: 5; url=http://www.stackoverflow.com');

где refresh: x устанавливает время в секундах для ожидания перенаправления.

2 голосов
/ 13 мая 2009

Вы можете реализовать обратный отсчет Javascript с помощью функции setInterval(), которая вызывается каждую секунду в течение 5 секунд, чтобы создать функцию таймера для обратного отсчета времени. Когда время истекло, вы можете использовать свойство document location.href, чтобы перенаправить пользователя на страницу; Было бы также полезно создать жесткую ссылку, чтобы направить их на страницу, например, в случае отключения Javascript.

Например:

var timeLeft, id;

function startCountDown()
{
    timeLeft = 5;
    id = setInterval(countDown, 1000);
}

function countDown()
{
    timeLeft -= 1;

    //Update the text which states how much time is remaining until the
    //user is redirected here..

    if(timeLeft==0)
    {
        clearInterval(id);

        //Redirect to the desired URL
        document.location.href = "http://domain.com";
    }
}
2 голосов
/ 13 мая 2009

Краткий ответ: Вы не можете.

Длинный ответ: PHP - это сервер, и поэтому, как только страница отправляется, PHP не имеет к этому никакого отношения. То, что вы ищете, возможно несколькими способами. Вы можете использовать javascript (который позволяет выполнять «визуальный» обратный отсчет) или установить метатег обновления в элементе вашего документа, например, так: http://yoursite.com">

1 голос
/ 07 февраля 2011

Спасибо за ваш отзыв

                function timer(stamp)
                {
                    var temp=stamp;
                    temp=temp-1;
                    document.getElementById('mylbl').innerHTML = temp;
                    if(temp<=0)
                    {
                        window.location = "http://www.tasolglobal.com"
                        exit();
                    }
                    setTimeout("timer("+temp+")",1000); 
                }



    </script>

</head>

<body bgcolor="black" text="white" onload="timer(10+1)" >

    <?php
        //$sec=5;
        $to=$_REQUEST['from'];          //Set your email address where you want to get feedback
        $from=$_REQUEST['from'];        //This will be the senders email add
        $message=$_REQUEST['mesg'];     //This contains message from feed fackback form
        $subject=$_REQUEST['subject'];      //This contains subject of Feedback form. You can also set value as                                     feedback so you can find feedback mail easily
        $header="From: $from";          //Header of the feedback mail
        mail($to,$subject,$message,$header);

        echo "<br><br><h1>Thank You For Your Feedback...
            </h1><br><font color=red size=3>Your Will Be Redirected To HOME PAGE... Within ";
            echo "<label id=mylbl></label>" ;
        echo " Seconds";            
    ?>
</body>

0 голосов
/ 08 июля 2009

Вы можете смешивать javascript и php, когда вы заходите на страницу, вы получаете дату, к которой вам нужно отсчитать время от базы данных через php, а затем отсчитываете ее с помощью javascript. Нечто подобное используется http://free -countdown.co.nr /

...