نحوه دریافت اطلاعات از IP کاربر

سلام، در این مقاله یاد می گیریم که چگونه داده های کاربر را از آدرس IP آن مانند (کشور کاربر، منطقه زمانی، شهر، نام منطقه، کد کشور، نام قاره، واحد پول و بیشتر).
توجه: قبل از شروع باید بدانید که چرا دادهها را از userIP دریافت میکنیم، تصور کنید که روی پروژهای کار میکنید و میخواهید سیستم ممنوعیتی ایجاد کنید که کاربر را مسدود کند یا میخواهید کشور و زبان کاربر را دریافت و ذخیره کنید تا محلیسازی مناسب برای آن نمایش داده شود. کاربر برای مثال اگر کاربری از ایالات متحده وجود دارد که وب سایت شما را باز کرده است، کشور و زبان او را دریافت می کنید تا زبان وب سایت شما انگلیسی و واحد پول USD باشد.
بنابراین این اطلاعات برای اینکه پروژه شما به درستی کار کند بسیار مهم است.
ما از یک Api بسیار ساده به نام استفاده خواهیم کرد پلاگین جغرافیایی که همه اطلاعات ذکر شده در بالا را در اختیار ما قرار می دهد.
شما به راحتی می توانید با این آدرس تماس بگیرید:
http://www.geoplugin.net/json.gp?ip= $userIP
جایگزین کردن $userIP با آی پی کاربر واقعی مانند 156.000.00.00
پاسخ باید مانند این عکس باشد:
اکنون می توانید به راحتی پاسخ را با فرمت JSON دریافت کرده و مستقیماً در پروژه خود از آن استفاده کنید. ولی اگر می خواهید پاسخ را سفارشی کنید مانند دریافت کلیدهای مشخص شده یا تغییر نام کلیدها، از این کتابخانه از Github استفاده خواهید کرد: github.com/kimoandroid/UserDataFromIp
من این کتابخانه را برای تشخیص خودکار IP کاربر با فراخوانی آدرس اینترنتی با این کد ایجاد کرده ام:
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
$this->userip = filter_var($_SERVER['HTTP_CLIENT_IP'], FILTER_VALIDATE_IP);
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$this->userip = filter_var($_SERVER['HTTP_X_FORWARDED_FOR'], FILTER_VALIDATE_IP);
} else if (!empty($_SERVER['REMOTE_ADDR'])) {
$this->userip = filter_var($_SERVER['REMOTE_ADDR'], FILTER_VALIDATE_IP);
} else { $this->userip = NULL; }
این کد ممکن است آدرس IP اشتباه داشته باشد یا ممکن است IP کاربر نادرست باشد، اما اگر نتوانید IP را از دستگاه کاربر دریافت کنید، می توانید از آن استفاده کنید. یا شما می توانید این کد را از فایل های کتابخانه حذف کنید و ip کاربر را از پاسخ GET دریافت کنید، این به شما بستگی دارد.
اکنون این کتابخانه را سفارشی کرده ام تا پنج کلید را فقط از api دریافت کنم و پاسخ سفارشی شده را در قالب JSON خودم نمایش دهم.
همانطور که در اینجا می بینید get_data.php فایل آن یک OOP ساده با دریافت کننده و تنظیم کننده است تا بتوانید آنها را به راحتی ویرایش کنید:
در نهایت در index.php فایلی که من با این کد کلاس را صدا کردم تا اطلاعات کاربر را از api دریافت کنم:
// call get_data class
require "get_data.php";
$getData = new get_data();
// print user data in a simple json format.
echo '{"ip": "'.$getData->get_ip().'", "country": "'.$getData->get_country().'", "timezone": "'.$getData->get_timezone().'", "continent": "'.$getData->get_continent().'", "currency": "'.$getData->get_currency().'"}';
شما می توانید پاسخ را در آرایه JSON پیشرفته سفارشی کنید، اما من از json ساده فقط برای شفاف سازی استفاده کردم.
این همه برای امروز است، از خواندن و دنبال کردن برای اطلاعات بیشتر سپاسگزاریم 🙂