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 (size=5)
'ip' => string '172.xxx.1.228' (length=12)
'beginip' => string '172.xxx.0.0' (length=10)
'endip' => string '172.xxx.255.255' (length=14)
'country' => string '局域网' (length=9)
'area' => string '对方和您在同一内部网' (length=30)

因为手机连的电脑wifi。。。。。。。。

最新文章

  1. 《Linux内核设计与实现》读书笔记 第十八章 调试
  2. [vijos1002][NOIP2005]过河
  3. loadrunner11录制脚本打开IE9失败,浏览器崩溃,显示无法响应
  4. git add相关
  5. 关于Repeater中使用DorpWownList的问题
  6. 【视频】零基础学Android开发:蓝牙聊天室APP(二)
  7. svn switch 的用法
  8. c#和java中的方法覆盖——virtual、override、new
  9. .Net Core Session使用
  10. poj3320 (尺取法)
  11. 避免subList/subString陷阱
  12. pycharm的安装及用法
  13. 【重学计算机】操作系统D6章:并发程序设计
  14. 【GDOI2016模拟3.16】幂(容斥 + 模型复杂转化)
  15. 状态压缩动态规划 状压DP
  16. js的回调函数
  17. 基于springboot+bootstrap+mysql+redis搭建一套完整的权限架构【六】【引入bootstrap前端框架】
  18. python中base64编码与解码
  19. Win2012 R2虚拟机自激活(AVMA)技术
  20. RepositionBars的用法和参数的意义(引用别人的)

热门文章

  1. 【转载】掌握 HTTP 缓存——从请求到响应过程的一切(下)
  2. C# 简单的反射机制实例
  3. C# Regex正则常用方法的使用
  4. H.264 SVC
  5. Springboot使用FastJson后,接口返回中文乱码的问题解决。
  6. 【转】Python中的eval()、exec()及其相关函数
  7. 【vim】自动补全 Ctrl+n
  8. mysql授权报错 ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
  9. crontab定时作业
  10. C:malloc/calloc/realloc/alloca内存分配函数