ThinkPHP使用UTFWry地址库进行IP定位实例
可以在官网的 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']具有更好的兼容性,用法:
get_client_ip支持ip地址的多种情况检测和合法性验证,返回值就是获取到的ip地址,如果获取到的ip地址非法,将返回0.0.0.0。
如果需要,也可以返回ipv4地址数字,例如:
返回的结果可能类似于:
可用于地址范围和比较。
二、ip地址定位
仅仅获取ip地址并不能完全满足应用的需求,只能记录下来用于日后的日志分析需要,ip地址定位功能可以让你获取用户的所在区域。要使用ip定位功能,除了需要iplocation扩展类库之外,还需要ip地址库文件,由于thinkphp默认采用utf8编码,因此最好是utf8格式的ip地址库文件,如果是纯真gbk编码的ip地址库文件,则需要对获取结果进行编码转换(下面会提到),可以在这里下载utf8编码的地址库文件: http://www.thinkphp.cn/extend/270.html
解压后的地址库文件utfwry.dat放入iplocation扩展类库所在目录下面即可。
使用方法:
$ip = new iplocation(); // 实例化类
$location = $ip->getlocation('218.79.93.194'); // 获取某个ip地址所在的位置
返回的location变量是一个数组,包括:
$location['beginip'] // 用户ip所在范围的开始地址
$location['endip'] // 用户ip所在范围的结束地址
$location['country'] // 所在国家或者地区
$location['area'] // 所在区域
通常,我们要获取ip定位的话,只需要取country和area信息:
如果你使用的ip地址库文件不是utfwry.dat(注意在linux下面文件名的大小写也需要一致)的话,我们需要在实例化iplocation类的时候传入地址库文件名,例如:
如果你的ip地址库是gbk编码的话,需要对返回结果进行编码转换。例如:
如果调用getlocation方法的时候没有传入任何参数,系统会自动调用上面的get_client_ip函数获取当前所在ip地址:
也可以支持传入域名来自动获取ip地址
$ip = new iplocation(); // 实例化类
$area = $ip->getlocation('www.thinkphp.cn'); // 获取域名服务器所在的位置
dump($area);
运行结果输出:
如果大家使用的是纯真ip地址库,或者经常需要变换不同的地址库,为了方便ip定位的查询,也可以单独封装一个函数来获取位置信息,参考这里: http://www.thinkphp.cn/code/88.html
下一篇: AI布尔运算工具绘制一个定位时钟图标
推荐阅读
-
ThinkPHP使用UTFWry地址库进行IP定位实例
-
ThinkPHP使用UTFWry地址库进行IP定位实例_PHP教程
-
ThinkPHP使用UTFWry地址库进行IP定位实例
-
ThinkPHP使用UTFWry地址库进行IP定位实例_PHP教程
-
ThinkPHP使用UTFWry地址库进行IP定位实例_PHP
-
ThinkPHP中IP地址定位,包括IP地址库资料
-
ThinkPHP中IP地址定位,包括IP地址库资料
-
ThinkPHP使用UTFWry地址库进行IP定位实例
-
ThinkPHP使用UTFWry地址库进行IP定位实例_php实例
-
ThinkPHP使用UTFWry地址库进行IP定位实例_php实例