بسم الله الرحمن الرحيم
لمشاهدة الروابط يلزمك التسجيل
يمكن أن يكون الحصول على عنوان IP الخاص بالزائر مهمًا للعديد من الأسباب ، على سبيل المثال ، التسجيل والاستهداف الجغرافي وإعادة توجيه المستخدم وما إلى ذلك. يمكن العثور على كافة معلومات IP ذات الصلة في المصفوفة "$ _SERVER". إن أبسط طريقة للحصول على عنوان IP للزائرين هي ببساطة الشفرة التالية ، من خلال قراءة حقل "REMOTE_ADDR":
CODE
$ip = $_SERVER['REMOTE_ADDR'];
ومع ذلك ، فإن هذا الحل ليس دقيقًا تمامًا ، كما لو كان المستخدم يجلس خلف وكيل ، فستحصل على عنوان IP للخادم الوكيل وليس عنوان المستخدم الحقيقي. لحسن الحظ ، يمكننا إجراء بعض التحسينات الإضافية للحصول على نتائج أكثر دقة. تعمل الخوادم الوكيلة على توسيع رأس HTTP بخاصية جديدة تخزن عنوان IP الأصلي. اسم هذا الحقل هو "X-Forwarded-For" أو "Client-Ip". إذا كان أحد هذه الحقول موجودًا في رأس HTTP ، فيمكنك قراءة قيمها من المصفوفة "$ _SERVER" كما في المثال الأول. لذلك عليك التحقق من جميع الاحتمالات الثلاثة:
CODE
echo "Remote addr: " . $_SERVER['REMOTE_ADDR']."<br/>";
echo "X Forward: " . $_SERVER['HTTP_X_FORWARDED_FOR']."<br/>";
echo "Clien IP: " . $_SERVER['HTTP_CLIENT_IP']."<br/>";
أصبح استخدام هذه المعلومات الآن أمرًا سهلاً للغاية لإنشاء وظيفة بسيطة تعرض عنوان IP الحقيقي المحتمل لزائر الموقع:
CODE
function getIp() {
$ip = $_SERVER['REMOTE_ADDR'];
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
return $ip;
}
ملاحظة: لماذا كتبت ، "ربما تكون حقيقية"؟ لأن قيم X- "Forwarded-For" و "Client-Ip" غير موثوقة. من السهل جدًا التلاعب بهذه القيم. على سبيل المثال ، قم ببساطة بتثبيت مكون إضافي لمتصفح Firefox لتغيير معلومات العنوان. لهذا السبب ، لا تستخدم عنوان IP هذا وحده لأغراض أمنية.