Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Разница во времени между сервером и клиентом, как поправить? 
:(
    Опции темы
sugee
Дата 20.5.2006, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 423
Регистрация: 12.6.2005

Репутация: 1
Всего: 4



У меня в скрипте авторизации для форума используется такая вещь: при регистрации вычисляется время с точностью  до долей секунды (microtime()), потом из логина и времени я получаю хэш, который записывается одновременно в БД и в куку.
Потом по этому хэшу который берётся из куки и сравнивается с хэшем записанным в БД, извлекается из базы имя пользователя и присвается переменной сессии.

Так вот дома у меня это работает как часы, а на хостинге ну никак.
Допёр в чём дело когда обратил внимание на время только что добавленного сообщения.
Она на час отличается от реального текущего времени. То есть это и есть реальное время у хостера, просто у нас  разница в часовых поясах.
Вот и вопрос - как бы мне подправить время? 
PM MAIL   Вверх
skyboy
Дата 20.5.2006, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



sugee, прикрути указание часового пояса при регистрации... А в целом - это не есть гуд. А если часы на локальном идут неверно? И отличие - ни час или два, а 48 минут? Или я неверно понял суть проблемы?  
PM MAIL   Вверх
sugee
Дата 20.5.2006, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 423
Регистрация: 12.6.2005

Репутация: 1
Всего: 4



skyboy,  тут похоже у меня не одна проблема, а сразу две.
Вообще говоря на значения записанные в куку и в базу данных  разница в часовых поясах никак не могла повлиять. 
Вот как это делалось
Код

function getsecurid( $user_name , $reg_time )
 {  return sha1( $user_name ) . sha1( $reg_time );  }

function getmicrotime()
 {
   list($frac, $sec) = explode( " ", microtime() );
   return $mtime = $frac + $sec;
 }


  $time = getmicrotime();
  $sid =  getsecurid( $name , $time );
  
  mysql_query( "insert into `members` values    
  ( '', '".mysql_escape_string( $name )."', '".$time."', '".$sid."', '".sha1($passwd)."', '' )" );

 setcookie( "name" , $sid , time()+311040 , "/" ); 

По любому в куке и в БД должно быть одно и то же.  Клиенту же посылается готовая кука,  он не может в ней ничего изменить.


Но время поправить всё равно нужно,   потому-что время отправления у всех постов на час меньше чем должно быть, а это уж точно не есть гуд.

Цитата(skyboy @  20.5.2006,  16:40 Найти цитируемый пост)
sugee, прикрути указание часового пояса при регистрации

Попробую, хотя пока не совсем представляю как это делается. 
PM MAIL   Вверх
sugee
Дата 20.5.2006, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 423
Регистрация: 12.6.2005

Репутация: 1
Всего: 4



Цитата(skyboy @  20.5.2006,  16:40 Найти цитируемый пост)
прикрути указание часового пояса при регистрации
Проще определить время на стороне клиента яваскриптом.

А вот что такое с куками - не могу понять.

 
PM MAIL   Вверх
Mal Hack
Дата 20.5.2006, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Вообще, время тут не должно зависеть. Тебя должен интересовать только интервал неактивности.
А так, вообще:
Код
<?php

print date( "j.m.Y H:i:s" , time() ) . "<br>"; // Время сервера

$needle = 3;  // Нужный нам часовой пояс
$tm = ( date( "Z" ) / 60 / 60 ); // Смещение часового пояса сервера относительно GMT
$sm = ( $needle * 3600 ) - date( "Z" ); // Смещение на нужный часовой пояс

print date( "j.m.Y H:i:s" , time() + $sm ); // Время, со смещением на наш часовой пояс

?>
 
PM ICQ   Вверх
sugee
Дата 21.5.2006, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 423
Регистрация: 12.6.2005

Репутация: 1
Всего: 4



Mal Hack, спасибо,  время поправил,  но сразу возникает встречный вопрос.  Неужели  часовой пояс нужно жёстко закреплять в скрипте,
а как тогда быть с обитателями других часовых поясов?
Если только так как предлагал skyboy,  но это не лучший выход.
Как например на этом форуме сделано? 
PM MAIL   Вверх
Mal Hack
Дата 21.5.2006, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Тогда делать так, как на форуме. Список из часовых поясов. 
PM ICQ   Вверх
sugee
Дата 21.5.2006, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 423
Регистрация: 12.6.2005

Репутация: 1
Всего: 4



Но чтобы можно было использовать такой список, надо чттобы при регистрации человек указал  своё   место жительства,  другого способа узнать его нет...

Ладно, с этим вроде разобрался, прошу прощения если не всё тут было по теме  smile   

Это сообщение отредактировал(а) sugee - 21.5.2006, 16:43
PM MAIL   Вверх
Mal Hack
Дата 21.5.2006, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Цитата(sugee @  21.5.2006,  16:42 Найти цитируемый пост)
Но чтобы можно было использовать такой список, надо чттобы при регистрации человек указал  своё   место жительства,  другого способа узнать его нет...

Можно, как-то через JS вытащить попробовать, или через USER_AGENT, но вроде бы там нет такой информации. 
PM ICQ   Вверх
skyboy
Дата 21.5.2006, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Mal Hack, даже если и вытаскивать системную информацию о местоположении, не факт, что она будет валидной smile Тут ситуация, как с показанием часов - вполне может быть неверно настроено... 
PM MAIL   Вверх
Mal Hack
Дата 21.5.2006, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



skyboy, да, это так, но в данном случае можно принебречь, т.к. нормальные пользователи у себя на машине ставят время, соответствующее их реальному часовому поясу. 
PM ICQ   Вверх
sugee
Дата 21.5.2006, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 423
Регистрация: 12.6.2005

Репутация: 1
Всего: 4



Цитата(sugee @  20.5.2006,  16:15 Найти цитируемый пост)
У меня в скрипте авторизации для форума используется такая вещь: при регистрации вычисляется время с точностью  до долей секунды (microtime()), потом из логина и времени я получаю хэш, который записывается одновременно в БД и в куку.
Потом по этому хэшу который берётся из куки и сравнивается с хэшем записанным в БД, извлекается из базы имя пользователя и присвается переменной сессии.

Гы,  а у меня эта штука заработала,  я ничего не делал, просто пошёл прогулятся, потом пришёл, заглянул на свой сайт,  а он меня  по куке узнал...   В чём проблема была так и не понял.
Ну ладно,  зато узнал много нового.
  
Mal Hack,  твоя идея живёт и побеждает,  другое дело насколько эффективно я её использую.   Но это уже другая тема.  
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0852 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.