اغلب اوقات ، از آدرس IP بازدید کننده سایت برای شناسایی وی استفاده می شود. اما علاوه بر این ، با استفاده از IP ، می توانید اطلاعات اضافی زیادی در مورد بازدید کننده بدست آورید - به عنوان مثال ، از ارائه دهنده اینترنت و موقعیت جغرافیایی وی مطلع شوید. در عمل ، اغلب اسکریپت های PHP سمت سرور برای استخراج آدرس های IP از عناوین درخواست ارسال شده توسط مرورگر استفاده می شوند.
لازم است
دانش پایه PHP
دستورالعمل ها
مرحله 1
برای خواندن آدرس های IP از آرایه متغیر محیط superglobal از تابع getenv داخلی PHP استفاده کنید. در ساده ترین حالت ، خواندن متغیر با نام REMOTE_ADDR کافی خواهد بود. قطعه مربوط به کد PHP ممکن است به این شکل باشد: $ userIP = getenv ('REMOTE_ADDR')؛
گام 2
علاوه بر متغیر REMOTE_ADDR که در درخواست ارسال شده است ، متغیرهای HTTP_VIA و HTTP_X_FORWARDED_FOR را بررسی کنید. اگر بازدید کننده از یک سرور پراکسی استفاده می کند ، پس آدرس میانی باید در هر دو متغیر ثبت شود - هم در HTTP_VIA و هم در REMOTE_ADDR. در این حالت ، می توانید از طریق HTTP_X_FORWARDED_FOR به IP واقعی بازدید کننده پی ببرید - سرور پروکسی باید آدرس اصلی را در آن قرار دهد. با این حال ، این همیشه انجام نمی شود و کاربر این فرصت را دارد که یک سرور پروکسی "مات" انتخاب کند که IP اصلی بازدید کننده ای را که درخواست ارسال کرده است ، منتقل نمی کند. در هر صورت ، باید با افزودن یک چک برای متغیر HTTP_CLIENT_IP ، از بیشترین روشها برای دریافت آدرس IP اصلی در کد خود استفاده کنید.
مرحله 3
در یک خط از کد PHP یک بررسی متوالی از سه متغیر محیط را بهم پیوند دهید ، که ممکن است حاوی آدرس IP اصلی بازدید کننده باشد. این کار را می توان انجام داد ، به عنوان مثال ، مانند این: $ userIP = getenv ('HTTP_CLIENT_IP') یا $ userIP = getenv ('HTTP_X_FORWARDED_FOR') یا $ userIP = getenv ('REMOTE_ADDR')؛
مرحله 4
نویسه های اضافی و "زباله" های دیگر را از مقدار IP حاصل که ممکن است وارد متغیرهای محیط شود ، حذف کنید. برای مثال ، با استفاده از توابع PHP داخلی TRIM و preg_replace می توان این کار را انجام داد: $ userIP = TRIM (preg_replace ('# ^ ([^،] +) (،. *)؟ #'، '$ 1'، $ userIP)) ؛
مرحله 5
همه کدها را در یک عملکرد سفارشی ترکیب کنید تا بتوانید به جای تکرار خطوط بررسی و پاکسازی بارها و بارها در قسمت های مختلف اسکریپت های PHP ، به آن مراجعه کنید. به عنوان مثال ، مانند این: FUNCTION getUserIP () {
$ userIP = getenv ('HTTP_CLIENT_IP') یا $ userIP = getenv ('HTTP_X_FORWARDED_FOR') یا $ userIP = getenv ('REMOTE_ADDR')؛
RITURN TRIM (preg_replace ('# ^ ([^،] +) (،. *)؟ #'، '$ 1'، $ userIP))؛
}