PHP - 检测的国家[复制](PHP - Detect country [duplicate])

2019-07-18 10:13发布

可能重复:
打包在PHP检测用户contry?
基于IP地址的地理位置- PHP

我想检测我的访问者的国家。

而且我发现在谷歌的解决方案,但结果却是一无所获。

你能帮助我吗?

Answer 1:

    <?php 
// Author: www.easyjquery.com 
$ip = $_SERVER['REMOTE_ADDR']; 
// remember chmod 0777 for folder 'cache' 
$file = "./cache/".$ip; 
if(!file_exists($file)) { 
    // request 
    $json = file_get_contents("http://api.easyjquery.com/ips/?ip=".$ip."&full=true"); 
    $f = fopen($file,"w+"); 
    fwrite($f,$json); 
    fclose($f); 
} else { 
    $json = file_get_contents($file); 
} 

$json = json_decode($json,true); 
echo "<pre>"; 
print_r($json); 

?>

演示链接



Answer 2:

这是我获得的国家与来访者的IP一起的方式。

// this is where you get the ip
$ip = $_SERVER['REMOTE_ADDR'];

// this is where you include the code that gets the country
// you can find the code for this file on the link below    
include("geoiploc.php");

// this is where you create the variable that get you the name of the country
$country = getCountryFromIP($ip, " NamE ");

PHP的地理IP禄不起作用

希望这可以帮助。

愿代码与你同在!

更新:

这是我一直在使用另一种方法

    $json = file_get_contents('http://ipinfo.io/' . $this->getIP());
    $data = json_decode($json);
    return $data->country;

也有这项服务,但我发现上面好多了一个...

    'http://getcitydetails.geobytes.com/GetCityDetails?fqcn=' . $this->getIP()

这里是一个很好的方式来获取IP:

private function getIP() {
    $server_keys = [
        'HTTP_CLIENT_IP',
        'HTTP_X_FORWARDED_FOR',
        'HTTP_X_FORWARDED',
        'HTTP_X_CLUSTER_CLIENT_IP',
        'HTTP_FORWARDED_FOR',
        'HTTP_FORWARDED',
        'REMOTE_ADDR'
    ];

    foreach ($server_keys as $key) {
        if (array_key_exists($key, $_SERVER) === true) {
            foreach (explode(',', $_SERVER[$key]) as $ip) {
                if (filter_var($ip, FILTER_VALIDATE_IP) !== false) {
                    return $ip;
                }
            }
        }
    }
}

希望它可以帮助别人!



文章来源: PHP - Detect country [duplicate]