Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Серверное он-лайн время
 
 автор: chexov   (09.02.2012 в 02:47)   письмо автору
 
 

Доброго времени суток

Есть Java Script, который синхронизирует время с серверным и выводит на сайте


<script type="text/javascript">
var dateobj = new Date (); 
var servertime = <?php  echo mktime()*1000;  ?>;
var clienttime = dateobj.getTime(); 
raznica = servertime - clienttime ; 
function timer() { 
var dateobj = new Date ();
var correct = dateobj.getTime() + raznica; 
dateobj.setTime(correct); 
document.getElementById("time_one").innerHTML = dateobj.toLocaleTimeString(); 
setTimeout("timer("+raznica+")", 1000); 
}
timer();
</script>

<body onLoad="timer();"></body>


Так вот, при смене времени у клиента, часы на сайте буквально на пару секунд становтяся такие же, как у клиента. Но потом снова синхронизируются с серверным временем.
А если клиент поменяет часовой пояс, то часы собьются. Как исправить?

  Ответить  
 
 автор: АЯС   (09.02.2012 в 09:28)   письмо автору
 
   для: chexov   (09.02.2012 в 02:47)
 

Надо по таймеру раз в десять секунд (раз в минуту, раз в пять минут, раз в десять минуту... - выбор за вами) запрашивать у вашего специального PHP-файла информацию о текущем серверном времени по технологии AJAX и на странице принудительно синхронизировать клиентское время с полученным серверным.

  Ответить  
 
 автор: chexov   (09.02.2012 в 14:49)   письмо автору
 
   для: АЯС   (09.02.2012 в 09:28)
 

А зачем у php скрипта? у меня это все на обычной html странице, запрос серверного времени происходит в самом java script. Что нужно добавить в мой скрипт (в любой другой) чтобы время на сайте не менялось от смены часового пояса, и времени клиента?

  Ответить  
 
 автор: Гавриленко Дмитрий   (09.02.2012 в 15:32)   письмо автору
 
   для: chexov   (09.02.2012 в 14:49)
 

Если пользователь зайдет на страничку, изменит часовой пояс и перезагрузит страничку все же будет нормально? Почему? Потому что серверное время обновилось! Что бы получать серверное время постоянно, надо "спросить" его у сервера при помощи AJAX как вам и сказали.

  Ответить  
 
 автор: selma   (10.02.2012 в 02:12)   письмо автору
 
   для: Гавриленко Дмитрий   (09.02.2012 в 15:32)
 

где то видела такой скрипт, поищу

  Ответить  
 
 автор: chexov   (13.02.2012 в 03:18)   письмо автору
 
   для: selma   (10.02.2012 в 02:12)
 

Форумчане, выручите плиз, не могу ничего поделать с этими часовыми поясами

  Ответить  
 
 автор: .....   (13.02.2012 в 07:13)
 
   для: chexov   (13.02.2012 в 03:18)
 

Типа хотите записывать cookie каждые например 10 секунд и проверять на сколько за 10 секунд изменилось время на компьютере ?

  Ответить  
 
 автор: chexov   (13.02.2012 в 07:46)   письмо автору
 
   для: .....   (13.02.2012 в 07:13)
 

кукисы не годятся

  Ответить  
 
 автор: ЯСА   (13.02.2012 в 09:35)   письмо автору
 
   для: chexov   (13.02.2012 в 07:46)
 

Положим:
-- юзер в реальное время 04:00:00 по Гринвичу зашёл на ваш сайт
-- в момент захода часы на компе у юзера показывали 08:05:00 (у него выставлено МСК, да и ошибся он на 5 минут, время выставляя)
-- ваш сервер в этот же момент выдал юзеру серверное время 04:00:05 (тоже немного грешат часы)
-- юзер в любой момент при нахождении на вашей странице может изменить как часовой пояс так и время на своём компе.

Объяснитесь подробнее - ЧТО ИМЕННО вам хочется сделать при помощи скрипта.

  Ответить  
 
 автор: chexov   (13.02.2012 в 10:34)   письмо автору
 
   для: ЯСА   (13.02.2012 в 09:35)
 

Нужно чтобы юзер всегда видел идущие часы, показывающее время моего сервера. (и без разницы на сколько минут они грешат на сервере)

  Ответить  
 
 автор: ЯСА   (13.02.2012 в 11:05)   письмо автору
 
   для: chexov   (13.02.2012 в 10:34)
 

Т.е. вам надо, чтобы страница показывала 04:00:05 в момент захода клиента на страницу... а через 12 минут нахождения клиента на странице показывала 04:12:05?

Тогда зачем вам вообще объект Date ()?
Вначале тупо прописываете время сервера, затем по setTImeout ежесекундно добавляете по одной секунде.

Объект Date () можно использовать лишь для того, чтобы учесть стартовую разницу между серверным временем и временем полной загрузки страницы в браузер.

В общем, такую задачу я здесь уже решал - см. http://www.softtime.ru/forum/read.php?id_forum=4&id_theme=58956#post345902 (правда, тогда я был под другим никнеймом).

Уберите там Владивосток, Москву, Токио, Нью-Йорк и Лос-Анджелес и пропишите одно единственное серверное время - а функции все оставьте.

PS. Интересно, 3,5 года назад я "Лос-Анжелис" от топикстартера исправил...
но не до конца - на "Лос-Анжелес"...
И только сегодня окончательно исправляю на "Лос-Анджелес" :-((

  Ответить  
 
 автор: chexov   (14.02.2012 в 03:21)   письмо автору
 
   для: ЯСА   (13.02.2012 в 11:05)
 

сэнк ю вери матч

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования