UIDに与えられたユーザーのIPアドレスを見つけますか?

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

  •  16-10-2019
  •  | 
  •  

質問

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

Drupalの前に私はPhpbb 3を使用していました。これらの人が小さな都市/村から来たとき、私は彼らのIPネットワークをファイアウォールルールに追加するだけで、新しいメールアドレスで再登録できません。これは私の場合にうまくいきましたが、私の質問はこのポリシーに関するものではありません。

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

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

  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アドレス(), 、実装で使用できます hook_user_login(). 。実装 hook_user_view(), 、そのような情報を適切な許可でユーザーに表示できます。

データベースロギングモジュールを使用している場合、Drupalはこの情報をWatchDogテーブルに保存します。 hostname 桁。この情報を取得するためにカスタムクエリを書くか、 ウォッチドッグモジュールを表示します (現在、7.xの開発者のみであるため、Drupalでどれだけうまく機能しているかはわかりません7)そのテーブルをビューにさらすことができます。

最近の2つのモジュールはこれに役立つ場合があります。

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

セッションID() 現在のユーザーセッションIDは、彼/彼女がゲストであろうとメンバーであるかどうかを提供します。

$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