Domanda

Io corro Drupal sito web 7 con un gioco di carte multiplayer russo e hanno per bloccare alcuni giocatori molto fastidioso ogni 4-5 giorni.

Prima di Drupal usavo phpBB 3. Quando queste persone sarebbe venuto da una piccola città / villaggio Avevo solo aggiungere il loro IP-rete per le regole del firewall, in modo che essi non possono ri-registrarsi con un nuovo indirizzo di posta elettronica . Questo ben funzionato nel mio caso e la mia domanda non è su questa politica.

Il mio problema è che con Drupal, non riesco a trovare l'ultimo indirizzo IP utilizzato da un utente id. Cioè l'aggressore è segnalato per me da parte di altri utenti e io so il suo UID, ma non riesco a trovare il suo indirizzo IP nei log, perché:

  1. Io ho abilitato syslog-registrazione e vedere i messaggi di Drupal in / var / log / messagess ma raramente v'è un messaggio su un utente che accede a, probabilmente perché le sessioni sono lunghi per impostazione predefinita, e mi piacerebbe per mantenere in questo modo per il comfort dell'utente.

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

È stato utile?

Soluzione

Se si dispone di statistiche modulo abilitati, la tabella "AccessLog" contiene gli indirizzi IP di tutti i visitatori.

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

Se non si dispone di statistiche abilitati, vi consiglio di lasciarlo fuori, anche per questo risultato, perché le consente, provoca una grave prestazioni-penalità.

In questo caso, è possibile utilizzare tabella di sessions:

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

Il vantaggio del primo sul secondo, è che il primo sarà sempre si mostrano l'ultimo nome host, mentre il secondo potrebbe non essere sempre aggiornati.

Altri suggerimenti

Per quanto ne so, Drupal non riporta l'IP utilizzato dagli utenti nel proprio profilo utente. Si potrebbe creare un modulo personalizzato, verificare l'IP utilizzato dall'utente, e registrarlo nel proprio tabella del database; allora si potrebbe mostrarlo nel profilo utente, agli utenti che ha il permesso a destra (ad esempio, per gli utenti con il permesso agli utenti Amministrare).

La funzione che vi serve è ip_address () , che è possibile utilizzare nell'implementazione di hook_user_login () . Implementazione hook_user_view () , si possono poi mostrare tali informazioni agli utenti con il permesso destra.

Se si utilizza il modulo di registrazione del database, Drupal memorizza queste informazioni nella tabella di cane da guardia, sotto la colonna hostname. È possibile sia query di scrittura personalizzati per arrivare a queste informazioni, o utilizzare il Visto Watchdog modulo (attualmente solo un dev rilasci 7.x, quindi non sono sicuro di come funziona in Drupal 7) per esporre quel tavolo a Vista.

Due moduli recenti possono aiutare con questo:

l'utente di IP Log , che ha una vista di integrazione, e IP Address manager , che non hanno la vista l'integrazione, ma è destinato ad integrarsi con Manifest, Cave Troll vostri, e Misery-- tutti divieto relativi moduli.

session_id () ti dà corrente user session-id se lui / lei è un ospite o un membro.

$result = db_query("SELECT hostname FROM sessions WHERE sid = '".session_id()."'");
$data = db_fetch_object($result );
echo $data->hostname;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a drupal.stackexchange
scroll top