Home  >  Article  >  Backend Development  >  PHP implements IP address query function

PHP implements IP address query function

王林
王林Original
2023-06-22 23:22:353981browse

With the rapid development of the Internet, IP addresses have become an indispensable part of network communication. IP address information is very important in network security monitoring, traffic management, and targeted e-commerce advertising. Therefore, in order to facilitate users to query IP address/domain name information, many websites provide IP address query functions. This article will introduce how to use PHP to implement the IP address query function for readers' reference.

1. What is an IP address?

IP address (Internet Protocol Address) is the network protocol address, which is the address of the Internet Protocol (Internet Protocol). Every device on the network needs an IP address in order to communicate. An IP address consists of a 32-bit binary number, usually divided into four bytes, each ranging from 0-255. For example, "192.168.0.1" is an IP address.

2. Obtain IP address

In PHP, there are many ways to obtain IP address. The following are commonly used:

  1. $_SERVER['REMOTE_ADDR ']: Get the IP address of the accessing client.
  2. $_SERVER['HTTP_X_FORWARDED_FOR']: Get the client IP address forwarded by the proxy server. If a proxy server is used for access, the client's real IP address may be forged by the proxy server.
  3. $_SERVER['HTTP_CLIENT_IP']: Get the client IP address. Similar to HTTP_X_FORWARDED_FOR, it also needs to be protected from forgery.

The reliability of the above three methods to obtain an IP address varies with different environments, so you need to choose the appropriate method according to the actual situation.

For example, the following code obtains the current access IP information by detecting whether HTTP_X_FORWARDED_FOR and HTTP_CLIENT_IP exist.

function getIP(){
    if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    }elseif(isset($_SERVER['HTTP_CLIENT_IP'])){
        $ip = $_SERVER['HTTP_CLIENT_IP'];
    }else{
        $ip = $_SERVER['REMOTE_ADDR'];
    }
    return $ip;
}

Since IP addresses come in different formats, they can be converted into digital format for easier processing. The following code converts the IP address into a 32-bit unsigned integer:

function ip2long(string $ip): int {
    return sprintf("%u", ip2long($ip));
}

3. IP address query

During the IP address query process, we need to access the external API to obtain the data we need. This article takes Taobao API as an example to introduce how to use PHP to obtain IP address information.

First, register a Taobao open platform account and apply for the API interface, and then obtain the API access address and AppKey.

Next, we can use the following code to obtain the location information and operator information of the IP address through the API.

function getIpInfo($ip, $appkey){
    $url = 'http://ip.taobao.com/service/getIpInfo.php?ip='.trim($ip).'&soft='.$appkey;
    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    $output = curl_exec($ch);
    curl_close($ch);
    $data = json_decode($output,true);
    return $data;
}

The above code first splices the API interface address and parameters, then uses the CURL library to initiate an HTTP request, and finally returns JSON format data. Call this function to obtain IP information.

4. Complete code implementation

The following is the complete PHP code implementation:

function getIP(){
    if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    }elseif(isset($_SERVER['HTTP_CLIENT_IP'])){
        $ip = $_SERVER['HTTP_CLIENT_IP'];
    }else{
        $ip = $_SERVER['REMOTE_ADDR'];
    }
    return $ip;
}

function ip2long(string $ip): int {
    return sprintf("%u", ip2long($ip));
}

function getIpInfo($ip, $appkey){
    $url = 'http://ip.taobao.com/service/getIpInfo.php?ip='.trim($ip).'&soft='.$appkey;
    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    $output = curl_exec($ch);
    curl_close($ch);
    $data = json_decode($output,true);
    return $data;
}

$ip = getIP();
$appkey = 'YOUR_APPKEY'; //替换为自己的AppKey
$info = getIpInfo($ip, $appkey);
print_r($info);

The above code implements obtaining the access IP address, converting the IP address to digital format, and querying the IP Address information and other functions. Readers can apply it to their own websites and conduct corresponding secondary development.

In short, the IP address query function has extensive application value in network applications. Implementing this function by writing in PHP can make the query more convenient and faster. It should be noted that when using third-party APIs, you need to follow relevant legal regulations and data security measures to avoid misuse of information.

The above is the detailed content of PHP implements IP address query function. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn