كيفية معرفة عنوان IP الخاص بالعميل

جدول المحتويات:

كيفية معرفة عنوان IP الخاص بالعميل
كيفية معرفة عنوان IP الخاص بالعميل

فيديو: كيفية معرفة عنوان IP الخاص بالعميل

فيديو: كيفية معرفة عنوان IP الخاص بالعميل
فيديو: معرفة عنوان Ip وال mac الخاص بك في اقل من دقيقة windows 10 👍👍 2024, شهر نوفمبر
Anonim

من خلال عنوان IP الخاص بزائر موقعك ، يمكنك معرفة الكثير عنه - البلد والمدينة والاسم وعنوان البريد الإلكتروني لمزود الإنترنت ، إلخ. لكن القيمة الرئيسية هي أن IP يمكن أن يكون بمثابة معرف زائر للنصوص البرمجية من جانب الخادم. فيما يلي وصف لكيفية تحديد عنوان IP باستخدام PHP.

كيفية معرفة عنوان IP الخاص بالعميل
كيفية معرفة عنوان IP الخاص بالعميل

انه ضروري

المعرفة الأساسية بلغة PHP

تعليمات

الخطوة 1

لاستخراج عنوان IP من الرؤوس المرسلة إلى خادم طلب المتصفح ، استخدم وظيفة getenv. يقرأ القيم المحددة لها من متغيرات البيئة. يتم استخدام متغير يسمى REMOTE_ADDR لتخزين عنوان IP الخاص بالزائر. ومع ذلك ، يمكن للعميل استخدام خادم وكيل ، وفي هذه الحالة سيحتوي المتغير على عنوانه ، وليس العنوان الذي تريده. يمكنك معرفة أن متصفح الويب يستخدم عنوان IP متوسطًا من خلال النظر إلى متغير البيئة المسمى HTTP_VIA. يتم وضع جميع عناوين الخوادم الوكيلة المشاركة في السلسلة ، مفصولة بفواصل. يجب أن تضع الخوادم الوسيطة عنوان الزائر في متغير يسمى HTTP_X_FORWARDED_FOR ، لكن هذا يعتمد كليًا على إعدادات الوكيل. هذا يعني أنه من أجل تغطية أكبر عدد ممكن من الاحتمالات لتحديد عنوان IP ، تحتاج إلى التحقق من محتويات ثلاثة متغيرات على الأقل: REMOTE_ADDR ، و HTTP_X_FORWARDED_FOR ، ويفضل

الخطوة 2

يمكنك دمج فحص جميع المتغيرات الثلاثة في سطر واحد من كود PHP ، على سبيل المثال ، مثل هذا:

$ ipAddr = getenv ('HTTP_CLIENT_IP') أو $ ipAddr = getenv ('HTTP_X_FORWARDED_FOR') أو $ ipAddr = getenv ('REMOTE_ADDR') ؛

بعد الحصول على قيمة عنوان IP بهذه الطريقة ، يُنصح بمحوه من التشوهات المحتملة والأحرف غير الضرورية. يمكنك استخدام تعبير عادي لهذا:

$ ipAddr = trim (preg_replace ('# ^ ([^،] +) (. *)؟ #'، '$ 1'، $ ipAddr))؛

الخطوه 3

يبقى دمج كلا سطري الكود في وظيفة واحدة:

وظيفة getIP () {

$ ipAddr = getenv ('HTTP_CLIENT_IP') أو $ ipAddr = getenv ('HTTP_X_FORWARDED_FOR') أو $ ipAddr = getenv ('REMOTE_ADDR') ؛

إرجاع القطع (preg_replace ('# ^ ([^،] +) (،. *)؟ #'، '$ 1'، $ ipAddr))؛

}

موصى به: