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设计聊天室步步通
Oct 09 PHP
PHP新手上路(八)
Oct 09 PHP
php _autoload自动加载类与机制分析
Feb 10 PHP
php 批量替换程序的具体实现代码
Oct 04 PHP
初识laravel5
Mar 02 PHP
yii2中添加验证码的实现方法
Jan 09 PHP
解决PHP程序运行时:Fatal error: Maximum execution time of 30 seconds exceeded in的错误提示
Nov 25 PHP
PHP使用递归算法无限遍历数组示例
Jan 13 PHP
PHP命名空间namespace及use的简单用法分析
Aug 03 PHP
PHP从零开始打造自己的MVC框架之路由类实现方法分析
Jun 03 PHP
如何在centos8自定义目录安装php7.3
Nov 28 PHP
Yii框架组件的事件机制原理与用法分析
Apr 07 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
PHP实现自动对图片进行滚动显示的方法
2015/03/12 PHP
WAMP环境中扩展oracle函数库(oci)
2015/06/26 PHP
PHP图像裁剪缩略裁切类源码及使用方法
2016/01/07 PHP
phpcms的分类名称和类别名称的调用
2017/01/05 PHP
php修改数组键名的方法示例
2017/04/15 PHP
ThinkPHP实现附件上传功能
2017/04/27 PHP
php mysql数据库操作类(实例讲解)
2017/08/06 PHP
PHP排序算法之冒泡排序(Bubble Sort)实现方法详解
2018/04/20 PHP
PHP5.5新特性之yield理解与用法实例分析
2019/01/11 PHP
javascript 定义初始化数组函数
2009/09/07 Javascript
原生JS实现加入收藏夹的代码
2013/10/24 Javascript
jquery实现的鼠标拖动排序Li或Table
2014/05/04 Javascript
javascript解析json实例详解
2014/11/05 Javascript
JavaScript实现点击按钮字体放大、缩小
2016/02/29 Javascript
js判断输入字符串是否为空、空格、null的方法总结
2016/06/14 Javascript
jQuery实现节点的追加、替换、删除、复制功能示例
2017/07/11 jQuery
jQuery实现鼠标滑过商品小图片上显示对应大图片功能【测试可用】
2018/04/27 jQuery
javascript匿名函数中的'return function()'作用
2018/10/15 Javascript
js实现自定义滚动条的示例
2020/10/27 Javascript
Vue看了就会的8个小技巧
2021/01/21 Vue.js
python面向对象多线程爬虫爬取搜狐页面的实例代码
2018/05/31 Python
TensorFlow实现模型评估
2018/09/07 Python
python环境路径配置以及命令行运行脚本
2019/04/02 Python
美国百年历史早餐食品供应商:Wolferman’s
2017/01/18 全球购物
BISSELL官网:北美吸尘器第一品牌
2019/03/14 全球购物
英国领先的体验日提供商:Buyagift
2019/04/19 全球购物
意大利男装网店:Vrients
2019/05/02 全球购物
英国鲜花递送:Blossoming Gifts
2020/07/10 全球购物
绿化先进工作者事迹材料
2014/01/30 职场文书
读书活动总结
2014/04/28 职场文书
保护环境演讲稿
2014/05/10 职场文书
英语系毕业生求职信
2014/07/13 职场文书
规范化管理年活动总结
2014/08/29 职场文书
创业计划书之孕婴生活馆
2019/11/11 职场文书
基于HTML十秒做出淘宝页面
2021/10/24 HTML / CSS
【TED出品】天梯非主流开心游1700 划水骑士
2022/03/31 魔兽争霸