Присутствующие на форуме участники
Проблема с секцией "Сегодня присутствовали"
Одна страница
Распечатать
. Редактировалось 1 раз, последний — #1
Добрый день,
Хотелось бы сначала выразить моё почтение автору этого форума. Наш сайт пользуется этим движком уже больше пяти лет. В этом году мы приняли решение обновить версию и переехать на форум 3.02. Мы в полном восторге от новой версии, много полезностей и технических улучшений.
Недавно мы столкнулись с такой проблемой: войдя на форум под своим именем и через некоторое время закрыв вкладку - я буду в списках "сегодня присутствовали". Однако, если я решу выйти со своего аккаунта, и, предположим, зайти в аккаунт второй, то меня в списках сегодня присутствовавших уже не будет. Будет отображён второй аккаунт.
Если выйду из него, то оба аккаунта не будут в списках сегодня присутствовавших. В старой версии такой проблемы не было, выходя со своего аккаунта, пользователь, который сейчас заходит всегда фиксировался в списках. Скажите, можно ли разрешить эту проблему? Что примечательно, есть зайти в профиль пользователя, то последний визит отображается корректно.
Буду очень благодарен за возможно оказанную помощь
Хотелось бы сначала выразить моё почтение автору этого форума. Наш сайт пользуется этим движком уже больше пяти лет. В этом году мы приняли решение обновить версию и переехать на форум 3.02. Мы в полном восторге от новой версии, много полезностей и технических улучшений.
Недавно мы столкнулись с такой проблемой: войдя на форум под своим именем и через некоторое время закрыв вкладку - я буду в списках "сегодня присутствовали". Однако, если я решу выйти со своего аккаунта, и, предположим, зайти в аккаунт второй, то меня в списках сегодня присутствовавших уже не будет. Будет отображён второй аккаунт.
Если выйду из него, то оба аккаунта не будут в списках сегодня присутствовавших. В старой версии такой проблемы не было, выходя со своего аккаунта, пользователь, который сейчас заходит всегда фиксировался в списках. Скажите, можно ли разрешить эту проблему? Что примечательно, есть зайти в профиль пользователя, то последний визит отображается корректно.
Буду очень благодарен за возможно оказанную помощь
Вообще, ситуация, когда пользователь сидит под несколькими логинами, достаточно редкая (а на многих форумах и запрещенная правилами), поэтому я такой вариант не учитывал. А в IntB 3.x сделано так: для того, чтобы когда пользователь входит на форум под своим именем, он убирался бы из числа гостей, добавлено отслеживание по хешу, который считается из IP-адреса, User-Agent и ещё нескольких заголовков. И когда происходит вход/выход пользователя, то в списке присутствующих обновляются данные для всех, у кого такой же хеш, поэтому данные входа под другими логинами теряются.
Делается это в функции fix_online файла app/app.php, вот в этом куске кода:
Можно попробовать заменить OR $sql.=' OR uid='.intval($data['uid']); на
Делается это в функции fix_online файла app/app.php, вот в этом куске кода:
$sql = 'DELETE FROM '.DB_prefix.'online WHERE hash=\''.$this->db->slashes($hash).'\'';
if ($data['uid'] > AUTH_SYSTEM_USERS)
$sql.=' OR uid='.intval($data['uid']);
$this->db->query($sql);
Можно попробовать заменить OR $sql.=' OR uid='.intval($data['uid']); на
$sql.=' AND (uid=1 OR uid='.intval($data['uid']).')';
Тогда всё станет работать так же, как было в IntB 2.x.Критикуя — предлагай, предлагая — обосновывай!
4xpro.ru — мой личный сайт-мультиблог на Intellect Board.
В принципе, у нас это тоже не поощряется. У нас есть один пользователь, который заправляет двумя аккаунтами в рамках исключения (ролевая игра).
На самом деле, проблема глубже. Она касается и единичных аккаунтов, т.е. если любой пользователь решит завершить сессию на форуме и выйдет из него (например, с целью, чтобы кто-то из домочадцев не мог прочитать личную информацию (ЛС)), то пользователь из списков также исчезает и таким образом, это влияет на статистику посещений в целом. Вроде человек был, сообщение на форуме оставил, а вроде как его и не было сегодня, некая такая невидимка.
Исправил вышеупомянутый код, но я так же исчезаю из списков "Сегодня присутствовали", как только нажимаю на кнопку "Выйти"...
На самом деле, проблема глубже. Она касается и единичных аккаунтов, т.е. если любой пользователь решит завершить сессию на форуме и выйдет из него (например, с целью, чтобы кто-то из домочадцев не мог прочитать личную информацию (ЛС)), то пользователь из списков также исчезает и таким образом, это влияет на статистику посещений в целом. Вроде человек был, сообщение на форуме оставил, а вроде как его и не было сегодня, некая такая невидимка.
Исправил вышеупомянутый код, но я так же исчезаю из списков "Сегодня присутствовали", как только нажимаю на кнопку "Выйти"...
. Редактировалось 1 раз, последний — #4
Разобрался. В общем, нужно привести тот кусок кода, о котором шла речь, к такому виду:
Но этого будет недостаточно. Потребуется ещё изменить PRIMARY KEY таблицы {prefix}_online, чтобы в него входили столбцы hash и uid.
Делается это так
(выполнять в чем-нибудь вроде PhpMyAdmin или подключившись к MySQL из командной строки).
После этого исчезнет проблема и исчезновения пользователей после выхода, и проблема захода под двумя разными логинами. Но при этом пользователь, вошедший на форум, перестанет считаться гостем.
Вместо {prefix} нужно прописать свой префикс, чаще всего это intb или ib.
$sql = 'DELETE FROM '.DB_prefix.'online WHERE hash=\''.$this->db->slashes($hash).'\'';
$sql.=' AND (uid=1 OR uid='.intval($data['uid']).')';
$this->db->query($sql);
Но этого будет недостаточно. Потребуется ещё изменить PRIMARY KEY таблицы {prefix}_online, чтобы в него входили столбцы hash и uid.
Делается это так
ALTER TABLE `{prefix}_online` DROP PRIMARY KEY, ADD PRIMARY KEY (`hash`,`uid`);
(выполнять в чем-нибудь вроде PhpMyAdmin или подключившись к MySQL из командной строки).
После этого исчезнет проблема и исчезновения пользователей после выхода, и проблема захода под двумя разными логинами. Но при этом пользователь, вошедший на форум, перестанет считаться гостем.
Вместо {prefix} нужно прописать свой префикс, чаще всего это intb или ib.
Критикуя — предлагай, предлагая — обосновывай!
4xpro.ru — мой личный сайт-мультиблог на Intellect Board.
Спасибо, что вообще взялись за этот вопрос. Проблема действительно разрешилась, теперь выходя из форума я остаюсь в списках. НО:
Вставил код в app.php и выполнил SQL запрос в PhpMyAdmin.
Теперь после выхода из форума, я далее свечусь Онлайн. Не знаю, возможно, что это только на некоторое время, и позже имя исчезнет. В таком случае, в принципе, это не проблема.
В списках теперь имена дублируются почему-то.
Вставил код в app.php и выполнил SQL запрос в PhpMyAdmin.
Теперь после выхода из форума, я далее свечусь Онлайн. Не знаю, возможно, что это только на некоторое время, и позже имя исчезнет. В таком случае, в принципе, это не проблема.
В списках теперь имена дублируются почему-то.
. Редактировалось 2 раза, последний — #6
Видимо, заходите с разных устройств или IP-адресов, и получается разное поле hash. Тогда попробуем так:
Всё правильно: там показывается, кто был на форуме последние 10 минут, вне зависимости от того, залогинены они сейчас или нет.
$sql = 'DELETE FROM '.DB_prefix.'online WHERE (hash=\''.$this->db->slashes($hash).'\' AND uid=1)';
if (!$this->is_guest()) $sql.=' OR uid='.intval($data['uid']);
$this->db->query($sql);
Всё правильно: там показывается, кто был на форуме последние 10 минут, вне зависимости от того, залогинены они сейчас или нет.
Критикуя — предлагай, предлагая — обосновывай!
4xpro.ru — мой личный сайт-мультиблог на Intellect Board.
Теперь моё имя не дублируется. И не дублируется имя участницы, которая заходила на форум в тот же момент что и я. А вот два пользователя, которые были на форуме утром, почему-то дублируются:
Одна страница
Распечатать У вас нет прав для отправки сообщений в эту тему.