`

thinkphp获取ip地址及位置信息

阅读更多

(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获取地理位置信息

    总结,通过ThinkPHP获取IP地址和对应的地理位置信息,需要理解HTTP协议中的IP获取机制,以及如何使用第三方服务或数据库进行IP到地理信息的转换。在实际项目中,还需要考虑到隐私保护和合规性,确保在合法范围内使用...

    Thinkphp5根据IP地址获取定位地理位置,精准到城市

    在IT行业中,尤其是在Web开发领域,常常需要根据用户设备的IP地址来获取其大致的地理位置信息,以便提供个性化服务或进行数据分析。ThinkPHP5作为一款流行的PHP框架,提供了丰富的功能来帮助开发者实现这一需求。本...

    thinkphp根据ip获取所在地getlocation()

    在我们使用thinkphp类库IpLocation方法getLocation时,发现获取到信息为空,原因是在我们的框架中没有加载地址库UTFWry.dat,可以在构造方法中看到__construct($...然后getlocation(ip地址)方法就可以获取到地址了

    THinkPHP获取客户端IP与IP地址查询的方法

    本文实例讲述了THinkPHP获取客户端IP与IP地址查询的方法。分享给大家供大家参考,具体如下: TP 中获取客户端IP地址的系统公共函数是:function get_client_ip()。返回值就是IP地址。 查询IP地址所在国家与地区的类...

    ThinkPHP中IP地址定位函数

    ThinkPHP中IP地址定位函数,用于获取用户的ip地址,实用

    UTFWry.dat(ThinkPHP IP定位地址库文件)

    UTFWry.dat是ThinkPHP框架中用于IP地址定位的一个数据文件,主要功能是根据输入的IP地址返回对应的位置信息,如国家、地区等。在Web开发中,IP定位功能常用于用户行为分析、访问统计、内容本地化以及安全防护等方面...

    thinkphp如何获取客户端IP

    以下是一个自定义的`get_client_ip()`函数示例,它综合了上述几种方法来获取IP地址: ```php function get_client_ip($type = 0) { $type = $type ? 1 : 0; static $ip = NULL; if ($ip !== NULL) return $ip[$...

    thinkphp UTFWry

    在Web开发中,有时我们需要根据用户的IP地址获取他们的来源地区、城市以及网络等信息,这对于数据分析、用户行为追踪或个性化服务提供具有重要意义。ThinkPHP作为一款广受欢迎的PHP框架,为我们提供了便捷的开发环境...

    Thinkphp5获取IP定位 qqwry.dat UTFWry.bat纯真IP库 IpLocation.php扩展

    本项目聚焦于使用Thinkphp5框架实现IP地址的定位功能,利用纯真IP库进行定位服务。以下是对这个主题的详细阐述: 首先,Thinkphp5是一个基于PHP语言的轻量级、高性能的MVC(Model-View-Controller)框架,它提供了...

    Thinkphp3.2.3 IpLocation和UTFWry.dat

    总结起来,这个压缩包提供的内容是关于如何在ThinkPHP3.2.3框架下实现IP地址的地理位置定位,通过`IpLocation`插件和`UTFWry.dat`数据文件,结合可能封装好的`IPLook`工具,开发者可以轻松地获取和处理IP地址相关的...

    PHP 获取访客的信息

    1. **$_SERVER全局变量**:PHP提供了一个内置的超全局数组`$_SERVER`,其中包含了关于HTTP请求的各种信息,如`REMOTE_ADDR`可以获取到访客的IP地址,`HTTP_USER_AGENT`则能获取到用户使用的浏览器及操作系统信息。...

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

    总结来说,在ThinkPHP框架中实现IP定位功能,涉及到下载和配置IP定位扩展类库,准备UTF8编码的IP地址库文件,通过内置函数获取用户IP,以及利用IpLocation类及其getlocation()方法获取并解析地理位置信息。...

    PHP中实现获取IP和地理位置类分享

    在代码示例中,类IP的构造函数首先使用GetIP函数获取IP地址,然后通过SINA接口获取地理位置信息。需要注意的是,由于SINA接口返回的数据可能包含中文字符,这里在返回数据前使用了iconv函数来转换编码格式,确保中文...

    基于thinkPHP框架实现留言板的方法

    // 获取IP地址的回调函数 } } ``` ### 知识点四:thinkPHP框架的注意事项 在使用thinkPHP进行CURD操作时,需要注意: - 均规定使用表名进行操作,这意味着在模型中不能直接使用数据库的别名,而应该明确指定表名...

    redis+thinkphp3.2.3

    在IT行业中,Redis和ThinkPHP是两个非常重要的技术组件,它们在开发高性能、高并发的Web应用时发挥着关键作用。下面将详细讲解这两个技术及其结合使用的方式。 **Redis** Redis是一个开源(BSD许可)的,内存数据...

    基于thinkphp3.2.3微信授权登录及分享至好友,朋友圈

    - 获取到Access Token后,你可以通过微信API的`sns/userinfo`接口获取用户的详细信息。但要注意,根据微信的隐私策略,某些信息可能需要用户额外授权才能获取。 4. **分享至微信好友和朋友圈**: - 分享功能主要...

    基于thinkphp3.2.3微信扫码登录

    4. **获取用户信息**:有了Access Token和OpenID,可以调用微信API获取用户的微信基本信息,如昵称、头像等。 5. **绑定用户**:如果用户首次登录,应用需要创建新用户并绑定OpenID;如果是老用户,查找已有的用户...

Global site tag (gtag.js) - Google Analytics