[Помощь] Неопределяет в статистике статус зашедшего на форум

Статус
В этой теме нельзя размещать новые ответы.

a_smith

Гуру форума
Регистрация
4 Дек 2008
Сообщения
261
Реакции
54
Неопределяет в статистике статус зашедшего на форум, некоторые люди (большинство) не определяются на форуме: ни как гость, ни как юзер форума - просто выкидывается IP? Кто они? И как их избежать? Если "левые" то почему Гость неприсваеивается? Если кто сталкивался - растолкуйте.

scr01.JPG
 
а под обычным пользователем/гостем что видно вместо ip?
что лежит в сессиях в базе? (запусти запрос (префикс таблицы может быть другой))
Код:
SELECT * FROM forum_sessions ORDER BY running_time desc LIMIT 0, 25
убедись что у вышеуказанных юзеров member_group = id гостя , обычно 2
Если там все ровно будем искать дальше, уже в php
 
Очень странная картина, id_пользователя есть, но группа почему то не Выводится ни ник...


scr02.GIF
 
это стольок народу постоянно на форуме? 8 страниц?
сдается мне что большая часть строк - устаревшие, просто они не удалились
попробуй обнулить эту таблицу
 
это стольок народу постоянно на форуме? 8 страниц?
сдается мне что большая часть строк - устаревшие, просто они не удалились
попробуй обнулить эту таблицу

Ну вот удалил, через 15 минут та же картина...
идентификаторы стоят у всех , а вот member_name в меньшей половины
Вот интерессно Sql-запрос посмотреть который выбирает на статистику. Не в курсе где найти?
 
включи отладку (в 2 местах: в global.conf sql_debug = 1 и в админке в общих настроках уровень отладки = 3)
это выведет список всех запросов на странице, правда только твоих запросов
но можно потыкаться под гостем, поробовать залогиниться с верным/неверным паролем, при этом анализиуруя запросы
неверный логин должен выглядить так
Код:
SHUTDOWN: UPDATE forum_sessions SET member_name='',member_id=0,member_group=2,login_type=0,running_time=1238189566,location='Login,0,01',in_error=0,location_1_type='',location_1_id=0,location_2_type='',location_2_id=0,location_3_type='',location_3_id=0 WHERE id='874dc3c1cd4918a5d1a2b7a7ce55fe8a'
если member_group не присвоен и member_id не 0, то это будет странно, копай код этой страницы, возможно там ошибка в запросе
 
Результаты отладки:

scr03.JPG
 
Вообщем непонятно почему, но в таблицу _session неймЫ непопадают
В файле /sources/lib/func_boardstats.php (который отвечает за логику вывода данных в список юзеров на главной) есть запрос

$this->ipsclass->DB->simple_construct( array( 'select' => 'id, member_id, member_name, login_type, running_time, member_group',
'from' => 'sessions',
'where' => "running_time > $time",
//'order' => "running_time DESC" // Sort in PHP to avoid filesort in SQL
) );

т.е. обычный SQL это
SELECT id, member_id, member_name, login_type, running_time, member_group FROM ibf_sessions

его наверное надо переделать на :
SELECT a.id, a.member_id, b.name, a.login_type, a.running_time, a.member_group FROM ibf_sessions a,
ibf_members b WHERE a.id=b.id

Но не знаю как это сделать внутри IPB, т.е. объединять два запроса, ошибка синтаксиса как некрутил....
Может кто поможет...
 
Помоему ты ну туда полез.
Это называется боремся не с болезнью, а с симптомами.
Тебе надо разобраться почему в сесиию имена не попадают, а должны
в class_session.php есть
PHP:
        	$this->ipsclass->DB->do_shutdown_insert( 'sessions',
													 array(
															'id'                 => $this->session_id,
															'member_name'        => $this->member['members_display_name'],
															'member_id'          => intval($this->member['id']),
															'member_group'       => $this->member['mgroup'],
															'login_type'         => intval(substr($this->member['login_anonymous'],0, 1)),
															'running_time'       => $this->time_now,
															'ip_address'         => $this->ipsclass->ip_address,
															'browser'            => substr( $this->ipsclass->user_agent, 0, 200 ),
															'location'           => $vars['location'],
															'in_error'           => 0,
															'location_1_type'    => isset($vars['1_type']) ? $vars['1_type'] : '',
															'location_1_id'      => isset($vars['1_id']) ? intval($vars['1_id']) : 0,
															'location_2_type'    => isset($vars['2_type']) ? $vars['2_type'] : '',
															'location_2_id'      => isset($vars['2_id']) ? intval($vars['2_id']) : 0,
															'location_3_type'    => isset($vars['3_type']) ? $vars['3_type'] : '',
															'location_3_id'      => isset($vars['3_id']) ? intval($vars['3_id']) : 0,

вот его дамп в отладке (таблицу сессий надо предварительно очистить)
Код:
SHUTDOWN: INSERT INTO forum_sessions (id,member_name,member_id,member_group,login_type,running_time,ip_address,browser,location,in_error,location_1_type,location_1_id,location_2_type,location_2_id,location_3_type,location_3_id) VALUES('a97f3178fecf7a19038570b60585bd7a','',0,2,0,1238230913,'127.0.0.1','Opera/9.63 (Windows NT 6.1; U; ru) Presto/2.1.1','idx,0,',0,'',0,'',0,'',0)
или после логина
Код:
SHUTDOWN: INSERT INTO forum_sessions (id,member_name,member_id,member_group,login_type,running_time,ip_address,browser,location,in_error,location_1_type,location_1_id,location_2_type,location_2_id,location_3_type,location_3_id) VALUES('2af78ae772e6580fce04dda64ecbc309','Виллен',1048,4,0,1238231172,'127.0.0.1','Opera/9.63 (Windows NT 6.1; U; ru) Presto/2.1.1','idx,0,',0,'',0,'',0,'',0)

у тебя все поля заполнены? Если нет, то надо разбираться почему,
если же заполнены надо сомтреть дальше ,возможно слудущие запросы портят инфу.
 
Для отладки добавляю в функциях в которых идет insert в class_session.php:

'ip_address' => '10.100.100.1'

это функции
create_member_session()
create_guest_session()
create_bot_session($bot, $name="")
update_bot_session($bot, $name="")

scr05.JPG
Результат неутешительный, такое чувство что сессии открываются где-то до этих ф-ций, хотя в коде ни черта не нашел.
Не могу понять почему одни попадают, другие нет. Записи в members идентичные...

2 Виллен - можно аську мне в личку? для консультаций...
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху