zoukankan      html  css  js  c++  java
  • 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   所以一直查不到,希望其他人别再犯这个基本错误

  • 相关阅读:
    【codevs1227】方格取数2(最大流费最大流-模板
    【ZJOI2008】【BZOJ1033】杀蚂蚁(占坑待填
    python基础学习1-流程控制和判断
    python基础学习1-变量定义赋值,屏幕输入输出
    Jzoj5237 最长公共子序列
    Jzoj5236 利普希茨
    [置顶] 欢迎使用CSDN-markdown编辑器
    Jzoj5235 好的排列
    Jzoj5234 外星人的路径
    Jzoj5231 序列问题
  • 原文地址:https://www.cnblogs.com/jicheng1014/p/2650224.html
Copyright © 2011-2022 走看看