Question

Je suis en cours d'exécution site web Drupal 7 avec un jeu de cartes multijoueur russe et doivent bloquer certains joueurs très ennuyeux tous les 4-5 jours.

Avant Drupal j'utilisais phpBB 3. Lorsque ces personnes proviendrait d'une petite ville / village, je venais d'ajouter leur réseau IP aux règles de pare-feu, de sorte qu'ils ne peuvent pas se réinscrire avec une nouvelle adresse mail . Cela a bien fonctionné dans mon cas et ma question ne concerne pas cette politique.

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

  1. J'ai activé diagraphie 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 voudrais de le garder ainsi pour le confort de l'utilisateur.

  2. Je l'ai également permis "l'enregistrement de base de données", mais ne sait pas où la voir (quelle table de base de données).

Était-ce utile?

La solution

Si vous avez des statistiques du module activé, la table « accesslog » contient les adresses IP pour tous vos visiteurs.

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

Si vous ne disposez pas de statistiques ont permis, je vous conseille de laisser le tout, même pour ce résultat, car ce qui lui permet, provoque une performance peine sévère.

Dans ce cas, vous pouvez utiliser la table de sessions:

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

L'avantage du premier sur celui-ci, est que le premier sera toujours vous montrer le dernier nom d'hôte, alors que ce dernier est peut-être pas toujours à jour.

Autres conseils

Pour autant que je sache, Drupal ne signale pas l'adresse IP utilisée par les utilisateurs dans leur profil d'utilisateur. Vous pouvez créer un module personnalisé, vérifiez l'adresse IP utilisée par l'utilisateur, et l'enregistrer dans votre propre table de base de données; alors vous pourriez le montrer dans le profil de l'utilisateur, aux utilisateurs qui a la permission droit (par exemple, aux utilisateurs avec la permission aux utilisateurs de Administrez).

La fonction dont vous avez besoin est ip_address () , qui vous pouvez utiliser dans votre implémentation de hook_user_login () . La mise en œuvre hook_user_view () , vous pouvez afficher ces informations aux utilisateurs avec la permission droit.

Si vous utilisez le module d'enregistrement de base de données, Drupal stocke ces informations dans la table de chien de garde, sous la colonne hostname. Vous pouvez écrire des requêtes personnalisées pour obtenir à ces informations, ou utilisez Vues Module chien de garde (actuellement seulement dev relâche 7.x, donc je ne sais pas comment il fonctionne dans Drupal 7) pour exposer cette table à vues.

Deux modules récents peuvent aider à cela:

utilisateur IP Log , qui a l'intégration de vues, et IP Address Manager , qui n'a pas l'intégration de vues, mais vise à intégrer avec Manifest, Cave Vos Trolls et Misery-- tous les modules connexes interdisant.

session_id () vous donne l'utilisateur en cours de session id s'il / elle est un invité ou un membre.

$result = db_query("SELECT hostname FROM sessions WHERE sid = '".session_id()."'");
$data = db_fetch_object($result );
echo $data->hostname;
Licencié sous: CC-BY-SA avec attribution
Non affilié à drupal.stackexchange
scroll top