Anda dapat menggunakan pustaka curl bawaan untuk memanggil API geolokasi IP dalam skrip PHP. Berikut program PHP lengkapnya
<?php class IPV4 { public function handle(array $request) { $data = $this->parse_argv($request); try { // build required data $formData = http_build_query([ 'api_key' => '<YOUR_UNIQUE_API_KEY>', 'ip_address' => $data[0] ]); // make curl request to abstractapi.com to get ip information $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "//ipgeolocation.abstractapi.com/v1/?" . $formData, CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "GET", CURLOPT_HTTPHEADER => array( "accept: application/json", "cache-control: no-cache", "content-type: application/json", ), )); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if ($err) { echo $err; exit; } else { $response = json_decode($response, true); echo 'Country: '.$response["country"]; exit; } } catch (\Exception $e) { echo $e->getMessage(); exit; } } private function parse_argv(array $argv): array { $request = []; foreach ($argv as $i => $a) { if (!$i) { continue; } $isValid = filter_var($a, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4); if($isValid) { array_push($request,$a); } else { echo "Invalid IPv4 Format"; exit; } } return array_values($request); } } $ipv4 = new IPV4(); $ipv4->handle($argv);
Copy the code and replace the placeholder with your API key before saving the file.
Kode ini menerima alamat IP IPv4 dan memvalidasinya menggunakan metode validasi fungsi filter_var( ) php bawaan
Buka jendela terminal baris perintah dan jalankan skrip PHP dengan alamat IP yang valid
Anda dapat mencoba dengan alamat IP valid lainnya untuk mendapatkan nama negara. Anda juga dapat mencoba dengan alamat yang tidak valid. Script harus menangkapnya
Mendapatkan Negara dari Alamat IP IPv6
Jika pengunjung website Anda memiliki alamat IPv6, tidak ada yang perlu dikhawatirkan. API geolokasi IP juga dapat mengekstrak nama negara dari alamat IPv6
Berikut adalah skrip PHP yang dimodifikasi untuk memvalidasi dan mengekstraksi negara dari alamat IP IPv6
<?php class IPV6 { public function handle(array $request) { $data = $this->parse_argv($request); try { // build required data $formData = http_build_query([ 'api_key' => ‘<YOUR_UNIQUE_API_KEY>', 'ip_address' => $data[0] ]); // make curl request to abstractapi.com to get ip information $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "//ipgeolocation.abstractapi.com/v1/?" . $formData, CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "GET", CURLOPT_HTTPHEADER => array( "accept: application/json", "cache-control: no-cache", "content-type: application/json", ), )); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if ($err) { echo $err; exit; } else { $response = json_decode($response, true); echo 'Country: '.$response["country"]; exit; } } catch (\Exception $e) { echo $e->getMessage(); exit; } } private function parse_argv(array $argv): array { $request = []; foreach ($argv as $i => $a) { if (!$i) { continue; } $isValid = filter_var($a, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6); if($isValid) { array_push($request,$a); } else { echo "Invalid IPv6 Format"; exit; } } return array_values($request); } } $ipv6 = new IPV6(); $ipv6->handle($argv); _
Ganti kunci API, simpan file dan jalankan
Argumen validasi filter_var( ) sekarang diperbarui untuk memeriksa format IPv6 yang valid. Oleh karena itu, skrip PHP ini juga akan menangkap alamat IP yang tidak valid
Dapatkan Detail Lokal Khusus Negara dari Alamat IP
API tidak terbatas pada nama negara. Itu dapat mengekstraksi banyak detail lokal tentang lokasi geografis alamat IP.
Berikut ini sekilas respons API JSON yang diambil dari dokumentasi
Anda dapat melihat bahwa API juga dapat menemukan detail negara, seperti kode negara, hingga nama kawasan dan kota untuk setiap alamat IP.
Mari cari tahu cara mengekstrak detail ini dari respons API di PHP
<?php class Country { public function handle(array $request) { $data = $this->parse_argv($request); try { // build required data $formData = http_build_query([ 'api_key' => '<YOUR_UNIQUE_API_KEY>', 'ip_address' => $data[0] ]); // make curl request to abstractapi.com to get ip information $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "//ipgeolocation.abstractapi.com/v1/?" . $formData, CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "GET", CURLOPT_HTTPHEADER => array( "accept: application/json", "cache-control: no-cache", "content-type: application/json", ), )); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if ($err) { echo $err; exit; } else { $response = json_decode($response, true); echo ' IP Address: '.$response['ip_address'].' Country: '. $response['country'].' State: '.$response['region'].' City: '.$response['city'].' '; } } catch (\Exception $e) { echo $e->getMessage(); exit; } } private function parse_argv(array $argv): array { $request = []; foreach ($argv as $i => $a) { if (!$i) { continue; } $isValid = filter_var($a, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE); if($isValid) { array_push($request,$a); } else { echo "Invalid IP Format"; exit; } } return array_values($request); } } $ipLoc = new Country(); $ipLoc->handle($argv);
Dapatkan Detail Global Khusus Negara dari Alamat IP
Jika Anda mencermati dokumentasi API geolokasi IP, itu juga mengekstrak detail global tentang negara, seperti benua, zona waktu, dan koordinat geolokasi
Mari kita lihat cara mengekstrak parameter ini dari respons API
<?php class Geographic { public function handle(array $request) { $data = $this->parse_argv($request); try { // build required data $formData = http_build_query([ 'api_key' => '<YOUR_UNIQUE_API_KEY>', 'ip_address' => $data[0] ]); // make curl request to abstractapi.com to get ip information $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "//ipgeolocation.abstractapi.com/v1/?" . $formData, CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "GET", CURLOPT_HTTPHEADER => array( "accept: application/json", "cache-control: no-cache", "content-type: application/json", ), )); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if ($err) { echo $err; exit; } else { $response = json_decode($response, true); echo ' IP Address: ' . $response['ip_address'] . ' Continent: ' . $response['continent'] . ' Longitude: '.$response['longitude']. ' Latitude: ' . $response['latitude'] . ' '; } } catch (\Exception $e) { echo $e->getMessage(); exit; } } private function parse_argv(array $argv): array { $request = []; foreach ($argv as $i => $a) { if (!$i) { continue; } $isValid = filter_var($a, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE); if($isValid) { array_push($request,$a); } else { echo "Invalid IP Format"; exit; } } return array_values($request); } } $ipGlo = new Geographic(); $ipGlo->handle($argv);
Dapatkan Negara untuk Beberapa Alamat IP
API ini berfungsi untuk beberapa alamat IP. Jadi, alih-alih menyelidiki setiap alamat IP pengunjung dengan panggilan API terpisah, Anda mungkin ingin membuat laporan semua negara pengunjung dari log data IP server web Anda
Anda dapat mencapai format laporan sesuai kebutuhan Anda dengan mengirimkan beberapa alamat IP ke permintaan API. Misalnya, berikut adalah cara melakukannya untuk laporan berformat CSV dari alamat IP ke nama negara
<?php class MultiIP { public function handle(array $request) { $data = $this->parse_argv($request); $info = ''; foreach ($data as $key => $value) { $info .= $this->getDetails($value); } echo $info; } private function getDetails(string $ip) { try { // build required data $formData = http_build_query([ 'api_key' => '<YOUR_UNIQUE_API_KEY>', 'ip_address' => $ip ]); // make curl request to abstractapi.com to get ip information $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "//ipgeolocation.abstractapi.com/v1/?" . $formData, CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "GET", CURLOPT_HTTPHEADER => array( "accept: application/json", "cache-control: no-cache", "content-type: application/json", ), )); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if ($err) { echo $err; exit; } else { $response = json_decode($response, true); return $ip . ',' . $response['country'] . ',' . $response['continent'] . PHP_EOL; exit; } } catch (\Exception $e) { echo $e->getMessage(); exit; } } private function parse_argv(array $argv): array { $request = []; foreach ($argv as $i => $a) { if (!$i) { continue; } $isValid = filter_var($a, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE); if($isValid) { array_push($request,$a); } else { echo "Invalid IP Format"; exit; } } return array_values($request); } } $ip = new MultiIP(); $ip->handle($argv); _
Seperti yang Anda lihat, keluaran dari skrip PHP ini adalah laporan berformat CSV dari alamat IP pengunjung yang dipetakan ke nama negara dan benua
Berdasarkan kebutuhan Anda, Anda dapat memodifikasi format laporan untuk mengirimkan catatan singkat dengan kode negara, kode wilayah, dan kode benua, bersama dengan data IP
Bisakah Anda Menemukan Nama Negara dari Alamat IP?
Anda dapat menemukan nama negara dari alamat IP, asalkan alamat IP bersifat publik dan dapat dialamatkan secara global. Selain itu, Anda juga dapat menemukan nama kota dan wilayah alamat IP di negara tersebut. Selain itu, dengan bantuan API Geolokasi IP Abstrak, dimungkinkan untuk mendapatkan detail ini bersama dengan zona waktu, ISP, dan koordinat lokasi informasi alamat IP tertentu
Bagaimana menemukan Negara Alamat IP?
Tidak ada cara langsung untuk mendekode nama negara dari alamat IP. Namun, dimungkinkan untuk mengakses database yang melacak detail alokasi rentang alamat IP di semua ISP yang beroperasi di berbagai geografi. Namun, dengan bantuan API Geolokasi IP Abstrak, dimungkinkan untuk mendapatkan informasi ini secara instan. API geolokasi IP mempertahankan hubungan jangka panjang dengan ISP dan penyedia data lainnya untuk menyediakan data khusus negara yang sangat akurat dan konsisten untuk alamat IP. Selain nama negara, API juga menawarkan informasi berharga tentang lokasi alamat IP, seperti wilayah, kota, dan koordinat lokasi.