PHP之获取终端用户IP
//
function get_real_ip()
{
$ip=false;
$clientip = "clientip";
$xrealip = "xrealip";
$userip ='userip';
$fwip ='fwip';
$aliip = 'aliip';
$forwardedip ='forwardedip';
if(isset($_SERVER["HTTP_CLIENT_IP"]) && !empty($_SERVER['HTTP_CLIENT_IP']) && !preg_match("/^(10|172.16|192.168)./i",$_SERVER['HTTP_CLIENT_IP']) && $_SERVER["HTTP_CLIENT_IP"]!='118.26.171.83' && $_SERVER["HTTP_CLIENT_IP"]!='118.26.171.84')
{
$ip = $_SERVER["HTTP_CLIENT_IP"];
$clientip = $_SERVER["HTTP_CLIENT_IP"];
}
else if(isset($_SERVER["HTTP_X_REAL_IP"]) && !empty($_SERVER['HTTP_X_REAL_IP']) && !preg_match("/^(10|172.16|192.168)./i",$_SERVER['HTTP_X_REAL_IP']) && $_SERVER["HTTP_X_REAL_IP"]!='118.26.171.83' && $_SERVER["HTTP_X_REAL_IP"]!='118.26.171.84')
{
$ip = $_SERVER['HTTP_X_REAL_IP'];
$xrealip = $_SERVER["HTTP_X_REAL_IP"];
}
else if(isset($_SERVER["HTTP_USER_IP"]) && !empty($_SERVER['HTTP_USER_IP']) && !preg_match("/^(10|172.16|192.168)./i",$_SERVER['HTTP_USER_IP']) && $_SERVER["HTTP_USER_IP"]!='118.26.171.83' && $_SERVER["HTTP_USER_IP"]!='118.26.171.84')
{
$ip = $_SERVER['HTTP_USER_IP'];
$userip =$_SERVER['HTTP_USER_IP'];
}
else if(isset($_SERVER["HTTP_FW_ADDR"]) && !empty($_SERVER['HTTP_FW_ADDR']) && !preg_match("/^(10|172.16|192.168)./i",$_SERVER['HTTP_FW_ADDR']) && $_SERVER["HTTP_FW_ADDR"]!='118.26.171.83' && $_SERVER["HTTP_FW_ADDR"]!='118.26.171.84')
{
$ip = $_SERVER['HTTP_FW_ADDR'];
$fwip = $_SERVER["HTTP_FW_ADDR"];
}
else if(isset($_SERVER["HTTP_ALI_CDN_REAL_IP"]) && !empty($_SERVER['HTTP_ALI_CDN_REAL_IP']) && !preg_match("/^(10|172.16|192.168)./i",$_SERVER['HTTP_ALI_CDN_REAL_IP']) && $_SERVER["HTTP_ALI_CDN_REAL_IP"]!='118.26.171.83' && $_SERVER["HTTP_ALI_CDN_REAL_IP"]!='118.26.171.84')
{
$ip = $_SERVER['HTTP_ALI_CDN_REAL_IP'];
$aliip = $_SERVER["HTTP_ALI_CDN_REAL_IP"];
}
if(isset($_SERVER['HTTP_X_FORWARDED_FOR']) && !empty($_SERVER['HTTP_X_FORWARDED_FOR']))
{
$ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']);
if ($ip)
{
array_push($ips, $ip);
$ip = FALSE;
}
for ($i = 0; $i < count($ips); $i++)
{
if (isset($ips[$i]) && !preg_match("/^(10|172.16|192.168)./i", $ips[$i]) && $ips[$i]!='118.26.171.83' && $ips[$i]!='118.26.171.84')
{
$ip = $ips[$i];
break;
}
}
$forwardedip = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);
}
PHP之获取终端用户IP的更多相关文章
- PHP获取客户端IP
/** * 获取客户端IP */ function getClientIp() { $ip = 'unknown'; $unknown = 'unknown'; if (isset($_SERVER[ ...
- 获取 dhcp IP 过程分析 - 每天5分钟玩转 OpenStack(91)
前面我们已经讨论了 DHCP agent 的配置以及 namespace 如何隔离 dnsmasq 服务,本节将以 cirros-vm1 为例分析获取 DHCP IP 的详细过程. 在创建 insta ...
- C#服务器获取客户端IP地址以及归属地探秘
背景:博主本是一位Windows桌面应用程序开发工程师,对网络通信一知半解.一日老婆逛完某宝,问:"为什么他们知道我的地址呢,他们是怎么获取我的地址的呢?" 顺着这个问题我们的探秘 ...
- Linux下的C Socket编程 -- 获取对方IP地址
Linux下的C Socket编程(二) 获取域名对应的IP地址 经过上面的讨论,如果我们想要连接到远程的服务器,我们需要知道对方的IP地址,系统函数gethostbyname便能够实现这个目的.它能 ...
- Java获取用户ip
/** * 获取客户端ip地址(可以穿透代理) * * @param request * @return */ public static String getRemoteAddr(HttpServl ...
- 正确获取访问者ip
使用$_SERVER['REMOTE_ADDR']获取访问者ip具有局限性.比如访问者系统位于docker环境时,$_SERVER['REMOTE_ADDR']获取到的ip为虚拟ip,而不是我们真正需 ...
- 在Thinkphp3.2.3框架下实现自动获取客户端IP地址的get_client_ip()函数
在Thinkphp框架下使用get_client_ip()函数获取客户端IP地址十分方便: 一行代码便可以实现:$ip = get_client_ip(); 但当我们测试时会遇到后台获取的IP地址显示 ...
- Node.js、Express框架获取客户端IP地址
Node.js //传入请求HttpRequest function getClientIp(req) { return req.headers['x-forwarded-for'] || req.c ...
- 获取真实Ip地址
/** * @author zhoulongqin * @see 获取客户端ip * @param * @return 客户端ip(String) webserve ip不一定获取的到 */ publ ...
随机推荐
- 获取应用程序根目录物理路径(Web and Windows)
这两个计划写一个小类库,需要在不同项目下任意调用.该类库需要对磁盘文件进行读写,所以就需要获取程序执行的磁盘路径,就简单的对获取磁盘路径的方法进行研究. 借助搜索引擎,我从网上搜罗来多种方法,都可以直 ...
- 8个超实用的jQuery插件应用
自jQuery诞生以来,jQuery社区都在不断地.自发地为jQuery创建许许多多功能不一的插件应用,很多jQuery插件非常实用,对我们的前端开发帮助相当大,不仅可以更完美的完成指定功能,而且节省 ...
- 决策树1 -- ID3_C4.5算法
声明: 1.本篇为个人对<2012.李航.统计学习方法.pdf>的学习总结,不得用作商用.欢迎转载,但请注明出处(即:本帖地址). 2,因为本人在学习初始时有非常多数学知识都已忘记,因此为 ...
- 第四百节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署CentOS6.5安装python3.5.1
第四百节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署CentOS6.5安装python3.5.1 1.检查系统是否安装了python [root@192 ~]# rpm -qa ...
- PHP最全笔记(四)(值得收藏,不时翻看一下)
// 序列化(串行化) # 数据传输均是字符串类型 # 除了资源类型,均可序列化 # 序列化在存放数据时,存放数据本身,也存放数据类型 1.在网络传输数据时:2.为了将数组或对象放在磁盘时 # 序列化 ...
- Java使用SFTP协议上传、下载文件
http://blog.csdn.net/haidage/article/details/6859716 在自己尝试之后发现以上内容里有坑. 1.关闭连接的时候,必须要sftp.getSession( ...
- Java基础复习笔记基本排序算法
Java基础复习笔记基本排序算法 1. 排序 排序是一个历来都是很多算法家热衷的领域,到现在还有很多数学家兼计算机专家还在研究.而排序是计算机程序开发中常用的一种操作.为何需要排序呢.我们在所有的系统 ...
- ThinkingInJava 学习 之 0000004 初始化与清理
1. 用构造器确保初始化. 不接受任何参数的构造器叫做默认构造器. Tree tree = new Tree(12); 如果Tree(int)时Tree类的唯一的构造器,那么编译器将不会允许你以其他任 ...
- Web文件上传方法总结大全
1. 表单上传 这是传统的form表单上传,使用form表单的input[type=”file”]控件,可以打开系统的文件选择对话框,从而达到选择文件并上传的目的,它的好处是多浏览器兼容,它是web开 ...
- 【GIS】无人机影像数据关系换算(转)
----------------------------------------------------------------------------------------------- H=f× ...