web-dev-qa-db-fra.com

Découvrez l'adresse IP de l'utilisateur en fonction de son UID?

J'exécute Drupal 7 site Web avec un jeu de cartes multijoueur russe et je dois bloquer certains joueurs très ennuyeux tous les 4-5 jours.

Avant Drupal J'utilisais phpBB 3. Lorsque ces personnes venaient d'une petite ville/village, je venais d'ajouter leur réseau IP aux règles du pare-feu, afin qu'elles ne puissent pas s'inscrire avec une nouvelle adresse e-mail. Cela a bien fonctionné dans mon cas et ma question ne concerne pas cette politique.

Mon problème est qu'avec Drupal, je ne trouve pas la dernière adresse IP utilisée par un ID utilisateur. C'est à dire. l'abuseur m'a été signalé par d'autres utilisateurs et je connais son uid, mais je ne trouve pas son adresse IP dans les journaux, car:

  1. J'ai activé la journalisation syslog et voir les messages Drupal dans/var/log/messagess mais il y a rarement un message sur la connexion d'un utilisateur, probablement parce que les sessions sont longues par défaut, et je Je voudrais que cela reste ainsi pour le confort de l'utilisateur.

  2. J'ai également activé la "journalisation de la base de données", mais je ne sais pas où la voir (quelle table de base de données).

8
Alexander Farber

Si vous avez activé le module de statistiques, le tableau "accesslog" contient les adresses IP de tous vos visiteurs.

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

Si vous n'avez pas activé les statistiques, je vous conseille de le laisser, même pour ce résultat, car l'activer entraîne une grave pénalité de performance.

Dans ce cas, vous pouvez utiliser la table sessions:

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

L'avantage du premier sur le second, c'est que le premier vous montrera toujours le dernier nom d'hôte, alors que ce dernier n'est pas toujours à jour.

9
berkes

Pour autant que je sache, Drupal ne rapporte pas l'IP utilisée par les utilisateurs dans leur profil utilisateur. Vous pouvez créer un module personnalisé, vérifier l'IP utilisée par l'utilisateur et l'enregistrer dans votre propre table de base de données; vous pouvez ensuite l'afficher dans le profil utilisateur, aux utilisateurs disposant des autorisations appropriées (par exemple, aux utilisateurs autorisés à administrer les utilisateurs).

La fonction dont vous avez besoin est ip_address () , que vous pouvez utiliser dans votre implémentation de hook_user_login () . En implémentant hook_user_view () , vous pouvez ensuite afficher ces informations aux utilisateurs avec la bonne autorisation.

5
kiamlaluno

Si vous utilisez le module de journalisation de la base de données, Drupal stocke ces informations dans la table de surveillance, sous la colonne hostname. Vous pouvez soit écrire des requêtes personnalisées pour obtenir ces informations, soit utiliser le module Watchdog Views (actuellement seulement une version de développement pour 7.x, donc je ne sais pas comment cela fonctionne bien dans Drupal 7) pour exposer ce tableau aux vues.

3
jhedstrom

Deux modules récents peuvent vous y aider:

ser IP Log , qui a l'intégration de Views, et IP Address Manager , qui n'a pas d'intégration de Views mais est destiné à s'intégrer à Manifest, Cave Your Trolls et Misery-- interdire tous les modules connexes.

1
Patrick Kenny