web-dev-qa-db-ja.com

UIDを指定してユーザーのIPアドレスを確認しますか?

Drupal 7のWebサイトで、ロシアのマルチプレイヤーカードゲームを使用しています。非常に迷惑なプレイヤーを4〜5日ごとにブロックする必要があります。

以前Drupal私はphpBB 3を使用していました。これらの人々が小さな町や村から来た場合、ファイアウォールルールにIPネットワークを追加するだけで、再新しいメールアドレスで登録します。これは私の場合うまくいきました、そして私の質問はこの方針についてではありません。

私の問題は、Drupalでは、ユーザーIDが使用した最後のIPアドレスが見つからないことです。つまり虐待者は他のユーザーから私に報告され、私は彼のuidを知っていますが、ログで彼のIPアドレスを見つけることができません。

  1. Syslog-loggingを有効にして、Drupalメッセージが/ var/log/messagessに表示されますが、ユーザーのログインに関するメッセージが表示されることはほとんどありません。おそらくセッションがデフォルトで長いためです。ユーザーの快適さのためにこの方法でそれを維持したいと思います。

  2. 「データベースロギング」も有効にしていますが、どこに表示されるか(どのデータベーステーブルか)わかりません。

8

統計モジュールを有効にしている場合、「accesslog」テーブルにはすべての訪問者のIPが含まれます。

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

前者の方が後者よりも優れている点は、最初のものが常に最新のホスト名を表示するのに対して、後者は常に最新であるとは限らない場合があることです。

9
berkes

私の知る限り、Drupalは、ユーザーが使用するIPをユーザープロファイルで報告しません。カスタムモジュールを作成し、ユーザーが使用するIPを確認して、独自のデータベーステーブル;次に、適切な権限を持つユーザー(たとえば、ユーザーを管理する権限を持つユーザー)にユーザープロファイルで表示できます。

必要な関数は ip_address() で、これは hook_user_login() の実装で使用できます。 hook_user_view() を実装すると、適切な権限を持つユーザーにそのような情報を表示できます。

5
kiamlaluno

データベースロギングモジュールを使用している場合、Drupalはこの情報をウォッチドッグテーブルのhostname列の下に保存します。この情報を取得するカスタムクエリを作成するか、 Views Watchdog module を使用します(現在、7.xの開発リリースのみなので、Drupal 7)でどのように機能するかわかりません)ビューに。

3
jhedstrom

最近の2つのモジュールがこれに役立ちます。

ユーザーIPログ 、ビューの統合があります IPアドレスマネージャー 、ビューの統合はありませんが、マニフェストと統合することを目的としています。関連するすべてのモジュールを禁止します。

1
Patrick Kenny