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 25 PHP
ecshop 订单确认中显示省市地址信息的方法
Mar 15 PHP
apache和php之间协同工作的配置经验分享
Apr 08 PHP
php获取目录所有文件并将结果保存到数组(实例)
Oct 25 PHP
php加速器eAccelerator的配置参数、API详解
May 05 PHP
php输出全球各个时区列表的方法
Mar 31 PHP
PHP检测用户语言的方法
Jun 15 PHP
Yii数据库缓存实例分析
Mar 29 PHP
YII中Ueditor富文本编辑器文件和图片上传的配置图文教程
Mar 15 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
Nov 17 PHP
PHP面向对象五大原则之里氏替换原则(LSP)详解
Apr 08 PHP
PHP反射原理与用法深入分析
Sep 28 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
S900/ ETON E1-XM 收音机
2021/03/02 无线电
用sql命令修改数据表中的一个字段为非空(not null)的语句
2010/06/04 PHP
PHP将DateTime对象转化为友好时间显示的实现代码
2011/09/20 PHP
php中inlcude()性能对比详解
2012/09/16 PHP
深入浅析yii2-gii自定义模板的方法
2016/04/26 PHP
JScript中使用ADODB.Stream判断文件编码的代码
2008/06/09 Javascript
csdn 博客中实现运行代码功能实现
2009/08/29 Javascript
js 字符串转换成数字的三种方法
2013/03/23 Javascript
浅谈JavaScript数据类型及转换
2015/02/28 Javascript
JQuery页面地址处理插件jqURL详解
2015/05/03 Javascript
基于jQuery实现仿百度首页换肤背景图片切换代码
2015/08/25 Javascript
JavaScript必知必会(九)function 说起 闭包问题
2016/06/08 Javascript
JS原型链 详解及示例代码
2016/09/06 Javascript
老生常谈js中0到底是 true 还是 false
2017/03/08 Javascript
基于vue实现多引擎搜索及关键字提示
2017/03/16 Javascript
浅析Visual Studio Code断点调试Vue
2018/02/27 Javascript
Koa项目搭建过程详细记录
2018/04/12 Javascript
vue中如何让子组件修改父组件数据
2018/06/14 Javascript
在Python的Django框架中使用通用视图的方法
2015/07/21 Python
python中ASCII码和字符的转换方法
2018/07/09 Python
对python当中不在本路径的py文件的引用详解
2018/12/15 Python
对Xpath 获取子标签下所有文本的方法详解
2019/01/02 Python
详解python实现小波变换的一个简单例子
2019/07/18 Python
手动安装python3.6的操作过程详解
2020/01/13 Python
Django 自定义权限管理系统详解(通过中间件认证)
2020/03/11 Python
基于python实现FTP文件上传与下载操作(ftp&sftp协议)
2020/04/01 Python
python如何支持并发方法详解
2020/07/25 Python
加拿大国民体育购物网站:National Sports
2018/11/04 全球购物
亚洲在线旅行门户网站:Expedia.com.hk(智游网)
2020/04/14 全球购物
大二自我鉴定范文
2013/10/05 职场文书
演讲稿祖国在我心中
2014/05/04 职场文书
2014年有孩子的离婚协议书范本
2014/10/08 职场文书
2016大学迎新晚会开场白
2015/11/24 职场文书
在Python中如何使用yield
2021/06/07 Python
一条 SQL 语句执行过程
2022/03/17 MySQL
JS前端宏任务微任务及Event Loop使用详解
2022/07/23 Javascript