影子互联

专注深圳网站建设

PHP通过IP判断用户是否为国外用户

时间:2017-11-22 18:55:37,点击:0

 PHP如何实现通过IP判断用户是否为国外用户,在这里有两种方法一种是通过真实的IP库来判断另外一种就是通过一个相关的网站来判断。

下面我就注意介绍下如果通过相关网站来实现用户是否为国外用户
第一点、我们要介绍下判断IP的网站http://api.wipmania.com 这个网站可以判断出您是国内用户还是国外用户。这样通过这个网站来实现我们不用真实数据库的捷径。下面我们得到用户是国内还是国外的接下来应该使用http://api.wipmania.com 这网站的数据了
第二点、如何使用网站数据来判断代码
 
<?
$lang = file_get_contents("http://api.wipmania.com/");
if (strstr($lang,"cn")!==false){ 

//}else{
if ($classidx!="cn"){
echo "<script language='javascript' type='text/javascript'>";
echo "window.location.href='/en'";
echo "</script>";
}
}

?>
 本站测试代码
<?
$ip = ip();
$lang = file_get_contents("http://api.wipmania.com/$ip");
if($lang=="CN") echo"大陆IP";
else echo $ip;

function ip() {
    //strcasecmp 比较两个字符,不区分大小写。返回0,>0,<0。
    if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
        $ip = getenv('HTTP_CLIENT_IP');
    } elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {
        $ip = getenv('HTTP_X_FORWARDED_FOR');
    } elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {
        $ip = getenv('REMOTE_ADDR');
    } elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {
        $ip = $_SERVER['REMOTE_ADDR'];
    }
    $res =  preg_match ( '/[\d\.]{7,15}/', $ip, $matches ) ? $matches [0] : '';
    return $res;
    //dump(phpinfo());//所有PHP配置信息
}
?>
 
淘宝数据库
$ip = '127.0.0.1';
$taobao = 'http://ip.taobao.com/service/getIpInfo.php?ip=';
$url = $taobao.$ip;
$json = file_get_contents($url);
$json = json_decode($json, true);
echo $json['data']['country'];
 
 
第三、小编测试的是调整页面,你可以根据你自己的相应情况来自己调整。
 
总结:PHP通过IP判断用户是否为国外用户,主要还是需要IP数据库上面介绍的方法一个是用别人的数据库,一个是用自己的数据库。
用别人的数据库优点是比较方便但是速度有点慢。
用自己的数据库优点是速度快但是比较占服务器资源。
用户可以根据自己的需要来选择。