Maison  >  Article  >  développement back-end  >  PHP implémente la fonction de requête d'adresse IP

PHP implémente la fonction de requête d'adresse IP

王林
王林original
2023-06-22 23:22:354076parcourir

Avec le développement rapide d'Internet, les adresses IP sont devenues un élément indispensable des communications réseau. Les informations sur l'adresse IP sont très importantes pour la surveillance de la sécurité du réseau, la gestion du trafic et la publicité ciblée sur le commerce électronique. Par conséquent, afin de permettre aux utilisateurs d'interroger plus facilement les informations sur l'adresse IP/le nom de domaine, de nombreux sites Web proposent des fonctions de requête d'adresse IP. Cet article présentera comment utiliser PHP pour implémenter la fonction de requête d'adresse IP pour référence des lecteurs.

1. Qu'est-ce qu'une adresse IP ?

L'adresse IP (Internet Protocol Address) est l'adresse du protocole réseau, qui est l'adresse du protocole Internet (Internet Protocol). Chaque appareil du réseau a besoin d'une adresse IP pour communiquer. Une adresse IP consiste en un nombre binaire de 32 bits, généralement divisé en quatre octets, chacun allant de 0 à 255. Par exemple, « 192.168.0.1 » est une adresse IP.

2. Obtenir l'adresse IP

En PHP, il existe de nombreuses façons d'obtenir l'adresse IP. Les suivantes sont couramment utilisées :

    #. 🎜 🎜#$_SERVER['REMOTE_ADDR'] : Obtenez l'adresse IP du client d'accès.
  1. $_SERVER['HTTP_X_FORWARDED_FOR'] : Obtenez l'adresse IP du client transmise par le serveur proxy. Si un serveur proxy est utilisé pour l'accès, la véritable adresse IP du client peut être falsifiée par le serveur proxy.
  2. $_SERVER['HTTP_CLIENT_IP'] : Obtenez l'adresse IP du client. Semblable à HTTP_X_FORWARDED_FOR, il doit également être protégé contre la falsification.
La fiabilité des trois méthodes ci-dessus pour obtenir une adresse IP varie selon les environnements, vous devez donc choisir la méthode appropriée en fonction de la situation réelle.

Par exemple, le code suivant obtient des informations sur l'adresse IP d'accès actuelle en détectant si HTTP_X_FORWARDED_FOR et HTTP_CLIENT_IP existent.

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;
}

Les adresses IP étant disponibles sous différents formats, elles peuvent être converties au format numérique pour un traitement plus facile. Le code suivant convertit l'adresse IP en un entier non signé de 32 bits :

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

3. Requête d'adresse IP

Pendant le processus de requête d'adresse IP, nous devons accéder au API pour obtenir les données dont nous avons besoin. Cet article prend l'API Taobao comme exemple pour présenter comment utiliser PHP pour obtenir des informations sur l'adresse IP.

Tout d'abord, enregistrez un compte sur la plateforme ouverte Taobao et postulez pour l'interface API, puis obtenez l'adresse d'accès à l'API et l'AppKey.

Ensuite, nous pouvons utiliser le code suivant pour obtenir les informations de localisation et les informations sur l'opérateur de l'adresse IP via l'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;
}

Le code ci-dessus épisse d'abord l'adresse et les paramètres de l'interface API, puis utilise la bibliothèque CURL pour lancer une requête HTTP et renvoie enfin les données au format JSON. Appelez cette fonction pour obtenir des informations IP.

4. Implémentation complète du code

Ce qui suit est l'implémentation complète du code PHP :

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);

Le code ci-dessus implémente l'obtention de l'adresse IP d'accès et la conversion de l'IP adresse Pour le format numérique, interrogez les informations sur l'adresse IP et d'autres fonctions. Les lecteurs peuvent l'appliquer à leurs propres sites Web et effectuer le développement secondaire correspondant.

En bref, la fonction de requête d'adresse IP a une valeur d'application étendue dans les applications réseau. L'implémentation de cette fonction en écrivant en PHP peut rendre la requête plus pratique et plus rapide. Il convient de noter que lorsque vous utilisez des API tierces, vous devez respecter les réglementations légales et les mesures de sécurité des données en vigueur pour éviter toute utilisation abusive des informations.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn