2011-06-25 4 views
5

कि php संभालने cgi/mod_php/आदि के माध्यम से वेब मोड में चल रहा है ...

इसे सुरक्षित माना कि $ _SERVER [ 'REMOTE_ADDR'] उपलब्ध नहीं होगा, और आगे और अधिक, कि यह एक सही ढंग से शैली में शामिल होंगे है (क्षमा करें, शब्दावली यहां बंद हो सकती है ...) आईपी (1.1.1.1 -> 255.255.255.255?)?

यह $ _SERVER ['REMOTE_ADDR'] के अंदर निहित आईपी मौसम के बारे में कोई सवाल नहीं है, क्लाइंट का अनुरोध करने का एक वास्तविक आईपी होगा, क्योंकि मुझे लगता है कि यह आउटबाउंड टीसीपी को संशोधित करके 'स्पूफेड' किया जा सकता है पैकेट ...

बस:

क) _SERVER '[' REMOTE_ADDR '] $ जाएगा हमेशा मौजूद है, तो php वेब मोड में भाग गया है। बी) यदि $ _SERVER ['REMOTE_ADDR'] हमेशा मौजूद रहता है, तो क्या इसमें हमेशा एक उचित सिंटैक्ड आईपी होगा?

धन्यवाद।

+0

अच्छा सवाल - मुझे लगता है कि उत्तर दोनों गिनती पर "हां" है, लेकिन मुझे पूरी तरह से [आईपीवी 6] (http://en.wikipedia.org/wiki/IPV6) के बारे में पूरी तरह से यकीन नहीं है। जिज्ञासा से, आपको जानने की आवश्यकता क्यों है? यदि आप सही ढंग से स्वरूपित आईपी नहीं थे तो किस बिंदु पर आपको परेशानी होगी? –

+0

बस कोड पर जा रहा है जो वर्षों से चल रहा है (चल रहा है, अच्छी तरह से), लेकिन इस जानकारी को जारीकर्ता ($ _ सर्वर ....) +^([1-9] | [1-9] [0-9] | 1 [0-9] [0-9] | 2 [0-4] [0-9] | 25 [0-5]) (\ ([0-9] |। [1- 9] [0-9] | 1 [0-9] [0-9] | 2 [0-4] [0-9] | 25 [0-5])) {3}^ ऐसा प्रतीत होता है पूरी तरह अनावश्यक –

+0

जहां तक ​​ipv6 अनुपालन ... ipv6 इस कोड को चलाने वाले बॉक्स पर अक्षम है, तो ठीक है (उस समय के लिए) उस मोर्चे पर ... धन्यवाद! –

उत्तर

6

हां, यह हमेशा वेब मोड में मौजूद होता है, और चूंकि आईपी पता आपके द्विआधारी प्रतिनिधित्व से आपके द्वारा देखे जाने वाले पाठ प्रारूप में परिवर्तित हो जाता है, यह हमेशा वैध है – में एक अवैध आईपी निर्दिष्ट करने का कोई तरीका नहीं है आईपी ​​हेडर

एक और बात: किसी विशेष प्रारूप को तब तक न मानें जब तक आपको बिल्कुल आईपी पते से निपटना न पड़े। उदाहरण के लिए, आईपीवी 6 पते लंबे होते हैं और इसमें अलग-अलग अक्षर होते हैं। असल में, एक अपारदर्शी स्ट्रिंग के रूप में आईपी पते से निपटें।

+0

कृपया आपको धन्यवाद! –

+0

मुझे पता है कि यह एक वर्ष से अधिक पुराना है। लेकिन, मैं एक सर्वर चलाता हूं जो डेटाबेस में प्रत्येक विज़िट के बारे में जानकारी संग्रहीत करने के लिए ip2long का उपयोग करता है। मेरा कोड '$ ip = ip2long ($ _ सर्वर ['REMOTE_ADDR'] है), और मुझे $ 1 के बराबर $ आईपी मिला है। ऐसा क्यों होगा? – Kayla

+0

मेरी आखिरी टिप्पणी को नकारें। मेरा डेटाबेस नकारात्मक संख्या स्वीकार नहीं कर रहा था। ** सावधान रहें, ip2long नकारात्मक लौटा सकता है। ** – Kayla