NỘI DUNG (HIGHLIGHTS)
Kiểm tra địa chỉ IP bằng Abstract API và PHP: Khi làm việc trên các ứng dụng, bạn có thể muốn có được vị trí địa lý của người dùng. Dựa trên vị trí địa lý của người dùng, các nội dung khác nhau có thể được phân phát trên trang web. Đó có thể là các mức giá, quảng cáo, ưu đãi khác nhau, v.v. Trong bài viết này, chúng ta sẽ thảo luận về một công cụ tra cứu địa chỉ IP được gọi là Abstract IP geolocation API.
Cách kiểm tra địa chỉ IP bằng Abstract API và PHP
Trong bài hướng dẫn cách kiểm tra địa chỉ IP bằng Abstract API và PHP này sẽ sử dụng PHP cURL, Guzzle và JavaScript vani để tương tác với API của Abstract.
# Nhận Abstract API Key
Để bắt đầu, trước tiên bạn cần đăng ký với Abstract IP Geolocation API. Họ cung cấp cả gói miễn phí và cao cấp. Trong gói miễn phí, tại thời điểm viết bài này, 20000 yêu cầu mỗi tháng được phép. Tuy nhiên, bạn có thể chọn gói theo yêu cầu của mình.
Sau khi đăng ký, bạn sẽ có quyền truy cập vào trang tổng quan. Từ trang tổng quan, sao chép khóa API sẽ được yêu cầu trong khi gọi API của chúng.
# Nhận địa chỉ IP của người dùng
Khi bạn đã có khóa API. Tiếp theo, chúng ta cần tìm ra IP của người dùng một cách động. Bạn có thể nghĩ rằng sử dụng $_SERVER[‘REMOTE_ADDR’] có thể lấy trực tiếp địa chỉ IP. Điều này không đúng nếu máy chủ được đặt sau proxy hoặc tường lửa. Chúng ta có thể xử lý các trường hợp như vậy bằng cách sử dụng mã bên dưới.
function getUserIpAddr() {
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}
return $ip;
}
Trong đoạn mã trên, đã thêm các kiểm tra cho HTTP_CLIENT_IP và HTTP_X_FORWARDED_FOR. 2 biến này cung cấp địa chỉ IP của người dùng từ các máy chủ sử dụng proxy hoặc tường lửa. Nếu cả hai giá trị này không được tìm thấy thì chúng ta nhận được địa chỉ IP bằng cách sử dụng REMOTE_ADDR.
# Kiểm tra địa chỉ IP bằng Abstract API
Tiếp tục và tương tác với API vị trí địa lý IP của Abstract. Đầu tiên chúng ta hãy bắt đầu với cURL PHP. Để sử dụng cURL, hãy đảm bảo rằng tiện ích mở rộng cURL được bật trên máy chủ của bạn.
$ip_address = getUserIpAddr();
$api_key = 'API_KEY';
$url = "https://ipgeolocation.abstractapi.com/v1/?api_key=$api_key&ip_address=$ip_address";
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
$response = curl_exec($ch);
if (curl_errno($ch)) {
$error_msg = curl_error($ch);
echo $error_msg;
}
$arr_result = json_decode($response, true);
print_r($arr_result);
Đảm bảo thay thế API_KEY bằng giá trị thực. Khi chạy mã này, bạn sẽ nhận được các thông tin chi tiết như thành phố, quốc gia, múi giờ, vĩ độ và kinh độ, v.v. Đầu ra là một cái gì đó giống như dưới đây.
Array
(
[ip_address] => 103.47.153.189
[city] => Pune
[city_geoname_id] => 1259229
[region] => Maharashtra
[region_iso_code] => MH
[region_geoname_id] => 1264418
[postal_code] => 411038
[country] => India
[country_code] => IN
[country_geoname_id] => 1269750
[country_is_eu] =>
[continent] => Asia
[continent_code] => AS
[continent_geoname_id] => 6255147
[longitude] => 73.7286
[latitude] => 18.6161
[security] => Array
(
[is_vpn] =>
)
[timezone] => Array
(
[name] => Asia/Kolkata
[abbreviation] => IST
[gmt_offset] => 5
[current_time] => 16:11:33
[is_dst] =>
)
[flag] => Array
(
[emoji] => IN
[unicode] => U+1F1EE U+1F1F3
[png] => https://static.abstractapi.com/country-flags/IN_flag.png
[svg] => https://static.abstractapi.com/country-flags/IN_flag.svg
)
[currency] => Array
(
[currency_name] => Indian Rupee
[currency_code] => INR
)
[connection] => Array
(
[autonomous_system_number] => 134006
[autonomous_system_organization] => Sheng Li Telecom India Private Limited
[connection_type] => Corporate
[isp_name] => Sheng Li Telecom India Private Limited
[organization_name] => Sheng Li Telecom India Private Limited
)
)
Người ta có thể không muốn tất cả thông tin này. Bạn có thể giới hạn phản hồi bằng cách chuyển tham số các trường. Giả sử bạn chỉ muốn nhận được thành phố và quốc gia. Sau đó xây dựng URL như sau.
$url = "https://ipgeolocation.abstractapi.com/v1/?api_key=$api_key&ip_address=$ip_address&fields=city,country";
Trên trang web của bạn, bạn có thể nhận được một số khách truy cập đang sử dụng VPN. VPN gây khó khăn cho việc tìm địa chỉ IP thực của người dùng. Địa chỉ IP bạn nhận được từ máy chủ là của VPN chứ không phải của khách truy cập.
Trong phản hồi của Abstract API, nó cũng cung cấp giá trị của VPN bằng cách sử dụng $arr_result[‘security’][‘is_vpn’]. Nếu giá trị này không trống, điều đó có nghĩa là khách truy cập đang sử dụng VPN và không có cách nào để lấy địa chỉ IP ban đầu của họ.
# Dùng Guzzle
Trong trường hợp của các framework PHP như Laravel hoặc các framework khác, bạn có thể muốn sử dụng Guzzle. Guzzle là một máy khách HTTP PHP để gửi các yêu cầu HTTP và nhận một phản hồi HTTP. Nó là một thay thế cho cURL PHP.
Để sử dụng Guzzle, hãy cài đặt nó bằng lệnh dưới đây.
composer require guzzlehttp/guzzle
Sau đó, hãy viết mã bên dưới để gọi Abstract API thông qua thư viện Guzzle.
<?php
require_once "vendor/autoload.php";
use GuzzleHttp\Client;
$ip_address = getUserIpAddr();
$api_key = 'API_KEY';
try {
$client = new Client([
// Base URI is used with relative requests
"base_uri" => "https://ipgeolocation.abstractapi.com",
]);
$response = $client->request("GET", "/v1/", [
"query" => [
"api_key" => $api_key,
"ip_address" => $ip_address,
]
]);
//get status code using $response->getStatusCode();
$body = $response->getBody();
$arr_result = json_decode($body, true);
print_r($arr_result);
} catch(Exception $e) {
echo $e->getMessage();
}
# Dùng JavaScript
Giống như PHP, bạn thậm chí có thể tương tác với Abstract API bằng JavaScript. Có lẽ hầu hết trong khung JavaScript, bạn có thể cần nó.
var ip_address = 'IP_ADDRESS';
var api_key = 'API_KEY';
fetch('https://ipgeolocation.abstractapi.com/v1/?api_key='+api_key+'&ip_address='+ip_address)
.then(response => response.json())
.then(data => {
console.log(data);
});
Kết luận
Tìm vị trí địa lý theo địa chỉ IP là điều cần thiết trong một số trường hợp nhất định. Nó sẽ giúp người dùng tìm ra lựa chọn phù hợp nhất cho dự án của mình. Hy vọng với cách kiểm tra địa chỉ IP bằng Abstract API và PHP mà Blog thủ thuật máy tính f4vnn đã chia sẻ sẽ có ích với bạn. Chúc bạn thành công.
Bài Viết Cùng Chuyên MụcGame & Apk Mod Acapella Việt Nhạc DJ Liên Kết URL