أرشيف انكور
موضوع بعنوان :احصل على عنوان IP للزوار باستخدام PHP
الكاتب :Admin


بسم الله الرحمن الرحيم

احصل على عنوان IP للزوار باستخدام PHP
يمكن أن يكون الحصول على عنوان IP الخاص بالزائر مهمًا للعديد من الأسباب ، على سبيل المثال ، التسجيل والاستهداف الجغرافي وإعادة توجيه المستخدم وما إلى ذلك. يمكن العثور على كافة معلومات IP ذات الصلة في المصفوفة "$ _SERVER". إن أبسط طريقة للحصول على عنوان IP للزائرين هي ببساطة الشفرة التالية ، من خلال قراءة حقل "REMOTE_ADDR":

$ip = $_SERVER['REMOTE_ADDR'];

ومع ذلك ، فإن هذا الحل ليس دقيقًا تمامًا ، كما لو كان المستخدم يجلس خلف وكيل ، فستحصل على عنوان IP للخادم الوكيل وليس عنوان المستخدم الحقيقي. لحسن الحظ ، يمكننا إجراء بعض التحسينات الإضافية للحصول على نتائج أكثر دقة. تعمل الخوادم الوكيلة على توسيع رأس HTTP بخاصية جديدة تخزن عنوان IP الأصلي. اسم هذا الحقل هو "X-Forwarded-For" أو "Client-Ip". إذا كان أحد هذه الحقول موجودًا في رأس HTTP ، فيمكنك قراءة قيمها من المصفوفة "$ _SERVER" كما في المثال الأول. لذلك عليك التحقق من جميع الاحتمالات الثلاثة:
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 الحقيقي المحتمل لزائر الموقع:
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 هذا وحده لأغراض أمنية.