Перейти к контенту

Кто был сегодня для 2.0


Рекомендуемые сообщения

Значит так, пишу сей хак, вроде бы все сделал. Но есть одна проблемочка - не могу отловить, в какой момент обновление данных происходит (ну типа последнего визита и т.п.) - нужно для того, чтобы записать последний ай-пишник и метод входа (инфа для админа ;)). В create_session кидал код, в login и еще хз куда, что-то не то все. Как было UNKNOWN так и есть :D.

Еще не очень понятно работа с GMT (а конкретно с определением полночи для текущего посетителя). Здесь вроде как работает нормально, но мало ли чего.

Так же хак проходит обкатку на моем форуме, так что можно посмотреть там.

Ссылка на комментарий
Поделиться на других сайтах

Могу сказать тока одно: время (часовой пояс) какой в профиле стоит, такой и бери. А для перевода стрелок на летнее/зимнее время бери плюс на конец марта
Ссылка на комментарий
Поделиться на других сайтах

d1pro

Я мучался с этим хаком для 1.2 ... Он определяет полночь ДЛЯ СЕРВЕРА, а не для пользователей, а так же с АННАУН я разобрался по другому - я апдэйчу мэмбэрс ( не совсем помню где что и как ) вроде бы в Криэйт_Мэмбэр_Сэссшн в фанкшинс пхп ...

Ссылка на комментарий
Поделиться на других сайтах

Остап

Ну дык известно мне, а я вот сделал что от профиля пользователя зависит :D. А в лог пишется в "серверных" днях. Почти готово, только вот глюки поустранять (IP не пишется если есть cookie - не заходит видимо просто в create_session) и вот щас обнаружил, что если часовой пояс меньше пояса сервера, то не совсем правильно полночь определяется... Щас доделаю уже скоро...

Ссылка на комментарий
Поделиться на других сайтах

d1pro Разберёшься со временем, выбрось кусок ... Я не смог это победить, а хотелось бы чтоб не по серверу в 12 а для каждого по своему ...
Ссылка на комментарий
Поделиться на других сайтах

Так, со временем вроде порядок, вот кусок кода, правда накосячил наверное :D.

         //all this GMT stuff is really annoying
         //but we should go around this if our members live in other time zones than server

         //so we getting server timestamp what for end-user will be his midnight time

         $realtimestamp = mktime(0,0,0,date("m,d,Y"));
         $timestamp = $realtimestamp;

  	//do we have time_offset or use server defaults?
         if ($ibforums->member['time_offset'] != "")
         {
                $servertime = $ibforums->vars['time_offset'] * 3600;
                $clienttime = $ibforums->member['time_offset'] * 3600;

             if ( $ibforums->vars['time_adjust'] )
             {
                 $servertime += ($ibforums->vars['time_adjust'] * 60);
             }

                //I really don't know why this happens, but when dst is not in use, there is time lagging within 1 hour.
                //comment it out if you expiriencing problems
                if ($ibforums->member['dst_in_use'] == "0")
       {
          $clienttime -= 3600;
        }

    if ($servertime > $clienttime)
                {
                 $timestamp += ($servertime - $clienttime) - 86400;
                }
                else
                {
                 $timestamp -= $clienttime - $servertime;
                }

         }
         //we should get members what was online today for both server and client
         $use_timestamp = min ($timestamp, $realtimestamp);

Можно брать $timestamp - это будет (по идее) полночь для текущего пользователя).

Проверять проще всего таким образом

echo $timestamp." ".$std->get_date($timestamp, 'LONG');

Если показывает Сегодня 0:00, значит полночь правильно определилась ;).

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

Ссылка на комментарий
Поделиться на других сайтах

Не знаю, стоит ли проводить бета-тестирование :D. Вроде бы все... Ну может еще мелочи... Правда вот не знаю, стоит ли кидать этот хак в базу, так как несмотря на собственную реализацию всего и вся некоторые идеи есть от других аналогичных хаков...
Ссылка на комментарий
Поделиться на других сайтах

Так, кусок, что написан сверху есть crap :D. Глючит на границах дня. Можно сделать гораздо проще и чтоб работало ;)

$realtimestamp = mktime(0,0,0,date("m,d,Y"));
$timestamp = time() - (($std->get_time(time(), "H" ) * 3600) + ($std->get_time(time(), "i" ) * 60) + $std->get_time(time(), "s" ) );

Ссылка на комментарий
Поделиться на других сайтах

FriCkeR

Это можно косвенно определить по положению в списке (дальше - позже), а так же там подсказка с этими данными выскакивает при наведении мыши на ник.

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

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

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.