Symfony में पहले ही की मास्टर अनुरोध नियंत्रक के अंदर 2.3$this->container->get('request')->getClientIp()
काम करता है के रूप में। उप-अनुरोध नियंत्रक में यह हमेशा 127.0.0.1
देता है। यदि आपकी प्रोजेक्ट सिम्फनी 2.2 के साथ उप-अनुरोधों का उपयोग करती है, तो बुलेट प्रूफ समाधान kernel.request
श्रोता बनाने और आईपी को मास्टर अनुरोध से सहेजना है।
Symfony में 2.3 इस तय किया गया था आंतरिक उप अनुरोध असली आईपी प्रॉक्सी की सूची में धकेल दिया जाता है के लिए हां, तो https://github.com/symfony/symfony/commit/2f3b33a630727cbc9cf21262817240a72a8dae0c देख तो तुम में अनुरोध से ग्राहक आईपी पाने के लिए trusted_proxies
विन्यास पैरामीटर के लिए 127.0.0.1
जोड़ने की जरूरत सिम्फनी 2.3+ में उप-अनुरोध, लेकिन आपको सुरक्षा कारणों से साझा होस्टिंग पर ऐसा नहीं करना चाहिए।
इसके अलावा, 127.0.0.1
स्पष्ट रूप से अगर निर्मित HTTP कैश (web/app.php
में AppCache
) Symfony 2.3.20 से पहले इस्तेमाल किया गया था trusted_proxies
को जोड़ा जाना था। यह कैश वास्तविक रिवर्स-प्रॉक्सी की तरह दिखने की कोशिश करता है और मास्टर अनुरोध के कुछ शीर्षकों को संशोधित करता है। वर्तमान अनुरोध तक पहुँचने के लिए request_stack
सेवा का उपयोग कर या तो है https://github.com/symfony/symfony/commit/902efb8a84e8f0acf6a63e09afa08e3dcdd80fb9
में फिक्स्ड Symfony 2.4 के बाद से और 3.x पसंदीदा तरीका में
$this->container->get('request_stack')->getCurrentRequest()->getClientIp();
या नियंत्रक में अनुरोध इंजेक्शन लगाने, देख http://symfony.com/doc/current/book/controller.html#the-request-as-a-controller-argument
public function indexAction(Request $request)
{
$ip = $request->getClientIp();
}
लेकिन उप-अनुरोधों में उपयोग किए जाने पर 127.0.0.1 को छोड़ने की चिंता अभी भी लागू होती है, बी ut अब आप Symfony 2.6+ निम्नलिखित कोड (अपने नियंत्रक के भीतर उपयोग के लिए स्पष्ट रूप से
$this->container->get('request_stack')->getMasterRequest()->getClientIp();
स्रोत
2013-06-03 11:39:09
त्वरित प्रतिक्रिया के लिए धन्यवाद।क्या मुझे पता है कि $ कंटेनर क्या है। – VishwaKumar
ठीक है यह इस द्वारा काम कर रहा है: $ आईपी = $ यह-> कंटेनर-> प्राप्त करें ('अनुरोध') -> getClientIp(); – VishwaKumar