Секундомер

Тема в разделе "PHP", создана пользователем webnsk, 5 июл 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. webnsk

    webnsk Создатель

    Регистр.:
    24 мар 2008
    Сообщения:
    30
    Симпатии:
    0
    Вообщем не знаю сюда ли я создаю эту тему но все же, как сделать секундомер который бы делал отчет до определенной даты ( часы, минуты, сек., дни) но что бы он синхронизировался с сервера времени, а не с компьютера пользователя подскажите может кто сталкивался с этим.
     
  2. diavolic

    diavolic

    Регистр.:
    17 мар 2010
    Сообщения:
    522
    Симпатии:
    102
    Код:
    <script language="JavaScript">
    TargetDate = "<? print date("d/m/Y h:i A");?>";
    BackColor = "palegreen";
    ForeColor = "navy";
    CountActive = true;
    CountStepper = -1;
    LeadingZero = true;
    DisplayFormat = "%%D%% Days, %%H%% Hours, %%M%% Minutes, %%S%% Seconds.";
    FinishMessage = "It is finally here!";
    
    function calcage(secs, num1, num2) {
      s = ((Math.floor(secs/num1))%num2).toString();
      if (LeadingZero && s.length < 2)
        s = "0" + s;
      return "<b>" + s + "</b>";
    }
    
    function CountBack(secs) {
      if (secs < 0) {
        document.getElementById("cntdwn").innerHTML = FinishMessage;
        return;
      }
      DisplayStr = DisplayFormat.replace(/%%D%%/g, calcage(secs,86400,100000));
      DisplayStr = DisplayStr.replace(/%%H%%/g, calcage(secs,3600,24));
      DisplayStr = DisplayStr.replace(/%%M%%/g, calcage(secs,60,60));
      DisplayStr = DisplayStr.replace(/%%S%%/g, calcage(secs,1,60));
    
      document.getElementById("cntdwn").innerHTML = DisplayStr;
      if (CountActive)
        setTimeout("CountBack(" + (secs+CountStepper) + ")", SetTimeOutPeriod);
    }
    
    function putspan(backcolor, forecolor) {
     document.write("<span id='cntdwn' style='background-color:" + backcolor + 
                    "; color:" + forecolor + "'></span>");
    }
    
    if (typeof(BackColor)=="undefined")
      BackColor = "white";
    if (typeof(ForeColor)=="undefined")
      ForeColor= "black";
    if (typeof(TargetDate)=="undefined")
      TargetDate = "12/31/2020 5:00 AM";
    if (typeof(DisplayFormat)=="undefined")
      DisplayFormat = "%%D%% Days, %%H%% Hours, %%M%% Minutes, %%S%% Seconds.";
    if (typeof(CountActive)=="undefined")
      CountActive = true;
    if (typeof(FinishMessage)=="undefined")
      FinishMessage = "";
    if (typeof(CountStepper)!="number")
      CountStepper = -1;
    if (typeof(LeadingZero)=="undefined")
      LeadingZero = true;
    
    
    CountStepper = Math.ceil(CountStepper);
    if (CountStepper == 0)
      CountActive = false;
    var SetTimeOutPeriod = (Math.abs(CountStepper)-1)*1000 + 990;
    putspan(BackColor, ForeColor);
    var dthen = new Date(TargetDate);
    var dnow = new Date();
    if(CountStepper>0)
      ddiff = new Date(dnow-dthen);
    else
      ddiff = new Date(dthen-dnow);
    gsecs = Math.floor(ddiff.valueOf()/1000);
    CountBack(gsecs);
    
    </script>
     
  3. webnsk

    webnsk Создатель

    Регистр.:
    24 мар 2008
    Сообщения:
    30
    Симпатии:
    0
    а как это вставить на страницу? :ah:
     
  4. LEXAlForpostl

    LEXAlForpostl

    Регистр.:
    21 май 2008
    Сообщения:
    708
    Симпатии:
    225
    Разве JS умеет работать с сервером? :)
    Не работал с ним никогда. Однако, насколько мне известно, JS выполняется на стороне клиента ;)
     
  5. eugenel

    eugenel Постоялец

    Регистр.:
    3 авг 2008
    Сообщения:
    122
    Симпатии:
    14
    Так вам на php или на ява скрипте нужно реализовать? Где и в каком контексте это будет работать?
     
  6. webnsk

    webnsk Создатель

    Регистр.:
    24 мар 2008
    Сообщения:
    30
    Симпатии:
    0
    http://www.mvideo.ru/ - вот на этом сайте есть УСПЕЙ КУПИТЬ там стоит товар и тикает время но оно привязано к какому то серверу времени я так понимаю, вот и мне нужно сделать такое. можно даже это будет на flash
     
  7. diavolic

    diavolic

    Регистр.:
    17 мар 2010
    Сообщения:
    522
    Симпатии:
    102
    TargetDate = "<? print date("d/m/Y h:i A");?>";
     
  8. webnsk

    webnsk Создатель

    Регистр.:
    24 мар 2008
    Сообщения:
    30
    Симпатии:
    0
    вы тут все обсуждаете обсуждаете) так как вставить этот код так и не сказали ))) и вообще тот ли код.?:nezn:
     
  9. pitkina

    pitkina

    Регистр.:
    1 апр 2007
    Сообщения:
    253
    Симпатии:
    176
    вот, отсчет в секундах до указанной даты/времени - mktime(); от текущего времени сервера

    PHP:
    <form name="counter"><input type="text" size="8"
    name="d2"></form>
    <script> <!--
    //
    var milisec=0

    <?php
    putenv
    ('TZ=Europe/Moscow');
    $target_sec_time mktime(22000762010);   // отсчет до даты - формат (hour,minute,second,month,day,year)
    $current_sec_time date('U'); // текущее время сервера
    $time_sec $target_sec_time $current_sec_time;
    echo 
    "var seconds={$time_sec}";
    ?>

     document.counter.d2.value='30'
    function display(){ 
     if (milisec<=0){ 
        milisec=9
        seconds-=1
     } 
     if (seconds<=-1){ 
        milisec=0 
        seconds+=1 
     } 
     else 
        milisec-=1 
        document.counter.d2.value=seconds
        setTimeout("display()",100) 

    display()
    --> </script>
     
    webnsk нравится это.
  10. Keegan

    Keegan Создатель

    Регистр.:
    20 апр 2009
    Сообщения:
    36
    Симпатии:
    4
    В случае реализации на PHP - как показано у pitkina, время будет браться с сервера, на которм скрипт работает - этого будет достаточно, чтобы у всех пользователей, кто откроет страничку, время шло одинаково.
     
Статус темы:
Закрыта.