Как определить системное время пользователя?

LiAna

Guest
Как определить системное время пользователя?

Задача: динамическая смена дизайна сайта в зависимости от времени суток. Как определить системное время на компе пользователя?
 

kvf77

Red Devil
LiAna

никак - единственно JavaScript определяет время на его компе, а затем передает его твоему серверу

хотя если порыться в заголовках браузера может что и нароешь
 

LiAna

Guest
всем спасибо. как и предполагалось нужен JavaScript:(
 

alexon

Новичок
У меня тоже возникала такая необходимость. сделал просто. На Javascript устанавливаю в cookie значение времени на лиенте а потом из PHP забираю его из cookie. Единственная проблема — не работает с отключенными cookie и javascript, но всего не предусмотришь. Но в моем случае это было исключено, поскольку для работы приложения они обязательно должны быть включены.
 

Valenok

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

tristram

Guest
LiAna
мне кажется самым правильным было бы сделать следущий механизм. при заходе на сайт в первый раз определять время с помощью javascript, думаю с этим проблем не возникнет, затем перенаправлять броузер средствами javascript на http://site/path/to/page?time=<время>, а там уже
PHP:
if ($_REQUEST["time"]) 
{
 setcookie("curusertime",$_REQUEST["time"]);
 setcookie("curservertime",time());
}
ну а далее в завимости от значения $_COOKIE["cooktime"] менять дизайн. пожалуй единственным недостатком данного решения является то что пользователя зашедшего в первый раз перебросит. хотя это не так важно. заметьте что указал как curusertime так и curservertime, это сделано для того чтобы если первый вход например в 15:00 а потом в 19:00 то можно было определить время пользователя не обращаясь к повторной записи cookie. для этого мы просто делаем
PHP:
 $offset = time() - intval($_COOKIE["curservertime"]);
мы получаем например 60*60 (3600) секунд т.е. час. если пользователь зашел через час после установки cookie. далее мы переводит это в минуты.
PHP:
$offset = $offset / 60;
и прибавляем к curusertime. реализация зависит от того какой формат мы изберем при определении времени пользователя. если вида "15:00" то
PHP:
$curusertime = explode(":",$_COOKIE["curusertime"]);
$curusertime[1] += $offset;
while ($curusertime[1] >= 60)
{
 $curusertime[0]++;
 $curusertime[1] -= 60;
}
if (strlen($curusertime[1]) == 1) {$curusertime[1] = "0".$curusertime[1];}
$usertime = join(":",$curusertime);
т.е. мы вычесляем сдвижку, далее циклом избавляемся от времени типа "15:125" ("17:05"). ну а далее всё просто ;)
 

LiAna

Guest
tristram
спасибо, все очень подробно и понятно. посмотрим, будет ли работать:))
 
Сверху