PHP获取真实客户端的真实IP


Posted in PHP onMarch 07, 2017

REMOTE_ADDR 是你的客户端跟你的服务器“握手”时候的IP。如果使用了“匿名代理”,REMOTE_ADDR将显示代理服务器的IP。

HTTP_CLIENT_IP 是代理服务器发送的HTTP头。如果是“超级匿名代理”,则返回none值。同样,REMOTE_ADDR也会被替换为这个代理服务器的IP。

$_SERVER['REMOTE_ADDR']; //访问端(有可能是用户,有可能是代理的)IP

$_SERVER['HTTP_CLIENT_IP']; //代理端的(有可能存在,可伪造)

$_SERVER['HTTP_X_FORWARDED_FOR']; //用户是在哪个IP使用的代理(有可能存在,也可以伪造)

三个值区别如下:

一、没有使用代理服务器的情况:

REMOTE_ADDR = 您的 IP

HTTP_VIA = 没数值或不显示

HTTP_X_FORWARDED_FOR = 没数值或不显示

二、使用透明代理服务器的情况:Transparent Proxies

REMOTE_ADDR = 最后一个代理服务器 IP

HTTP_VIA = 代理服务器 IP

HTTP_X_FORWARDED_FOR = 您的真实 IP ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

这类代理服务器还是将您的信息转发给您的访问对象,无法达到隐藏真实身份的目的。

三、使用普通匿名代理服务器的情况:Anonymous Proxies

REMOTE_ADDR = 最后一个代理服务器 IP

HTTP_VIA = 代理服务器 IP

HTTP_X_FORWARDED_FOR = 代理服务器 IP ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

隐藏了您的真实IP,但是向访问对象透露了您是使用代理服务器访问他们的。

四、使用欺骗性代理服务器的情况:Distorting Proxies

REMOTE_ADDR = 代理服务器 IP

HTTP_VIA = 代理服务器 IP

HTTP_X_FORWARDED_FOR = 随机的 IP ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

告诉了访问对象您使用了代理服务器,但编造了一个虚假的随机IP代替您的真实IP欺骗它。

五、使用高匿名代理服务器的情况:High Anonymity Proxies (Elite proxies)

REMOTE_ADDR = 代理服务器 IP

HTTP_VIA = 没数值或不显示

HTTP_X_FORWARDED_FOR = 没数值或不显示 ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

完全用代理服务器的信息替代了您的所有信息,就象您就是完全使用那台代理服务器直接访问对象。

//获取用户IP
$ip = '';
foreach (array('HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_FROM', 'REMOTE_ADDR') as $v) {
  if (isset($_SERVER[$v])) {
    if (! preg_match('/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/', $_SERVER[$v])) {
        continue;
  } 
     $ip = $_SERVER[$v];
  }
}
uset($ip,$v);

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

PHP 相关文章推荐
PHP安全防范技巧分享
Nov 03 PHP
php替换超长文本中的特殊字符的函数代码
May 22 PHP
php cc攻击代码与防范方法
Oct 18 PHP
Drupal读取Excel并导入数据库实例
Mar 02 PHP
php中解析带中文字符的url函数分享
Jan 20 PHP
PHP接口继承及接口多继承原理与实现方法详解
Oct 18 PHP
Laravel 加载第三方类库的方法
Apr 20 PHP
PHP基于curl模拟post提交json数据示例
Jun 22 PHP
PHP实现数组和对象的相互转换操作示例
Mar 20 PHP
php中对象引用和复制实例分析
Aug 14 PHP
PHP实现新型冠状病毒疫情实时图的实例
Feb 04 PHP
禁止直接访问php文件代码分享
May 05 PHP
php实现简单加入购物车功能
Mar 07 #PHP
mac os快速切换多个PHP版本的方法
Mar 07 #PHP
PHP + plupload.js实现多图上传并显示进度条加删除实例代码
Mar 06 #PHP
PHP实现添加购物车功能
Mar 06 #PHP
PHP自动补全表单的两种方法
Mar 06 #PHP
PHP中for循环与foreach的区别
Mar 06 #PHP
微信公众平台开发-微信服务器IP接口实例(含源码)
Mar 05 #PHP
You might like
PHP5中的this,self和parent关键字详解教程
2007/03/19 PHP
Zend Framework实现多文件上传功能实例
2016/03/21 PHP
redis+php实现微博(二)发布与关注功能详解
2019/09/23 PHP
thinkphp5 + ajax 使用formdata提交数据(包括文件上传) 后台返回json完整实例
2020/03/02 PHP
用js脚本控制asp.net下treeview的NodeCheck的实现代码
2010/03/02 Javascript
js捕获鼠标右键菜单中的粘帖事件实现代码
2013/04/01 Javascript
纯文字版返回顶端的js代码
2013/08/01 Javascript
探讨jQuery的ajax使用场景(c#)
2013/12/03 Javascript
js正则表达exec与match的区别说明
2014/01/29 Javascript
jQuery中val()方法用法实例
2014/12/25 Javascript
javascript计时器详解
2015/02/28 Javascript
Angular中$compile源码分析
2016/01/28 Javascript
详解用node搭建简单的静态资源管理器
2017/08/09 Javascript
vue 挂载路由到头部导航的方法
2017/11/13 Javascript
详解Vue + Vuex 如何使用 vm.$nextTick
2017/11/20 Javascript
JS判断字符串是否为整数的方法--简单的正则判断
2018/07/23 Javascript
javascript数据结构之多叉树经典操作示例【创建、添加、遍历、移除等】
2018/08/01 Javascript
Vue-component全局注册实例
2018/09/06 Javascript
浅谈layui 绑定form submit提交表单的注意事项
2019/10/25 Javascript
angular inputNumber指令输入框只能输入数字的实现
2019/12/03 Javascript
原生js+canvas实现贪吃蛇效果
2020/08/02 Javascript
JavaScript代码模拟鼠标自动点击事件示例
2020/08/07 Javascript
浅析JavaScript预编译和暗示全局变量
2020/09/03 Javascript
Vue仿Bibibili首页的问题
2021/01/21 Vue.js
利用Python中的pandas库对cdn日志进行分析详解
2017/03/07 Python
基于python进行桶排序与基数排序的总结
2018/05/29 Python
Python PyQt5整理介绍
2020/04/01 Python
pyecharts在数据可视化中的应用详解
2020/06/08 Python
python中的列表和元组区别分析
2020/12/30 Python
一款纯css3实现的鼠标经过按钮特效教程
2014/11/09 HTML / CSS
美国创意礼品网站:UncommonGoods
2017/02/03 全球购物
客服部班长工作责任制
2014/02/25 职场文书
小学科学教学计划
2015/01/21 职场文书
导游词之寿县报恩寺
2020/01/19 职场文书
Python之基础函数案例详解
2021/08/30 Python
Python时间操作之pytz模块使用详解
2022/06/14 Python