با آدرس IP یک بازدید کننده از سایت خود ، می توانید اطلاعات زیادی در مورد او پیدا کنید - کشور ، شهر ، نام و آدرس ایمیل ارائه دهنده اینترنت و غیره. اما ارزش اصلی این است که IP می تواند به عنوان شناسه بازدید کننده برای اسکریپت های سمت سرور باشد. در زیر نحوه تعیین آدرس IP با استفاده از PHP شرح داده شده است.
لازم است
دانش پایه PHP
دستورالعمل ها
مرحله 1
برای استخراج آدرس IP از سرصفحه های ارسال شده به سرور درخواست مرورگر ، از تابع getenv استفاده کنید. مقادیر مشخص شده برای آن را از متغیرهای محیط می خواند. از متغیری به نام REMOTE_ADDR برای ذخیره آدرس IP بازدید کننده استفاده می شود. با این حال ، مشتری می تواند از سرور پروکسی استفاده کند ، در این صورت متغیر حاوی آدرس خود خواهد بود ، و نه آدرس مورد نظر شما. با مشاهده متغیر محیطی به نام HTTP_VIA می توانید دریابید که وبگرد از یک IP متوسط استفاده می کند. تمام آدرس های سرورهای پروکسی درگیر در زنجیره در آن قرار می گیرند ، با کاما از هم جدا می شوند. سرورهای متوسط باید آدرس بازدید کننده را در متغیری به نام 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 = اصلاح (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))؛
}