Статистика посещений (IP посетителя)

Проблемы с установкой или работой phpBB 3.0.x? Получите помощь здесь!
С 1 января 2017 года phpBB Group прекращает поддержку phpBB версии 3.0.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.0 до 1 июля 2017 года.
Подробнее: Окончание поддержки phpBB 3.0.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
Garret_Dark
phpBB 2.0.16
Сообщения: 1097
Стаж: 17 лет 8 месяцев
Откуда: root/world/russia/
Благодарил (а): 126 раз
Поблагодарили: 206 раз

Re: Статистика посещений (IP посетителя)

Сообщение Garret_Dark »

NeSlava, спасибо за помощь, но чтото не получается...
Вы можете описать куда эти запросы вставляли у себя?
NeSlava
phpBB 1.2.1
Сообщения: 22
Стаж: 15 лет 7 месяцев
Откуда: Обнинск
Благодарил (а): 8 раз
Поблагодарили: 8 раз

Re: Статистика посещений (IP посетителя)

Сообщение NeSlava »

Если просто выбрать в базе, то в phpMyAdmin, а для форума нужна помощь Guru! Я пока в коде слаб.
Аватара пользователя
Garret_Dark
phpBB 2.0.16
Сообщения: 1097
Стаж: 17 лет 8 месяцев
Откуда: root/world/russia/
Благодарил (а): 126 раз
Поблагодарили: 206 раз

Re: Статистика посещений (IP посетителя)

Сообщение Garret_Dark »

Ну вот я в phpMyAdmin делаю

Код: Выделить всё

SELECT user_id, (
SELECT user_ip
FROM phpbb_log
WHERE user_id = u.user_id
ORDER BY log_time DESC
LIMIT 1
) AS userlast_ip
FROM phpbb_users u
HAVING userlast_ip IS NOT NULL ;
В итоге выдает
Маленькую таблицу
user_id userlast_ip
1
2 127.0.0.1
57 127.0.0.1

Все вроде правильно, но в phpbb_users userlast_ip остается со значением 0.

Второй код

Код: Выделить всё

SELECT user_id,user_ip FROM phpbb_users HAVING user_ip IS NOT NULL AND user_ip<>'';
Выдает такуюже таблицу
user_id user_ip
2 127.0.0.1
54 127.0.0.1
55 127.0.0.1
56 127.0.0.1
57 127.0.0.1

Судя по кол-ву результат лучше, но в phpbb_users userlast_ip также остается со значением 0...
NeSlava
phpBB 1.2.1
Сообщения: 22
Стаж: 15 лет 7 месяцев
Откуда: Обнинск
Благодарил (а): 8 раз
Поблагодарили: 8 раз

Re: Статистика посещений (IP посетителя)

Сообщение NeSlava »

подправил
Аватара пользователя
grishin
phpBB 2.0.1
Сообщения: 288
Стаж: 16 лет 4 месяца
Благодарил (а): 54 раза
Поблагодарили: 32 раза

Re: Статистика посещений (IP посетителя)

Сообщение grishin »

Так а что в итоге нужно вставить в memberlist_body (или ещё куда то)? что бы в списке пользователей IP выводился с которого последний раз заходил пользователь, как описывал Garret_Dark на скриншоте.
В жизни так бывает...
NeSlava
phpBB 1.2.1
Сообщения: 22
Стаж: 15 лет 7 месяцев
Откуда: Обнинск
Благодарил (а): 8 раз
Поблагодарили: 8 раз

Re: Статистика посещений (IP посетителя)

Сообщение NeSlava »

Что касается БД, то в таблице _users создаем поле userlast_ip (тип varchar 40), из под крона запускаем запрос

Код: Выделить всё

update phpbb_users u set userlast_ip=(select log_ip from phpbb_log where user_id=u.user_id order by log_id desc limit 1);
Получаем в новом поле IP адрес последнего входа пользователя.
А пример визуализации, по-моему, описан здесь
Аватара пользователя
Garret_Dark
phpBB 2.0.16
Сообщения: 1097
Стаж: 17 лет 8 месяцев
Откуда: root/world/russia/
Благодарил (а): 126 раз
Поблагодарили: 206 раз

Re: Статистика посещений (IP посетителя)

Сообщение Garret_Dark »

grishin писал(а):Так а что в итоге нужно вставить в memberlist_body (или ещё куда то)?
Создаем поле куда будут сыпаться последние IP
SQL

Код: Выделить всё

ALTER TABLE `phpbb_users` ADD `userlast_ip` VARCHAR( 40 ) NOT NULL
Открыть memberlist.php
Найти

Код: Выделить всё

'VISITED'		=> (empty($last_visit)) ? ' - ' : $user->format_date($last_visit),
Добавить ниже

Код: Выделить всё

		'LST_IP'        => $data['userlast_ip'],
Открыть memberlist_body.html
Найти

Код: Выделить всё

{memberrow.VISITED}
Добавить прямо на строке сразу после найденного

Код: Выделить всё

<!-- IF U_ACP --><br />{memberrow.LST_IP}<!-- ENDIF -->
IP виден только админам.
Аватара пользователя
grishin
phpBB 2.0.1
Сообщения: 288
Стаж: 16 лет 4 месяца
Благодарил (а): 54 раза
Поблагодарили: 32 раза

Re: Статистика посещений (IP посетителя)

Сообщение grishin »

