Lấy mã quốc gia từ địa chỉ ip php

Trong hướng dẫn này, chúng tôi trình bày cách lấy quốc gia của khách truy cập trang web dựa trên địa chỉ IP của họ bằng PHP bằng lệnh gọi API hoặc truy vấn cơ sở dữ liệu cục bộ


Nhận quốc gia của khách truy cập trang web thông qua lệnh gọi API

Cách dễ nhất để biết quốc gia của khách truy cập trang web là thông qua lệnh gọi API, điều kiện tiên quyết duy nhất là lớp ứng dụng khách API, xem ví dụ về mã PHP bên dưới

countryCode}
"; echo "Visitor country name : {$addrInfo->countryName}
";

Truy vấn cơ sở dữ liệu cục bộ

Trong ví dụ mã bên dưới, chúng tôi giả định rằng bạn đang sử dụng cơ sở dữ liệu CSV mới nhất và đã được nhập vào một phiên bản MySQL hoặc MariaDB cục bộ

Bạn có thể sử dụng thư viện curl tích hợp để gọi API định vị địa lý IP trong tập lệnh PHP. Đây là chương trình PHP hoàn chỉnh


parse_argv($request);
        try {
            // build required data
            $formData = http_build_query([
                '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 => "https://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. 

Mã này chấp nhận địa chỉ IP IPv4 và xác thực địa chỉ đó bằng cách sử dụng phương thức xác thực filter_var( ) của hàm php tích hợp

Mở cửa sổ dòng lệnh và chạy tập lệnh PHP với địa chỉ IP hợp lệ

Lấy mã quốc gia từ địa chỉ ip php

Bạn có thể thử với các địa chỉ IP hợp lệ khác để lấy tên quốc gia. Bạn cũng có thể thử với một địa chỉ không hợp lệ. Kịch bản nên nắm bắt nó

Lấy mã quốc gia từ địa chỉ ip php

Nhận quốc gia từ địa chỉ IP IPv6

Nếu khách truy cập trang web của bạn có địa chỉ IPv6, không có gì phải lo lắng. API định vị địa lý IP cũng có thể trích xuất tên quốc gia từ địa chỉ IPv6

Đây là tập lệnh PHP đã sửa đổi để xác thực và trích xuất quốc gia từ địa chỉ IP IPv6


parse_argv($request);
        
        try {
            // build required data
            $formData = http_build_query([
                '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 => "https://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);

Thay thế khóa API, lưu tệp và chạy nó

Lấy mã quốc gia từ địa chỉ ip php

Các đối số xác thực filter_var( ) hiện được cập nhật để kiểm tra định dạng IPv6 hợp lệ. Do đó, tập lệnh PHP này cũng sẽ bắt bất kỳ địa chỉ IP không hợp lệ nào

Lấy mã quốc gia từ địa chỉ ip php

Nhận chi tiết địa phương cụ thể theo quốc gia từ địa chỉ IP

API không giới hạn ở tên quốc gia. Nó có thể trích xuất nhiều chi tiết được bản địa hóa về vị trí địa lý của địa chỉ IP.  

Đây là một cái nhìn thoáng qua về phản hồi API JSON được ghi lại từ tài liệu

Lấy mã quốc gia từ địa chỉ ip php

Bạn có thể thấy rằng API cũng có thể tìm chi tiết quốc gia, chẳng hạn như mã quốc gia, cho đến tên khu vực và thành phố cho mọi địa chỉ IP.  

Hãy cùng tìm hiểu cách trích xuất các chi tiết này từ phản hồi API trong PHP


parse_argv($request);
        try {
            // build required data
            $formData = http_build_query([
                '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 => "https://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);

Lấy mã quốc gia từ địa chỉ ip php

Nhận chi tiết toàn cầu cụ thể theo quốc gia từ địa chỉ IP

Nếu bạn xem kỹ tài liệu của API định vị địa lý IP, nó cũng trích xuất các chi tiết toàn cầu về quốc gia, chẳng hạn như lục địa, múi giờ và tọa độ định vị địa lý

Hãy xem cách trích xuất các tham số này từ phản hồi API


parse_argv($request);
        try {
            // build required data
            $formData = http_build_query([
                '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 => "https://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);

Lấy mã quốc gia từ địa chỉ ip php

Nhận quốc gia cho nhiều địa chỉ IP

API này hoạt động cho nhiều địa chỉ IP. Vì vậy, thay vì thăm dò địa chỉ IP của từng khách truy cập bằng lệnh gọi API riêng biệt, bạn có thể muốn tạo báo cáo về tất cả các quốc gia khách truy cập từ nhật ký dữ liệu IP máy chủ web của mình

Bạn có thể đạt được định dạng báo cáo theo nhu cầu của mình bằng cách chuyển nhiều địa chỉ IP tới yêu cầu API. Ví dụ: đây là cách bạn có thể thực hiện đối với báo cáo định dạng CSV về địa chỉ IP cho tên quốc gia


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' => '',
                'ip_address' => $ip  
            ]);
            // make curl request to abstractapi.com to get ip information
            $curl = curl_init();
            curl_setopt_array($curl, array(
                CURLOPT_URL => "https://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);

Lấy mã quốc gia từ địa chỉ ip php

Như bạn có thể thấy, đầu ra của tập lệnh PHP này là báo cáo được định dạng CSV về địa chỉ IP của khách truy cập được ánh xạ tới tên quốc gia và lục địa

Dựa trên yêu cầu của mình, bạn có thể sửa đổi định dạng báo cáo để cung cấp bản ghi rút gọn với mã quốc gia , mã vùng và mã lục địa cùng với dữ liệu IP

Bạn có thể tìm tên quốc gia từ địa chỉ IP không?

Bạn có thể tìm thấy tên quốc gia từ một địa chỉ IP, miễn là địa chỉ IP đó là công khai và có thể định địa chỉ trên toàn cầu. Ngoài ra, bạn cũng có thể tìm thấy tên thành phố và khu vực của địa chỉ IP trong nước. Ngoài ra, với sự trợ giúp của API định vị địa lý IP trừu tượng, có thể nhận được các chi tiết này cùng với thông tin địa chỉ IP cụ thể về múi giờ, ISP và tọa độ vị trí

Làm cách nào để tìm Quốc gia của Địa chỉ IP?

Không có cách trực tiếp để giải mã tên quốc gia từ địa chỉ IP. Tuy nhiên, có thể truy cập cơ sở dữ liệu theo dõi chi tiết phân bổ dải địa chỉ IP trên tất cả các ISP hoạt động ở các khu vực địa lý khác nhau. Tuy nhiên, với sự trợ giúp của API định vị địa lý IP trừu tượng, có thể lấy thông tin này ngay lập tức. API định vị địa lý IP duy trì mối quan hệ lâu dài với các ISP và các nhà cung cấp dữ liệu khác để cung cấp dữ liệu cụ thể theo quốc gia có độ chính xác cao và nhất quán cho các địa chỉ IP. Cùng với tên quốc gia, API cũng cung cấp thông tin có giá trị về vị trí của địa chỉ IP, chẳng hạn như khu vực, thành phố và tọa độ vị trí

Làm cách nào để lấy quốc gia từ địa chỉ IP trong PHP?

Hàm geoip_country_name_by_name() sẽ trả về tên quốc gia đầy đủ tương ứng với tên máy chủ hoặc địa chỉ IP.

Làm cách nào để lấy mã quốc gia trong PHP?

The geoip_country_code_by_name() là một hàm sẵn có trong PHP giúp tạo mã quốc gia gồm hai chữ cái (Mỗi quốc gia được gán hai . Ví dụ. Hoa Kỳ cho Hoa Kỳ). Hàm lấy tên máy chủ hoặc Địa chỉ IP làm đối số và tạo mã quốc gia gồm hai chữ cái.

Cách lấy quốc gia theo địa chỉ IP?

Bạn cũng có thể sử dụng các trang web của bên thứ 3 như Geobytes hoặc Dnsstuff để tra cứu địa chỉ IP . Tra cứu whois sẽ tiết lộ tên của ISP sở hữu địa chỉ IP đó và quốc gia nơi địa chỉ đó bắt nguồn. Nếu bạn may mắn, bạn cũng có thể tìm thấy thành phố xuất xứ.

Làm cách nào để lấy tên thành phố từ địa chỉ IP trong PHP?

php $ip = '168. 192. 0. 1'; . //ip-api. com/php/'. $ip)); . $query = @unserialize(file_get_contents('http://ip-api.com/php/'.$ip)); if($query && $query['status'] == 'success') { echo 'Your City is ' .