(1)前言
在我使用thinkphp类库IpLocation方法getLocation时,发现获取到信息为空.
分析查询后得知,原因是在框架中没有加载地址库UTFWry.dat,可以在构造方法中看到__construct($filename = "UTFWry.dat"),需要下载文件,解压后得到UTFWry.dat,把文件放在
$this->fp = fopen(dirname(__FILE__).'/'.$filename, 'rb'))
对应地址
ThinkPHP\Library\Org\Net/UTFWry.dat中
然后getlocation(ip地址)方法就可以获取到地址了
(2)主体
ThinkPHP\Common\funcitons.php下有一个get_client_ip()能够获取ip地址
但是有时候不够准确
找到了下面一段来
function get_client_ip($type = 0) { $type = $type ? 1 : 0; static $ip = NULL; if ($ip !== NULL) return $ip[$type]; if($_SERVER['HTTP_X_REAL_IP']){//nginx 代理模式下,获取客户端真实IP $ip=$_SERVER['HTTP_X_REAL_IP']; }elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {//客户端的ip $ip = $_SERVER['HTTP_CLIENT_IP']; }elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {//浏览当前页面的用户计算机的网关 $arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']); $pos = array_search('unknown',$arr); if(false !== $pos) unset($arr[$pos]); $ip = trim($arr[0]); }elseif (isset($_SERVER['REMOTE_ADDR'])) { $ip = $_SERVER['REMOTE_ADDR'];//浏览当前页面的用户计算机的ip地址 }else{ $ip=$_SERVER['REMOTE_ADDR']; } // IP地址合法验证 $long = sprintf("%u",ip2long($ip)); $ip = $long ? array($ip, $long) : array('0.0.0.0', 0); return $ip[$type]; }
现在我们就能用了
$ip=get_client_ip();
现在我们要根据ip地址获取用户的位置
Thinkphp支持IP定位功能,需要使用扩展类库Org\Net\IpLocation,并且要配合IP地址库文件一起使用
$Ip = new \Org\Net\IpLocation('UTFWry.dat'); // 实例化类 参数表示IP地址库文件 $area = $Ip->getlocation(); // 获取某个IP地址所在的位置
这个UTFWry.dat需要我们下载
http://pan.baidu.com/s/1eSz1GTO 密码: 7q4v,解压后放到ThinkPHP\Library\Org\Net目录下
现在我把$area信息输出下
array(5) { ["ip"] => string(13) "218.79.93.194" ["beginip"] => string(11) "218.79.93.0" ["endip"] => string(13) "218.79.94.255" ["country"] => string(18) "上海市普陀区" ["area"] => string(20) "/静安区电信ADSL" }
.
相关推荐
总结,通过ThinkPHP获取IP地址和对应的地理位置信息,需要理解HTTP协议中的IP获取机制,以及如何使用第三方服务或数据库进行IP到地理信息的转换。在实际项目中,还需要考虑到隐私保护和合规性,确保在合法范围内使用...
在IT行业中,尤其是在Web开发领域,常常需要根据用户设备的IP地址来获取其大致的地理位置信息,以便提供个性化服务或进行数据分析。ThinkPHP5作为一款流行的PHP框架,提供了丰富的功能来帮助开发者实现这一需求。本...
在我们使用thinkphp类库IpLocation方法getLocation时,发现获取到信息为空,原因是在我们的框架中没有加载地址库UTFWry.dat,可以在构造方法中看到__construct($...然后getlocation(ip地址)方法就可以获取到地址了
本文实例讲述了THinkPHP获取客户端IP与IP地址查询的方法。分享给大家供大家参考,具体如下: TP 中获取客户端IP地址的系统公共函数是:function get_client_ip()。返回值就是IP地址。 查询IP地址所在国家与地区的类...
ThinkPHP中IP地址定位函数,用于获取用户的ip地址,实用
UTFWry.dat是ThinkPHP框架中用于IP地址定位的一个数据文件,主要功能是根据输入的IP地址返回对应的位置信息,如国家、地区等。在Web开发中,IP定位功能常用于用户行为分析、访问统计、内容本地化以及安全防护等方面...
以下是一个自定义的`get_client_ip()`函数示例,它综合了上述几种方法来获取IP地址: ```php function get_client_ip($type = 0) { $type = $type ? 1 : 0; static $ip = NULL; if ($ip !== NULL) return $ip[$...
在Web开发中,有时我们需要根据用户的IP地址获取他们的来源地区、城市以及网络等信息,这对于数据分析、用户行为追踪或个性化服务提供具有重要意义。ThinkPHP作为一款广受欢迎的PHP框架,为我们提供了便捷的开发环境...
本项目聚焦于使用Thinkphp5框架实现IP地址的定位功能,利用纯真IP库进行定位服务。以下是对这个主题的详细阐述: 首先,Thinkphp5是一个基于PHP语言的轻量级、高性能的MVC(Model-View-Controller)框架,它提供了...
总结起来,这个压缩包提供的内容是关于如何在ThinkPHP3.2.3框架下实现IP地址的地理位置定位,通过`IpLocation`插件和`UTFWry.dat`数据文件,结合可能封装好的`IPLook`工具,开发者可以轻松地获取和处理IP地址相关的...
1. **$_SERVER全局变量**:PHP提供了一个内置的超全局数组`$_SERVER`,其中包含了关于HTTP请求的各种信息,如`REMOTE_ADDR`可以获取到访客的IP地址,`HTTP_USER_AGENT`则能获取到用户使用的浏览器及操作系统信息。...
总结来说,在ThinkPHP框架中实现IP定位功能,涉及到下载和配置IP定位扩展类库,准备UTF8编码的IP地址库文件,通过内置函数获取用户IP,以及利用IpLocation类及其getlocation()方法获取并解析地理位置信息。...
在代码示例中,类IP的构造函数首先使用GetIP函数获取IP地址,然后通过SINA接口获取地理位置信息。需要注意的是,由于SINA接口返回的数据可能包含中文字符,这里在返回数据前使用了iconv函数来转换编码格式,确保中文...
// 获取IP地址的回调函数 } } ``` ### 知识点四:thinkPHP框架的注意事项 在使用thinkPHP进行CURD操作时,需要注意: - 均规定使用表名进行操作,这意味着在模型中不能直接使用数据库的别名,而应该明确指定表名...
在IT行业中,Redis和ThinkPHP是两个非常重要的技术组件,它们在开发高性能、高并发的Web应用时发挥着关键作用。下面将详细讲解这两个技术及其结合使用的方式。 **Redis** Redis是一个开源(BSD许可)的,内存数据...
- 获取到Access Token后,你可以通过微信API的`sns/userinfo`接口获取用户的详细信息。但要注意,根据微信的隐私策略,某些信息可能需要用户额外授权才能获取。 4. **分享至微信好友和朋友圈**: - 分享功能主要...
4. **获取用户信息**:有了Access Token和OpenID,可以调用微信API获取用户的微信基本信息,如昵称、头像等。 5. **绑定用户**:如果用户首次登录,应用需要创建新用户并绑定OpenID;如果是老用户,查找已有的用户...