手机版

ThinkPHP使用UTFWry地址库进行IP定位示例

时间:2021-11-09 来源:互联网 编辑:宝哥软件园 浏览:

你可以在http://www.thinkphp.cn/extend/223.html,官网下载IP位置扩展类库,或者下载扩展包(http://www . thinkphp.cn/down/253 . html),里面已经有扩展类了。如果上传的类库是单独下载的,把解压后的IpLocation.class.php放在目录thinkphp/extend/library/org/net下/(如果不是,请手动创建)。一、获取IP地址如果只需要获取用户访问的IP地址,可以直接使用系统内置的get_client_ip功能。这个函数是ThinkPHP标准模式的内置方法,可以直接使用,比PHP内置的系统变量$_SERVER['HTTP_CLIENT_IP']兼容性更好。用法:复制代码如下:$ip=get_client_ip。Get_client_ip支持ip地址的多案例检测和有效性验证。返回值是获得的IP地址。如果获取的IP地址非法,将返回0.0.0.0。如果需要,还可以返回IPV4地址号,例如,复制代码如下: $ IP=get _ client _ IP(1);返回的结果可能类似于:复制代码如下:2130706433可用于地址范围和比较。二是IP地址位置不能完全满足应用需求,只能记录下来以备日后日志分析。IP地址定位功能允许您获取用户的区域。要使用IpLocation函数,除了IP位置扩展类库,还需要一个IP地址库文件。由于ThinkPHP默认使用UTF8编码,所以最好使用UTF8格式的IP地址库文件。如果是纯gbk编码的IP地址库文件,需要对得到的结果进行编码和转换(下面提到)。您可以在这里下载UTF8编码的地址库文件:由http://www.thinkphp.cn/extend/270.html解压缩的地址库文件UTFWry.dat可以放在IpLocation扩展类库所在的目录下。用法:复制代码如下: import(' org . net . IP location ');//导入IpLocation类$ Ip=new IpLocation();//实例化类$ location=$ IP-get location(' 218 . 79 . 93 . 194 ');//获取一个IP地址的位置。返回的位置变量是一个数组。包括:复制代码如下:$location['ip'] //ip地址$location['beginip'] //用户ip范围的起始地址$location['endip'] //用户IP范围的结束地址$location['country'] //国家或地区$location['area'] //在地区中,通常我们要获取IP位置,只需要获取国家和地区信息:复制代码如下: $ info=$ location[' Country ']。$ location[' area '];如果你使用的IP地址库文件不是UTFWry.dat(注意在Linux下文件名的大小写要一致),我们在实例化IpLocation类时需要传入地址库文件名,例如复制代码如下: $ IP=新IP位置(' my IP wry . dat ');//传入IP地址库的文件名如果您的IP地址库是GBK编码的,则需要对返回的结果进行编码和转换。例如,复制代码如下: $ info=iconv ('gbk ',' utf-8 ',$ location ['country']。$ location[' area ']);如果调用getlocation方法时没有传入参数,系统会自动调用上面的get_client_ip函数获取当前ip地址:复制代码如下: $ location=$ IP-get location();你也可以支持传入域名自动获取ip地址。复制代码如下:导入(' org。净。IP位置')。//导入IpLocation类$ Ip=new IpLocation();//实例化类$ area=$ IP-get location(' www . thinkphp . cn ');//获取域名服务器所在的位置转储($ area);运行结果输出:

如果你使用的是纯IP地址库,或者经常需要更换不同的地址库,为了方便IP位置查询,你也可以单独打包一个功能来获取位置信息。请参考这里:http://www.thinkphp.cn/code/88.html.

版权声明:ThinkPHP使用UTFWry地址库进行IP定位示例是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。