उपयोगकर्ता का आईपी पता उनके यूआईडी को दिया गया है?


8

मैं रूसी मल्टीप्लेयर कार्ड गेम के साथ ड्रुपल 7 वेब साइट चला रहा हूं और हर 4-5 दिनों में कुछ बहुत कष्टप्रद खिलाड़ियों को ब्लॉक करना पड़ता है।

Drupal से पहले मैं phpBB 3 का उपयोग कर रहा था। जब ये व्यक्ति एक छोटे शहर / गाँव से आएंगे तो मैं उनके आईपी-नेटवर्क को फ़ायरवॉल नियमों में जोड़ दूँगा, ताकि वे नए मेल पते के साथ फिर से पंजीकरण न कर सकें। इसने मेरे मामले में अच्छा काम किया और मेरा सवाल इस नीति के बारे में नहीं है।

मेरी समस्या यह है कि Drupal के साथ, मुझे उपयोगकर्ता आईडी द्वारा उपयोग किया गया अंतिम IP पता नहीं मिल सकता है। यानी एब्यूसर मुझे अन्य उपयोगकर्ताओं द्वारा सूचित किया गया है और मैं उसका यूआईडी जानता हूं, लेकिन मैं लॉग में उसका आईपी पता नहीं ढूंढ सकता, क्योंकि:

  1. मैंने syslog-logging सक्षम किया है और Drupal संदेशों को / var / log / messagess में देखता है, लेकिन उपयोगकर्ता के लॉग इन करने के बारे में शायद ही कोई संदेश है, शायद इसलिए कि सत्र डिफ़ॉल्ट रूप से लंबे होते हैं, और मैं इसे इस तरह रखना चाहता हूं उपयोगकर्ता आराम।

  2. मैंने "डेटाबेस लॉगिंग" को भी सक्षम किया है, लेकिन यह नहीं पता है कि इसे कहां देखना है (कौन सी डेटाबेस तालिका)।

जवाबों:


9

यदि आपके पास आँकड़े मॉड्यूल सक्षम हैं, तो "एक्सेसलॉग" तालिका में आपके सभी आगंतुकों के लिए आईपी शामिल हैं।

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

यदि आपके पास आंकड़े सक्षम नहीं हैं, तो मैं आपको सलाह देता हूं कि आप इसे छोड़ दें, यहां तक ​​कि इस परिणाम के लिए भी, क्योंकि इसे सक्षम करने से गंभीर प्रदर्शन-दंड का कारण बनता है।

उस स्थिति में, आप sessionsतालिका का उपयोग कर सकते हैं :

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

बाद के पहले ओवर का लाभ यह है कि पहला आपको हमेशा नवीनतम होस्टनाम दिखाएगा, जबकि बाद वाला हमेशा अद्यतित नहीं हो सकता है।


सच है, सत्र तालिका में IP पते भी हैं। मैं अभी भी वहाँ कुछ उपयोगकर्ताओं को नहीं मिल सकता है। शायद यह मेरी गलती है। मैं आपके उत्तर को स्वीकार करूंगा और syslog और डेटाबेस सांख्यिकी मॉड्यूल को अक्षम कर दूंगा, क्योंकि वे मेरे लिए बहुत काम के नहीं थे।
अलेक्जेंडर फारबर

जिन उपयोगकर्ताओं को थोड़ी देर के लिए लॉग इन नहीं किया गया था, उनके पास सत्र नहीं है, और नहीं मिलेगा। जैसा कि मैंने कहा "उत्तरार्द्ध हमेशा अद्यतित नहीं होगा", जिसका अर्थ है: इसमें सभी उपयोगकर्ता नहीं हो सकते हैं।
Berkes

5

जहाँ तक मुझे पता है, Drupal अपने उपयोगकर्ता प्रोफ़ाइल में उपयोगकर्ताओं द्वारा उपयोग किए जाने वाले IP की रिपोर्ट नहीं करता है। आप एक कस्टम मॉड्यूल बना सकते हैं, उपयोगकर्ता द्वारा उपयोग किए गए आईपी को सत्यापित कर सकते हैं, और इसे अपने स्वयं के डेटाबेस तालिका में रिकॉर्ड कर सकते हैं; फिर आप इसे उपयोगकर्ता प्रोफ़ाइल में, उन उपयोगकर्ताओं को दिखा सकते हैं, जिनके पास सही अनुमति है (उदाहरण के लिए, उपयोगकर्ताओं को प्रबंधित करने की अनुमति वाले उपयोगकर्ताओं के लिए)।

