информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Spanning Tree Protocol: недокументированное применениеАтака на InternetГде водятся OGRы
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Крупный взлом GoDaddy 
 Просроченный сертификат ломает... 
 Phrack #70/0x46 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / web building
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Реализация через часовые пояса мне показалась сильно... 14.10.07 07:38  Число просмотров: 4503
Автор: Vedrus <Serokhvostov Anton> Статус: Member
<"чистая" ссылка> <обсуждение закрыто>
Реализация через часовые пояса мне показалась сильно сложной. Плюс ко всему вспомнил, что на разных форумах часто бывают заморочки со временем.

Не знаю, подойдёт ли такой вариант чисто для WEB, но в моём случае, когда с WEB-сайтом взаимодействует клиентское приложение вполне.

Алгоритм:
1. Читаем время на клиентской машине (GetSystemTime);
2. Читаем время на сервере (отправляем запрос скрипту на PHP с кодом echo time());
3. Переводим системное время клиента к числу секунд с 1 января 1601г.
4. Вычитаем из него то, что вернул сервер.
5. Это и будет поправка между клиентским и серверным временем. Погрешность +/- 10сек в зависимости от скорости соединяющей линии. Точного результата так не добьёшься, но для большинства задач такой точности хватит.

Жду компетентных комментариев…
<web building>
Как победить время? 30.09.07 17:02  
Автор: Vedrus <Serokhvostov Anton> Статус: Member
<"чистая" ссылка>
Проблема такая. Есть приложение (клиент), которое обменивается сообщениями с WEB-сайтом. Есть база данных, в которой хранятся времена событий (часовой пояс как у хостинг-провайдера).

Мне нужно, чтобы у клиента это время пересчитывалось в его «родное». Пока такая идея:
В винде с помощью функций GetSystemTime/SystemTimeToFileTime можно получить количество интервалов в 100нс с 1 января 1601г (MSDN), а в linux’e – он установлен у провайдера – time(). Time возвращает количество секунд с 1 января 1970г. (Д. Котеров. Самоучитель PHP4). Необходимую поправку рассчитать через эти функции.

Может есть способ попроще/покрасивее?
М.б. хранить информацию о часовом поясе клиента и расчитывать время клиента по этим данным? 01.10.07 20:32  
Автор: Den <Denis> Статус: The Elderman
<"чистая" ссылка> <обсуждение закрыто>
Реализация через часовые пояса мне показалась сильно... 14.10.07 07:38  
Автор: Vedrus <Serokhvostov Anton> Статус: Member
<"чистая" ссылка> <обсуждение закрыто>
Реализация через часовые пояса мне показалась сильно сложной. Плюс ко всему вспомнил, что на разных форумах часто бывают заморочки со временем.

Не знаю, подойдёт ли такой вариант чисто для WEB, но в моём случае, когда с WEB-сайтом взаимодействует клиентское приложение вполне.

Алгоритм:
1. Читаем время на клиентской машине (GetSystemTime);
2. Читаем время на сервере (отправляем запрос скрипту на PHP с кодом echo time());
3. Переводим системное время клиента к числу секунд с 1 января 1601г.
4. Вычитаем из него то, что вернул сервер.
5. Это и будет поправка между клиентским и серверным временем. Погрешность +/- 10сек в зависимости от скорости соединяющей линии. Точного результата так не добьёшься, но для большинства задач такой точности хватит.

Жду компетентных комментариев…
Нафига хранить время клиентской машины? 22.10.07 19:08  
Автор: Den <Denis> Статус: The Elderman
<"чистая" ссылка> <обсуждение закрыто>
Если время на клиентской машине не синхронизируется из того же источника, что и время WEB сервера, или не синхронизируется ни с чем вовсе, то в хранении этого времени нет никакого смысла.

При таком подходе мы всегда рискуем получить недостоверное время в следующих случаях:
1. Ручная смена времени пользователем
2. Ручная смена часового пояса пользователем
3. Разница в часовых поясах при переходе на летнее/зимнее время

При отсутствии синхронизации с сервером времени:
4. Различие в производителях/моделях системного таймера
5. Различия в заряде батареи, питающей системный таймер

ИМХО, если клиентское приложение имеет доступ к функциям WIN32API клиентской машины, то не проще ли получать настройку часового пояса клиентской машины и в БД хранить время по GMT?
Например так:
"Время GMT" = "Время WEB сервера" - "Часовой пояс клиента"

а при выводе этого времени клиенту, заново получить настройку часового пояса клиента и выполнить обратную функцию расчета времени.
Да, касяков предостаточно. Можешь дать ссылку в MSDN, где там API с поясами? А то не могу найти. 29.10.07 11:42  
Автор: Vedrus <Serokhvostov Anton> Статус: Member
<"чистая" ссылка> <обсуждение закрыто>
SystemTimeToTzSpecificLocalTime/TzSpecificLocalTimeToSystemTime/GetTimeZoneInformation 29.10.07 15:16  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка> <обсуждение закрыто>
1






Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2021 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach