Intereting Posts
Ошибка анализа при развертывании на общем хостинге (Laravel 4) Кодировка substr_replace в PHP Есть ли простой способ для пользователей распечатать Flash (Open Flash Charts) из своего браузера? PHP код потерял свои значения, когда я нажал submit Как сравнить один элемент из одной таблицы с другим элементом Перенаправление на страницу и отправка пользовательских заголовков HTTP Что такое использование одной трубы? ' В аргументе функции Do? PHP. Правильно ли кэшировать запросы MYSQL в txt-файле? Почему foreach копирует массив, когда мы не модифицировали его в цикле? jQuery AJAX загружает JSONP из localhost, но не возвращает данные Php Сессия и проблемы с сообщением на странице входа Как получить «данные» из запросов JQuery Ajax Пользовательские поля Woocommerce не будут обновляться, когда я оставлю их пустыми и покажут пустые поля Как я могу получить все дерево в одном запросе с помощью доктрины? Оператор switch возвращает неверные результаты

Время сервера вместо времени клиента JAVASCRIPT

Можно ли использовать этот скрипт с серверным временем, а не клиентом. (Для проверки, прошло ли время). В настоящее время используется время клиента, и это проблема. (Может быть, с php ??)

<script> var end = new Date('02/19/2012 10:1 AM'); var _second = 1000; var _minute = _second * 60; var _hour = _minute * 60; var _day = _hour * 24; var timer; function showRemaining() { var now = new Date(); var distance = end - now; if (distance < 0) { clearInterval(timer); document.getElementById('countdown').innerHTML = 'EXPIRED!'; return; } var days = Math.floor(distance / _day); var hours = Math.floor((distance % _day) / _hour); var minutes = Math.floor((distance % _hour) / _minute); var seconds = Math.floor((distance % _minute) / _second); document.getElementById('countdown').innerHTML = days + 'days '; document.getElementById('countdown').innerHTML += hours + 'hrs '; document.getElementById('countdown').innerHTML += minutes + 'mins '; document.getElementById('countdown').innerHTML += seconds + 'secs'; } timer = setInterval(showRemaining, 1000); </script> <div id="countdown"></div> 

Вы можете получить время от запроса ajax или использовать что-то вроде этого:

 <?php $now = date('dm-Y'); $end= "01-01-2013" $date = strtotime($end) - strtotime($now); $days = date('d', $date); $monthes= date('m', $date); $years= date('Y', $date); ?> <script> var days = "<?= $days ?>"; var monthes= "<?= $monthes?>"; var years= "<?= $years?>"; document.getElementById('countdown').innerHTML = days+ ' days'; document.getElementById('countdown').innerHTML += monthes+ ' monthes'; document.getElementById('countdown').innerHTML += years+ ' years'; </script> 

Ответ Puku вернет фиксированную дату, а не время сервера. Кажется, он исправил это.

Я предлагаю:

 <script> var date = <? echo time(); ?>; // etc... </script> 

Это позволит получить количество (серверных) секунд со времен Unix Unix IIRC и записать его в переменной «date» как int. Обратите внимание на все, что находится между <? и ?> является PHP и таким образом выполняется на сервере.

Примечание. Я не использовал сокращенный синтаксис, например puku. У меня его нет по умолчанию, и я не могу его изменить, поэтому я подумал, что было бы неплохо использовать эту нотацию для тех, кто с той же проблемой.

Нашел пример, похожий на Ajax на http://www.roseindia.net/ajax/ajax-first-example.shtml

[UPDATE] После комментариев, излагающих мой предыдущий пост, это не сработало, я просмотрел все и изменил JavaScript и PHP-файл (давая полный код сейчас). Этот код теперь работает. Я попытался сохранить его как можно более похожим на оригинальный пример и ранее предоставленную ссылку вместо оптимизации вещей (я оставлю это вам).

 <script> var end = new Date('02/19/2014 10:1 AM'); var _second = 1000; var _minute = _second * 60; var _hour = _minute * 60; var _day = _hour * 24; var timer; var distance; function startShowRemaining(strnow) { var now = new Date(strnow); distance = end - now; //To prevent 1 sec. lag, we make first a direct call to showRemaining showRemaining(); //Then each second, we decrement count and show info timer = setInterval(countRemaining, 1000); } function countRemaining() { distance = distance - 1000; //we substract a second (1000 ms) with each call showRemaining(); } function showRemaining() { if (distance < 0) { clearInterval(timer); document.getElementById('countdown').innerHTML = 'EXPIRED!'; return; } var days = Math.floor(distance / _day); var hours = Math.floor((distance % _day) / _hour); var minutes = Math.floor((distance % _hour) / _minute); var seconds = Math.floor((distance % _minute) / _second); document.getElementById('countdown').innerHTML = days + ' days '; document.getElementById('countdown').innerHTML += hours + ' hrs '; document.getElementById('countdown').innerHTML += minutes + ' mins '; document.getElementById('countdown').innerHTML += seconds + ' secs'; } function postRequest(strURL) { var xmlHttp; if (window.XMLHttpRequest) { // Mozilla, Safari, ... var xmlHttp = new XMLHttpRequest(); } else if (window.ActiveXObject) { // IE var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } xmlHttp.open('POST', strURL, true); xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xmlHttp.onreadystatechange = function() { if (xmlHttp.readyState == 4) { startShowRemaining(xmlHttp.responseText); } } xmlHttp.send(strURL); } postRequest('time.php'); </script> <div id="countdown"></div> 

И создайте файл: time.php

 <?php print date("d/m/YH:i:s"); ?> 

PHP-файл вызывается один раз, чтобы получить текущую дату, тогда значение «distance» var уменьшается каждую секунду, чтобы предотвратить дальнейшие вызовы Ajax, которые используют полосу пропускания, и … может потребовать больше одной секунды. Используется другая функция для декрементирования, поэтому мы можем сразу вызвать showRemaining, не уменьшая ее (вы также можете начать увеличивать 1000 при первом вызове и использовать только одну функцию.).

В любом случае, я предпочитаю подход Puku просто использовать PHP для написания правильного значения для «now» var, это проще. Это хорошо только в качестве примера использования Ajax.