मेरे पास एक साधारण स्क्रिप्ट है जो उपयोगकर्ता का आईपी पता निर्धारित करती है:
function GetIp(){
if (!empty($_SERVER['HTTP_CLIENT_IP']))
//check ip from share internet
{
$ip=$_SERVER['HTTP_CLIENT_IP'];
}
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
//to check ip is pass from proxy
{
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
$ip=$_SERVER['REMOTE_ADDR'];
}
return $ip;
}
अब नेट पर मैंने किसी को इस स्क्रिप्ट का उपयोग करके देखा:
if (isset($_SERVER['HTTP_CLIENT_IP']) && $_SERVER['HTTP_CLIENT_IP'] != '')
$Ip = $_SERVER['HTTP_CLIENT_IP'];
elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && $_SERVER['HTTP_X_FORWARDED_FOR'] != '')
$Ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
elseif (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] != '')
$Ip = $_SERVER['REMOTE_ADDR'];
मैं सोच रहा था कि मेरा कार्यान्वयन टूट गया है .. क्या करें मुझे यह जांचना होगा कि $_SERVER['HTTP_CLIENT_IP']
, $_SERVER['HTTP_X_FORWARDED_FOR']
, या $_SERVER['REMOTE_ADDR']
का मान खाली है या नहीं? या यह वास्तव में ऐसा करने के लिए अनावश्यक है?
इसका उद्देश्य क्या है? क्या यह किसी भी तरह से सुरक्षा के लिए प्रासंगिक है? बीकॉज़ अगर यह है, 'REMOTE_ADDR' केवल एक सार्थक है। –
निर्भर करता है। मुझे याद है कि कुछ होस्टिंग कंपनियां वहां मौजूद हैं जिनके पास उनके सर्वर के सामने प्रॉक्सी है और वे प्रॉक्सी * स्थानीय * आईपी में धक्का देते हैं जो 'REMOTE_ADDR' हमेशा '10.0.0.1' जैसा होता है ... तो यदि आप चाहते थे क्लाइंट आईपी प्राप्त करें जिसे आपको 'X_FORWARDED_FOR' – klaustopher