Всё чудесно заработало. Спасибо огромное) :)
В жизни так бывает...
Аватара пользователя
Garret_Dark
phpBB 2.0.16
Сообщения: 1097
Стаж: 17 лет 8 месяцев
Откуда: root/world/russia/
Благодарил (а): 126 раз
Поблагодарили: 206 раз

Re: Статистика посещений (IP посетителя)

Сообщение Garret_Dark »

grishin писал(а):Всё чудесно заработало.
Но это решение приведет к нагрузке если пользователей много + если лог большой.
Ведь IP будет задаваться все юзерам при запросе, даже тем где это уже не нужно.
Потому еще раз хочу обратиться к гуру этого форума с просьбой объяснить что и куда вставлять, чтобы при логине (Автовходе или после ввода пароля) выполнялся SQL-запрос для входящего юзера отдельно, тоесть для его ID
вот php-код запроса SQL

Код: Выделить всё

$sql = "update phpbb_users u set userlast_ip=(select log_ip from phpbb_log where user_id=u.user_id order by log_id desc limit 1);";
Думаю в значение user_id нужно вставить переменную с user_id входящего юзера, а сам код черт его знает куда :roll: :) Просьба помочь в этом вопросе.

Добавлено спустя 25 минут 9 секунд:
Еще вариантик прикинул на основе SQL запроса NeSlava, запрос берет IP из последней сессии юзера, что не требует установки мода Log Connections, единственная проблема, что при такой выборке поля юзеров с последним IP, при отсутствии сессии этих юзеров становятся пустыми. Если както его подправить, то это решит вопрос нагрузки (Обновляться будут только те юзеры у которых еще не истекла сессия)...

Код: Выделить всё

update phpbb_users u set userlast_ip=(select session_ip from phpbb_sessions where session_user_id=u.user_id order by session_last_visit desc limit 1);
Это имхо, немного получше вариант чем брать из мода, но все также остается желательным, чтобы поля обновлялись для каждого юзера отдельно. Надеюсь на помощь гуру.

P.S. Понять только немогу, последний IP юзера очень часто нужен, почему изначально его в функционал форума не добавили?..
Аватара пользователя
grishin
phpBB 2.0.1
Сообщения: 288
Стаж: 16 лет 4 месяца
Благодарил (а): 54 раза
Поблагодарили: 32 раза

Re: Статистика посещений (IP посетителя)

Сообщение grishin »

Garret_Dark писал(а):Но это решение приведет к нагрузке если пользователей много + если лог большой.
Много это сколько? )) много онлайн или много которые постоянно заходят?)
Лог большой это когда 100.000 юзеров и они постоянно заходят на форум? тогда большой будет лог?
Garret_Dark писал(а):Ведь IP будет задаваться все юзерам при запросе, даже тем где это уже не нужно.
А где не нужен?
В жизни так бывает...
Аватара пользователя
Garret_Dark
phpBB 2.0.16
Сообщения: 1097
Стаж: 17 лет 8 месяцев
Откуда: root/world/russia/
Благодарил (а): 126 раз
Поблагодарили: 206 раз

Re: Статистика посещений (IP посетителя)

Сообщение Garret_Dark »

grishin писал(а):Много это сколько? )) много онлайн или много которые постоянно заходят?)
Много зарегистрированных + большой лог (Конечно настроить автоочистку лога будет нужно обязательно)
Конкретно сколько сказать трудно, но чем больше будет юзеров тем больше нагрузка.
grishin писал(а):А где не нужен?
Не нужен тем юзерам которые давно были и IP с последнего визита у них уже прописан.
Аватара пользователя
MIT
Former team member
Сообщения: 2500
Стаж: 17 лет 6 месяцев
Откуда: 56°20′02″ с. ш. 36°42′45″ в. д.
Благодарил (а): 3 раза
Поблагодарили: 351 раз

Re: Статистика посещений (IP посетителя)

Сообщение MIT »

Garret_Dark
Я не очень понял зачем нужны какие-то манипуляции с переносом данных из одной таблицы в другую, если можно в функцию session_begin сразу вставить код, который будет заносить IP адрес пользователя в нужное поле таблицы _users.
Аватара пользователя
Garret_Dark
phpBB 2.0.16
Сообщения: 1097
Стаж: 17 лет 8 месяцев
Откуда: root/world/russia/
Благодарил (а): 126 раз
Поблагодарили: 206 раз

Re: Статистика посещений (IP посетителя)

Сообщение Garret_Dark »

MIT, потомучто не знаем куда вставлять и какой именно код :? я брал оттуда, где известно, точно лежат IP пользователей...
Спасибо что откликнулись!
Аватара пользователя
MIT
Former team member
Сообщения: 2500
Стаж: 17 лет 6 месяцев
Откуда: 56°20′02″ с. ш. 36°42′45″ в. д.
Благодарил (а): 3 раза
Поблагодарили: 351 раз

Re: Статистика посещений (IP посетителя)

Сообщение MIT »

Ну, например, можно вставить после строки

Код: Выделить всё

                        $this->data['user_lang'] = basename($this->data['user_lang']); 
в файле includes/session.php
Аватара пользователя
Garret_Dark
phpBB 2.0.16
Сообщения: 1097
Стаж: 17 лет 8 месяцев
Откуда: root/world/russia/
Благодарил (а): 126 раз
Поблагодарили: 206 раз

Re: Статистика посещений (IP посетителя)

Сообщение Garret_Dark »

MIT и что туда вставить? :oops:

Вернуться в «Поддержка phpBB 3.0.х»