it-swarm.it

Scopri l'indirizzo IP dell'utente in base al suo UID?

Sto correndo Drupal 7 sito web con un gioco di carte multiplayer russo e devo bloccare alcuni giocatori molto fastidiosi ogni 4-5 giorni.

Prima Drupal stavo usando phpBB 3. Quando queste persone venivano da una piccola città/villaggio aggiungerei semplicemente la loro rete IP alle regole del firewall, in modo che non possano registrarsi con un nuovo indirizzo e-mail. Nel mio caso ha funzionato bene e la mia domanda non riguarda questa politica.

Il mio problema è che con Drupal non riesco a trovare l'ultimo indirizzo IP utilizzato da un ID utente. Cioè l'abusatore mi viene segnalato da altri utenti e conosco il suo uid, ma non riesco a trovare il suo indirizzo IP nei registri, perché:

  1. Ho abilitato la registrazione syslog e vedo i Drupal messaggi in/var/log/messagess ma raramente c'è un messaggio su un utente che accede, probabilmente perché le sessioni sono lunghe per impostazione predefinita, e io Vorrei mantenerlo così per il comfort dell'utente.

  2. Ho anche abilitato la "registrazione del database", ma non so dove vederlo (quale tabella del database).

8
Alexander Farber

Se hai abilitato il modulo statistico, la tabella "accesslog" contiene gli IP per tutti i tuoi visitatori.

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

Se non hai abilitato le statistiche, ti consiglio di lasciarlo fuori, anche per questo risultato, perché abilitarlo, causa una grave penalità di prestazione.

In tal caso, puoi utilizzare sessions table:

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

Il vantaggio del primo rispetto a quest'ultimo è che il primo ti mostrerà sempre l'ultimo nome host, mentre quest'ultimo potrebbe non essere sempre aggiornato.

9
berkes

Per quanto ne so, Drupal non riporta l'IP utilizzato dagli utenti nel loro profilo utente. Puoi creare un modulo personalizzato, verificare l'IP utilizzato dall'utente e registrarlo nel tuo propria tabella di database; quindi è possibile mostrarlo nel profilo utente, agli utenti che dispongono dell'autorizzazione giusta (ad esempio, agli utenti con l'autorizzazione ad amministrare gli utenti).

La funzione di cui hai bisogno è ip_address () , che puoi usare nella tua implementazione di hook_user_login () . Implementando hook_user_view () , puoi quindi mostrare tali informazioni agli utenti con la giusta autorizzazione.

5
kiamlaluno

Se si utilizza il modulo di registrazione del database, Drupal memorizza queste informazioni nella tabella watchdog, sotto la colonna hostname. È possibile scrivere query personalizzate per ottenere queste informazioni, oppure usa modulo Watchdog Views (attualmente solo una versione dev per 7.x, quindi non sono sicuro di come funzioni in Drupal 7) per esporre quella tabella a Views.

3
jhedstrom

Due moduli recenti possono aiutare in questo:

ser IP Log , che ha l'integrazione di Views, e IP Address Manager , che non ha l'integrazione di Views ma è destinato all'integrazione con Manifest, Cave Your Trolls e Misery-- tutti i moduli relativi al divieto.

1
Patrick Kenny