Maison >développement back-end >tutoriel php >Comment obtenir la ville en fonction de l'adresse IP en php

Comment obtenir la ville en fonction de l'adresse IP en php

小云云
小云云original
2018-03-19 15:09:044986parcourir

Cet article vous explique principalement comment obtenir la ville en fonction de l'adresse IP en PHP. Cet article est principalement sous forme de code. J'espère qu'il pourra aider tout le monde.

<?php
header(&#39;Content-Type:text/html;Charset=utf-8&#39;);
function GetIp(){
    $realip = &#39;&#39;;
    $unknown = &#39;unknown&#39;;
    if (isset($_SERVER)){
        if(isset($_SERVER[&#39;HTTP_X_FORWARDED_FOR&#39;]) && !empty($_SERVER[&#39;HTTP_X_FORWARDED_FOR&#39;]) && strcasecmp($_SERVER[&#39;HTTP_X_FORWARDED_FOR&#39;], $unknown)){
            $arr = explode(&#39;,&#39;, $_SERVER[&#39;HTTP_X_FORWARDED_FOR&#39;]);
            foreach($arr as $ip){
                $ip = trim($ip);
                if ($ip != &#39;unknown&#39;){
                    $realip = $ip;
                    break;
                }
            }
        }else if(isset($_SERVER[&#39;HTTP_CLIENT_IP&#39;]) && !empty($_SERVER[&#39;HTTP_CLIENT_IP&#39;]) && strcasecmp($_SERVER[&#39;HTTP_CLIENT_IP&#39;], $unknown)){
            $realip = $_SERVER[&#39;HTTP_CLIENT_IP&#39;];
        }else if(isset($_SERVER[&#39;REMOTE_ADDR&#39;]) && !empty($_SERVER[&#39;REMOTE_ADDR&#39;]) && strcasecmp($_SERVER[&#39;REMOTE_ADDR&#39;], $unknown)){
            $realip = $_SERVER[&#39;REMOTE_ADDR&#39;];
        }else{
            $realip = $unknown;
        }
    }else{
        if(getenv(&#39;HTTP_X_FORWARDED_FOR&#39;) && strcasecmp(getenv(&#39;HTTP_X_FORWARDED_FOR&#39;), $unknown)){
            $realip = getenv("HTTP_X_FORWARDED_FOR");
        }else if(getenv(&#39;HTTP_CLIENT_IP&#39;) && strcasecmp(getenv(&#39;HTTP_CLIENT_IP&#39;), $unknown)){
            $realip = getenv("HTTP_CLIENT_IP");
        }else if(getenv(&#39;REMOTE_ADDR&#39;) && strcasecmp(getenv(&#39;REMOTE_ADDR&#39;), $unknown)){
            $realip = getenv("REMOTE_ADDR");
        }else{
            $realip = $unknown;
        }
    }
    $realip = preg_match("/[\d\.]{7,15}/", $realip, $matches) ? $matches[0] : $unknown;
    return $realip;
}

function GetIpLookup($ip = &#39;&#39;){
    if(empty($ip)){
        $ip = GetIp();
    }
    $res = @file_get_contents(&#39;http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=&#39; . $ip);
    if(empty($res)){ return false; }
    $jsonMatches = array();
    preg_match(&#39;#\{.+?\}#&#39;, $res, $jsonMatches);
    if(!isset($jsonMatches[0])){ return false; }
    $json = json_decode($jsonMatches[0], true);
    if(isset($json[&#39;ret&#39;]) && $json[&#39;ret&#39;] == 1){
        $json[&#39;ip&#39;] = $ip;
        unset($json[&#39;ret&#39;]);
    }else{
        return false;
    }
    return $json;
}


$ipInfos = GetIpLookup(&#39;123.125.114.144&#39;); //baidu.com IP鍦板潃
var_dump($ipInfos);
?>

Recommandations associées :

Implémentation spécifique PHP de l'obtention de la ville basée sur l'adresse IP_Tutoriel PHP

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