आपको जिस फ़ंक्शन की आवश्यकता है वह ip_address () है , जिसे आप अपने हुक के कार्यान्वयन में उपयोग कर सकते हैं__erer_login ()हुक_यूज़र_व्यू () लागू करने के बाद, आप उपयोगकर्ताओं को सही अनुमति के साथ ऐसी जानकारी दिखा सकते हैं।


धन्यवाद, लेकिन फिर मेरे पास अब भी यही समस्या होगी: उपयोगकर्ता शायद ही कभी लॉगिन करते हैं, जैसा कि मैं syslog में देख सकता हूं। और हुक_सुअर_लगिन () केवल तभी कहा जाता है जब उपयोगकर्ता प्रवेश करता है (अपना पासवर्ड दर्ज करता है)।
अलेक्जेंडर फारबर

आप उन्हें लॉग इन करने के लिए मजबूर कर सकते हैं; यदि आप सत्र तालिका खाली करते हैं, तो उपयोगकर्ताओं को फिर से लॉग इन करना चाहिए।
kiamlaluno

3

यदि आप डेटाबेस लॉगिंग मॉड्यूल का उपयोग कर रहे हैं, तो Drupal hostnameस्तंभ के नीचे वॉचडॉग तालिका में इस जानकारी को संग्रहीत करता है। आप या तो इस जानकारी को प्राप्त करने के लिए कस्टम क्वेरी लिख सकते हैं, या व्यू वॉचडॉग मॉड्यूल का उपयोग कर सकते हैं (वर्तमान में केवल 7.x के लिए एक देव रिलीज़, इसलिए मुझे यकीन नहीं है कि ड्रुप 7 में यह कितनी अच्छी तरह से काम करता है) उस तालिका को एक्सपोज़ करने के लिए।


नहीं, वॉचडॉग टेबल दुर्भाग्य से syslog कोर मॉड्यूल के रूप में एक ही समस्या है: कुछ उपयोगकर्ताओं के लिए मेरे पास आईपी पता नहीं है, क्योंकि वे बहुत समय पहले लॉग इन थे। इसलिए मुझे कुछ दुर्भावनापूर्ण उपयोगकर्ता के बारे में एक रिपोर्ट मिलती है, उसे अपने फ़ायरवॉल ड्रॉप-नियमों में जोड़ने के लिए उसका आईपी खोजने की कोशिश करें, लेकिन मैं उसका आईपी कहीं भी नहीं ढूंढ सकता।
अलेक्जेंडर फरबर

वॉचडॉग के लिए डिफ़ॉल्ट सेटिंग दुर्भाग्य से, केवल 1000 संदेशों को बनाए रखने के लिए है। एक सक्रिय साइट पर, यह केवल एक घंटे या उससे कम समय तक हो सकता है। अपनी साइट के आधार पर, आप उस नंबर को (व्यवस्थापन / विन्यास / विकास / लॉगिंग) को टक्कर देना चाहते हैं, या वैकल्पिक रूप से kiamlaluno द्वारा वर्णित कस्टम IP संग्रहण समाधान बना सकते हैं।
jhedstrom

1

दो हालिया मॉड्यूल इसकी मदद कर सकते हैं:

उपयोगकर्ता आईपी लॉग , जिसमें व्यू इंटीग्रेशन है, और आईपी ​​एड्रेस मैनेजर , जिसमें व्यू इंटीग्रेशन नहीं है, लेकिन इसका उद्देश्य मैनिफेस्ट, गुफा योर ट्रॉल्स और मिसरी-- सभी संबंधित मॉड्यूल पर प्रतिबंध लगाना है।


-1

session_id () आपको वर्तमान उपयोगकर्ता सत्र-आईडी देता है, चाहे वह अतिथि या सदस्य हो।

$result = db_query("SELECT hostname FROM sessions WHERE sid = '".session_id()."'");
$data = db_fetch_object($result );
echo $data->hostname;
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.