در این آموزش قصد داریم به شما نحوه دریافت موقعیت مکانی با IP در PHP یا همان آدرس یا مکان جغرافیایی (Geolocation) کاربر را نشان بدیم.
برای بدست آوردن موقعیت جغرافیایی ما از یک API خارجی استفاده می کنیم.
این API به توسعه دهنده ها اجازه می دهد که اطلاعات مکانی کاربر را با استفاده از آدرس IP بدست آورده و بتواند بازدیدکنندگان را از طریق اپلیکیشن وب بر اساس موقعیت دسته بندی کند.
این API برای زمانی که قصد مکان یابی بازدیدکنندگان وبسایت و ارایه خدمات بر اساس مکان آنها را دارید بسیار مفید خواهد بود.
مثلا در سیستم چت آنلاین یا سیستم ارسال مرسوله یا خدمات دهی مثل پرداخت بر اساس شهر و کشورهای مختلف و خیلی موارد دریگر بسیار کاربردی است.
API های مکان یابی جغرافیایی زیادی برای استفاده و دریافت موقعیت مکانی با IP در PHP وجود داردند که بر اساس IP کار می کنند.
و اینجا ما از ipstack که یکی از بهترین آنها است و پلن رایگان آن ۲هزار درخواست یکتا را در اختیار ما قرار می دهد استفاده می کنیم.
Ipstack خروجی را در فرمت های jSON یا XML برگشت می دهد و می توانید از این API در زبان های برنامه نویسی مختلف مثل PHP یا جاواسکریپت و غیره برای دریافت موقعیت مکانی استفاده کنید.
بنابراین با ادامه آموزش دریافت موقعیت مکانی با IP در PHP با ما همراه باشید تا نحوه پیاده سازی این API در اسکریپت PHP را در قدم های ساده خدمت شما آموزش بدیم.
دریافت کلید API
به منظور احراز هویت ipstack API یک کلید دسترسی یکتا نیاز دارید. برای همین قبل از شروع کلید API خود را بسازید.
- یک اکانت در سایت ipstack ایجاد کنید
- در داشبورد, می توانید کلید API را از Yor API Access Key دریافت کنید.
پیکربندی API
به منظور دریافت موقعیت مکانی با IP در PHP از API سایت ipstack نیاز است که آدرس آیپی و کلید خود را در کد مشخص کنید.
برای دریافت آیپی کاربر آموزش دریافت IP کاربر در PHP را مطالعه بفرمایید.
- اضافه کردن آدرس آیپی به Url اصلی
- مشخص کردن کلید دسترسی در پارامتر
access_key
1 2 3 4 5 6 |
// Set IP address and API access key $ip = '46.12.125.220'; $access_key = 'YOUR_ACCESS_KEY'; // API URL $apiURL = 'http://api.ipstack.com/'.$ip.'?access_key='.$access_key; |
ایجاد درخواست HTTP GET
برای دریافت اطلاعات مکانی, نیاز است که API را با ارسال درخواست HTTP GET توسط cURL در PHP فراخوانی کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// API URL $apiURL = 'http://api.ipstack.com/'.$ip.'?access_key='.$access_key; // Initialize cURL $ch = curl_init(); // Set URL and other appropriate options curl_setopt($ch, CURLOPT_URL, $apiURL); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Execute and get response from API $json_resp = curl_exec($ch); // Close cURL curl_close($ch); |
مطمین شوید آدرس API مشخص شده با https
مشخص شده باشد :
1 |
https://api.ipstack.com |
اطلاعات مکانی و جغرافیایی
بعد از یک درخواست API موفقیت آمیز, اطلاعات مکانی در قالب XML یا jSON برگشت داده می شود.
بطور پیش فرض این وب سرویس, داده های مکانی زیر را برگشت می دهد :
- آدرس آیپی (
ip
) - نوع (
type
) - کد قاره (
continent_code
) - نام قاره (
continent_name
) - نام کشور (
country_code
) - نام کشور (
country_name
) - کد منطقه (
region_code
) - نام منطقه (
region_name
) - شهر (
city
) - کدپستی (
zip
) - عرض جغرافیایی (
latitude
) - طول جغرافیایی (
longitude
) - مکان (
location
) :geoname_id
capital
languages
country_flag
country_flag_emoji
country_flag_emoji_unicode
calling_code
is_eu
با استفاده از تابع json_decode()
می توانید خروجی jSON را به یک آرایه در PHP تبدیل کنید.
1 2 |
// Convert API json response to array $api_result = json_decode($json_resp, true); |
کد کامل دریافت موقعیت مکانی با IP در PHP
کد php زیر بطور کامل اطلاعات موقعیت جغرافیایی را از طریق IP در PHP را نشان می دهد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
<?php // Set IP address and API access key $ip = '46.12.125.220'; $access_key = 'YOUR_ACCESS_KEY'; // API URL $apiURL = 'http://api.ipstack.com/'.$ip.'?access_key='.$access_key; // Initialize cURL $ch = curl_init(); // Set URL and other appropriate options curl_setopt($ch, CURLOPT_URL, $apiURL); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Execute and get response from API $json_resp = curl_exec($ch); // Close cURL curl_close($ch); // Geolocation data $api_result = json_decode($json_resp, true); ?> |
جمع بندی
API سایت ipstack برای استفاده تا حدودی رایگان است (برای ۲هزار درخواست ماهانه) , همچنین پلن های پولی نیز برای کاربران حرفه ای که قصد استفاده از آن در پروژه های تجاری بزرگ را نیز ارایه می دهد.
در این مثال, ما داده هایی که بیشترین استفاده دارند را با حداقل تنظیمات از API دریافت کردیم.
شما می توانید پارامترهای اضافه ای را برای سفارشی سازی نتایج و دریافت اطلاعات اضافی بر حسب نیاز را به کار ببرید که اطلاعات بیشتر در داکیومنت ipstack ببینید.
امیدوارم از آموزش دریافت موقعیت مکانی با IP در PHP نهایت استفاده را برده باشید.
هر سوالی داشتید ، از قسمت نظرات ارسال کنید . سریعا ، پاسخگوی سوالات شما هستیم .
موفق و پیروز باشید.
سلام
تست کردم.
احتمالا موقعیت ISP در تهران رو نمایش داد.
من شیرازم.
کارایی نداره.
سلام
ممنون خیلی مفید بود.
چند تا سوال برام پیش اومده میخام ازتون بپرسم
۱- اگر کاربر با استفاده از ف.شکن وارد سایت ما بشه لوکیشن کاربر باز هم درسته؟؟؟
۲- حالا اگر بخواهیم شرط بزاریم که اگر کاربر مثلا در محدوده برج میلاد بود چاپ کن ok در غیر این صورت چاپ کن no ؟ این رو چطور میتونیم هندل کنیم؟؟؟؟
سلام. خوشحالیم که مفید واقع شده
۱٫لوکیشن اون ف.شکل نمایش میده
۲٫یه شرط if ساده
سلام خسته نباشید
چون تحریم هستیم در سایت ipstack کشور ایران وجود نداره برای به دست آوردن موقعیت مکانی چه راهی رو پیشنهاد میدین؟
سلام ممنون
سایت ipapi.co
سلام. چطور میشه که ما ip کاربری که صفحه رو بازدید میکنه بگیریم؟
سلام
$_SERVER[‘REMOTE_ADDR’]
این متغییر سراسری آیپی کاربر رو داره
سلام
وقت بخیر
عالیه مثل بقیه پست هاتون
راستی
در آخر از اسکریپت خروجی گرفتن رو توی کدها وراد نکردید و کاربر های مبتدی ممکنه نفهمن کد مشکلی نداره
منظورم پرینت هست
مثلا
print_r($api_result);
سلام ممنون. خوشحالیم که مفید واقع شده.
بله ممنون از توجه شما
موفق و پیروز باشید.