Узнать IP-адрес пользователя, учитывая его UID?

drupal.stackexchange https://drupal.stackexchange.com/questions/1521

  •  16-10-2019
  •  | 
  •  

Вопрос

Я запускаю веб-сайт Drupal 7 с русской многопользовательской карточной игрой, и мне приходится блокировать некоторых очень надоедливых игроков каждые 4-5 дней.

До Drupal я использовал phpBB 3.Когда эти люди приезжали из небольшого города / деревни, я просто добавлял их IP-сеть в правила брандмауэра, чтобы они не могли повторно зарегистрироваться с новым почтовым адресом.Это хорошо сработало в моем случае, и мой вопрос не об этой политике.

Моя проблема в том, что с Drupal я не могу найти последний IP-адрес, используемый идентификатором пользователя.То есть.другие пользователи сообщают мне о нарушителе, и я знаю его uid, но я не могу найти его IP-адрес в журналах, потому что:

  1. Я включил ведение системного журнала и вижу сообщения Drupal в /var/log / messagess, но редко появляется сообщение о входе пользователя в систему, вероятно, потому, что сеансы по умолчанию длинные, и я хотел бы сохранить это таким образом для удобства пользователя.

  2. Я также включил "ведение журнала базы данных", но не знаю, где его увидеть (в какой таблице базы данных).

Это было полезно?

Решение

Если у вас включен модуль статистики, таблица «AccessLog» содержит IPS для всех ваших посетителей.

SELECT hostname FROM accesslog WHERE uid = %UID_FOR_YOUR_USER% LIMIT 1

Если у вас не включена статистика, я советую вам отказаться от этого, даже для этого результата, потому что это обеспечивает серьезное повышение квалификации.

В этом случае вы можете использовать sessions стол:

SELECT hostname FROM sessions WHERE uid = %UID_FOR_YOUR_USER% LIMIT 1

Преимущество первого над последним заключается в том, что первое всегда покажет вам последнее имя хоста, тогда как последнее не всегда может быть в курсе.

Другие советы

Насколько я знаю, Drupal не сообщает IP, используемый пользователями, в их профиле пользователя.Вы могли бы создать пользовательский модуль, проверить IP, используемый пользователем, и записать его в свою собственную таблицу базы данных;затем вы могли бы показать это в профиле пользователя пользователям, у которых есть соответствующие разрешения (например, пользователям с разрешением на администрирование пользователей).

Нужная вам функция - это ip_address(), который вы можете использовать в своей реализации hook_user_login().Реализующий hook_user_view(), Затем вы можете показать такую информацию пользователям с соответствующим разрешением.

Если вы используете модуль ведения журнала базы данных, Drupal хранит эту информацию в таблице наблюдения hostname столбец. Вы можете либо написать пользовательские запросы, чтобы получить эту информацию, либо использовать Просмотр модуля сторожевого пса (В настоящее время только релиз разработчика для 7.x, поэтому я не уверен, насколько хорошо он работает в Drupal 7), чтобы выставить эту таблицу для просмотров.

Два недавних модуля могут помочь с этим:

Пользовательский ip log, который имеет интеграцию представлений, и Менеджер IP -адреса, который не имеет интеграции представлений, но предназначена для интеграции с манифестом, проклеить свои троллей и страдания- все запрещающие связанные модули.

идентификатор сессии() дает вам текущий пользовательский идентификатор сеанса пользователя, является ли он/она гостем или участником.

$result = db_query("SELECT hostname FROM sessions WHERE sid = '".session_id()."'");
$data = db_fetch_object($result );
echo $data->hostname;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с drupal.stackexchange
scroll top