Frage

Ich leite Drupal 7-Website mit einem russischen Multiplayer-Kartenspiel und muss alle 4-5 Tage einige sehr nervige Spieler blockieren.

Vor Drupal verwendete ich PHPBB 3. Als diese Personen aus einer kleinen Stadt/einem Dorf stammen würden, würde ich einfach ihre IP-Network zu den Firewall-Regeln hinzufügen, damit sie nicht mit einer neuen Mail-Adresse wieder registrieren können. Dies hat in meinem Fall gut funktioniert und in meiner Frage geht es nicht um diese Richtlinie.

Mein Problem ist, dass ich bei Drupal die letzte IP -Adresse nicht finden kann, die von einer Benutzer -ID verwendet wird. Der Missbraucher wird mir von anderen Benutzern gemeldet und ich kenne seine UID, aber ich kann seine IP -Adresse in den Protokollen nicht finden, weil:

  1. Ich habe Syslog-Logging aktiviert und die Drupal-Nachrichten in/var/log/messagess angezeigt, aber es gibt selten eine Nachricht über eine Benutzeranmeldung, wahrscheinlich weil die Sitzungen standardmäßig lange dauern und ich möchte es so halten Benutzerkomfort.

  2. Ich habe auch "Datenbankprotokollierung" aktiviert, weiß aber nicht, wo Sie sie sehen sollen (welche Datenbanktabelle).

War es hilfreich?

Lösung

Wenn Sie ein Statistikmodul aktiviert haben, enthält die Tabelle "AccessLog" die IPs für alle Ihre Besucher.

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

Wenn Sie keine Statistiken ermöglicht haben, rate ich Ihnen, sie selbst für dieses Ergebnis auszulassen, da dies eine schwere Leistungserbringung verursacht.

In diesem Fall können Sie verwenden sessions Tisch:

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

Der Vorteil des ersten über den letzteren ist, dass der erste Ihnen immer den neuesten Hostnamen zeigt, während letztere möglicherweise nicht immer auf dem neuesten Stand ist.

Andere Tipps

Soweit ich weiß, meldet Drupal nicht die IP, die von Benutzern in ihrem Benutzerprofil verwendet wird. Sie können ein benutzerdefiniertes Modul erstellen, die vom Benutzer verwendete IP überprüfen und in Ihrer eigenen Datenbanktabelle aufzeichnen. Dann können Sie es im Benutzerprofil an Benutzer anzeigen, die über die richtige Berechtigung verfügen (z. B. den Benutzern mit der Erlaubnis zur Verwaltung von Benutzern).

Die Funktion, die Sie benötigen IP Adresse(), was Sie bei Ihrer Implementierung von verwenden können Hook_user_login (). Implementierung Hook_user_view (), Sie können diese Informationen dann den Benutzern mit der richtigen Erlaubnis anzeigen.

Wenn Sie das Datenbankprotokollierungsmodul verwenden, speichert Drupal diese Informationen in der Tischtabelle unter der hostname Säule. Sie können entweder benutzerdefinierte Abfragen schreiben, um diese Informationen zu erhalten, oder die verwenden Ansichten Watchdog -Modul (Derzeit nur eine Dev -Veröffentlichung für 7.x. Ich bin mir also nicht sicher, wie gut es in Drupal 7 funktioniert), um diese Tabelle an Ansichten auszusetzen.

Zwei aktuelle Module können dabei helfen:

Benutzer IP -Protokoll, was Ansichten integriert hat und IP -Adressmanager, was keine Ansichten integriert hat, sondern in Manifest integriert ist, Ihre Trolle und Ihr Elend hängen- alle verbotenen verwandten Module.

Session-ID() Gibt Ihnen die aktuelle Benutzersitzung, ob er/sie ein Gast oder ein Mitglied ist.

$result = db_query("SELECT hostname FROM sessions WHERE sid = '".session_id()."'");
$data = db_fetch_object($result );
echo $data->hostname;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit drupal.stackexchange
scroll top