ThinkPHP IP地址位置查询以及在Linux下部署的注意事项

因为根据IP找所在地是一个常规需求,ThinkPHP 也集成了这个工具,只不过要自己上传IP地址库    网上比较流行用纯真地址库,去下载一个,拷贝出QQWry.dat 出来即可

根据ThinkPHP的要求,默认情况下,我们需要将QQWry.Dat放入   ThinkPHP/Extend/Library/ORG/Net 这个目录下,当然如果说你已经把这个目录底下的IpLocation.class.php放在其他地方   比如@ 那级目录,只需要使qqwrt在同级目录下即可

 

之后由于qqwrt 是gbk 编码,thinkphp默认是utf-8 所以需要转换一下,送出代码

 

<?php
class IPLocationHelper{
    static $IpLocation;
    
    
    public static function getUrlInfo($url){
        
        $ip = gethostbyname(self::fix($url));
        return self::getIpInfo($ip);
    }

    
    private static function fix($url){
        if(strpos($url,"http://")!==false){
            $url = str_replace("http://","",$url);
        }
        if(strpos($url,"/")!==false){
            $tmp= explode("/", $url);
            $url = $tmp[0];
        }
        return $url;
    }
        
    public static function getIpInfo($ip){
        import("ORG.Net.IpLocation");
        if(empty(self::$IpLocation)){
            self::$IpLocation = new IpLocation('qqwry.dat');
        }
        $infos=self::$IpLocation->getlocation($ip);
        $infos['country'] = iconv('gbk','utf-8',$infos['country']);
        $infos['area'] = iconv('gbk','utf-8',$infos['area']);

        return $infos;
    }
}
 
 
 
 

之后最后部署的时候一定要注意qqwrt.dat的大小写问题,本人最初在windows下开发,顺利解析出ip,但是一放到linux 下就不行,最开始以为是权限问题,最后发现,源代码中写的是QQWrt.dat  文件则是qqwrt.dat   所以一直查不到,希望其他人别再犯这个基本错误

转载于:https://www.cnblogs.com/jicheng1014/archive/2012/08/22/2650224.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值