thinkphp获取ip地址及位置信息
2024-10-08 14:11:01
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。。。。。。。。
最新文章
- 《Linux内核设计与实现》读书笔记 第十八章 调试
- [vijos1002][NOIP2005]过河
- loadrunner11录制脚本打开IE9失败,浏览器崩溃,显示无法响应
- git add相关
- 关于Repeater中使用DorpWownList的问题
- 【视频】零基础学Android开发:蓝牙聊天室APP(二)
- svn switch 的用法
- c#和java中的方法覆盖——virtual、override、new
- .Net Core Session使用
- poj3320 (尺取法)
- 避免subList/subString陷阱
- pycharm的安装及用法
- 【重学计算机】操作系统D6章:并发程序设计
- 【GDOI2016模拟3.16】幂(容斥 + 模型复杂转化)
- 状态压缩动态规划 状压DP
- js的回调函数
- 基于springboot+bootstrap+mysql+redis搭建一套完整的权限架构【六】【引入bootstrap前端框架】
- python中base64编码与解码
- Win2012 R2虚拟机自激活(AVMA)技术
- RepositionBars的用法和参数的意义(引用别人的)
热门文章
- 【转载】掌握 HTTP 缓存——从请求到响应过程的一切(下)
- C# 简单的反射机制实例
- C# Regex正则常用方法的使用
- H.264 SVC
- Springboot使用FastJson后,接口返回中文乱码的问题解决。
- 【转】Python中的eval()、exec()及其相关函数
- 【vim】自动补全 Ctrl+n
- mysql授权报错 ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
- crontab定时作业
- C:malloc/calloc/realloc/alloca内存分配函数