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 相关文章推荐
从零开始 教你如何搭建Discuz!4.1论坛
Jul 07 PHP
php4的session功能评述(三)
Oct 09 PHP
在php中判断一个请求是ajax请求还是普通请求的方法
Jun 28 PHP
基于php设计模式中单例模式的应用分析
May 15 PHP
浅析PHP原理之变量分离/引用(Variables Separation)
Aug 09 PHP
PHP中使用sleep函数实现定时任务实例分享
Aug 21 PHP
用 Composer构建自己的 PHP 框架之设计 MVC
Oct 30 PHP
PHP的压缩函数实现:gzencode、gzdeflate和gzcompress的区别
Jan 27 PHP
thinkphp查询,3.X 5.0方法(亲试可行)
Jun 17 PHP
PHP安装BCMath扩展的方法
Feb 13 PHP
PHP连续签到功能实现方法详解
Dec 04 PHP
关于PhpStorm设置点击编辑文件自动定位源文件的实现方式
Dec 30 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
哪吒敖丙传:新人物二哥敖乙出场 小敖丙奶气十足
2020/03/08 国漫
PHP简单系统数据添加以及数据删除模块源文件下载
2008/06/07 PHP
PHP基于XMLWriter操作xml的方法分析
2017/07/17 PHP
PHP实现微信提现(企业付款到零钱)
2019/08/01 PHP
TP5框架使用QueryList采集框架爬小说操作示例
2020/03/26 PHP
Js组件的一些写法
2010/09/10 Javascript
javascript:void(0)是什么意思及href=#与href=javascriptvoid(0)的区别
2015/11/13 Javascript
javascript获取网页各种高宽及位置的方法总结
2016/07/27 Javascript
jsTree使用记录实例
2016/12/01 Javascript
Bootstrap BootstrapDialog使用详解
2017/02/17 Javascript
微信小程序 页面跳转及数据传递详解
2017/03/14 Javascript
[js高手之路]从原型链开始图解继承到组合继承的产生详解
2017/08/28 Javascript
jQuery实现鼠标拖动图片功能
2021/03/04 jQuery
[02:41]DOTA2英雄基础教程 冥魂大帝
2014/01/16 DOTA
[38:27]完美世界DOTA2联赛PWL S2 Forest vs FTD.C 第二场 11.26
2020/11/30 DOTA
python进阶教程之异常处理
2014/08/30 Python
python删除列表中重复记录的方法
2015/04/28 Python
Python 3.x读写csv文件中数字的方法示例
2017/08/29 Python
Python使用cx_Oracle模块操作Oracle数据库详解
2018/05/07 Python
简单了解python变量的作用域
2019/07/30 Python
django创建超级用户过程解析
2019/09/18 Python
使用Python打造一款间谍程序的流程分析
2020/02/21 Python
python 实现rolling和apply函数的向下取值操作
2020/06/08 Python
Python+Dlib+Opencv实现人脸采集并表情判别功能的代码
2020/07/01 Python
突袭HTML5之Javascript API扩展5—其他扩展(应用缓存/服务端消息/桌面通知)
2013/01/31 HTML / CSS
Dockers鞋官网:Dockers Shoes
2018/11/13 全球购物
意大利单身交友网站:Meetic
2020/07/12 全球购物
保送生自荐信范文
2013/10/06 职场文书
管理部部长岗位职责
2013/12/05 职场文书
关于安全的标语
2014/06/10 职场文书
三下乡个人总结
2015/03/04 职场文书
创先争优活动个人总结
2015/03/04 职场文书
观后感的写法
2015/06/19 职场文书
社会心理学学习心得体会
2016/01/22 职场文书
致创业您:正能量激励人心句子(48条)
2019/08/15 职场文书
css3应用示例:新增的选择器
2022/03/16 HTML / CSS