Drupal 7のWebサイトで、ロシアのマルチプレイヤーカードゲームを使用しています。非常に迷惑なプレイヤーを4〜5日ごとにブロックする必要があります。
以前Drupal私はphpBB 3を使用していました。これらの人々が小さな町や村から来た場合、ファイアウォールルールにIPネットワークを追加するだけで、再新しいメールアドレスで登録します。これは私の場合うまくいきました、そして私の質問はこの方針についてではありません。
私の問題は、Drupalでは、ユーザーIDが使用した最後のIPアドレスが見つからないことです。つまり虐待者は他のユーザーから私に報告され、私は彼のuidを知っていますが、ログで彼のIPアドレスを見つけることができません。
Syslog-loggingを有効にして、Drupalメッセージが/ var/log/messagessに表示されますが、ユーザーのログインに関するメッセージが表示されることはほとんどありません。おそらくセッションがデフォルトで長いためです。ユーザーの快適さのためにこの方法でそれを維持したいと思います。
「データベースロギング」も有効にしていますが、どこに表示されるか(どのデータベーステーブルか)わかりません。
統計モジュールを有効にしている場合、「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
前者の方が後者よりも優れている点は、最初のものが常に最新のホスト名を表示するのに対して、後者は常に最新であるとは限らない場合があることです。
私の知る限り、Drupalは、ユーザーが使用するIPをユーザープロファイルで報告しません。カスタムモジュールを作成し、ユーザーが使用するIPを確認して、独自のデータベーステーブル;次に、適切な権限を持つユーザー(たとえば、ユーザーを管理する権限を持つユーザー)にユーザープロファイルで表示できます。
必要な関数は ip_address() で、これは hook_user_login() の実装で使用できます。 hook_user_view() を実装すると、適切な権限を持つユーザーにそのような情報を表示できます。
データベースロギングモジュールを使用している場合、Drupalはこの情報をウォッチドッグテーブルのhostname
列の下に保存します。この情報を取得するカスタムクエリを作成するか、 Views Watchdog module を使用します(現在、7.xの開発リリースのみなので、Drupal 7)でどのように機能するかわかりません)ビューに。
最近の2つのモジュールがこれに役立ちます。
ユーザーIPログ 、ビューの統合があります IPアドレスマネージャー 、ビューの統合はありませんが、マニフェストと統合することを目的としています。関連するすべてのモジュールを禁止します。