工作中经常会有有获得用户真实ip的情况,HTTP_X_FORWARDED_FOR总是忘记,所以我这里记录下来吧.

在PHP 中使用 [“REMOTE_ADDR”] 来取得客户端的 IP 地址,但如果客户端是使用代理服务器来访问,如果要获取真正的ip就需要使用[‘HTTP_X_FORWARDED_FOR’].

if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
}elseif($_SERVER['REMOTE_ADDR']!=''){
$ip = $_SERVER['REMOTE_ADDR'];
}else{
return $_SERVER['HTTP_CLIENT_IP'];
}

以下引用 https://www.cnblogs.com/andhm/archive/2010/12/18/1910030.html
1.REMOTE_ADDR:浏览当前页面的用户计算机的ip地址.
2.HTTP_X_FORWARDED_FOR: 浏览当前页面的用户计算机的网关.
3.HTTP_CLIENT_IP:客户端的ip.

获取用户IP地址的三个属性的区别 (HTTP_X_FORWARDED_FOR,HTTP_VIA,REMOTE_ADDR)
一、没有使用代理服务 器的情况:

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,但是向访问对象透露了您是使用代理服务器访问他们的。

最新文章

  1. springmvc SSM shiro redis 后台框架 多数据源 代码生成器
  2. hibernate一对一主键单向关联
  3. 使用签名来保证ASP.NET MVC OR WEBAPI的接口安全
  4. DatatableToJson JsonToDatatable
  5. hive 基本语法
  6. 使用jar命令打war包
  7. mysql join 查询图
  8. linux笔记:文件编辑器vim
  9. getHibernateTemplate().find()
  10. 记录:sea.js和require.js配置 与 性能对比
  11. POJ1032 Parliament(数论)
  12. JDK8的新特性——Lambda表达式
  13. IOS高级开发之多线程(四)NSOperation
  14. --- Android 设置为A2DP 接收器
  15. HTTP的缓存策略
  16. 【转】用emWin进度条控件做个表盘控件,效果不错
  17. Gym - 101002K:YATP (树分治+二分+斜率优化)
  18. es6(16)--Decorator
  19. mysql学习之路_基础知识
  20. Cygwin--unix/linux模拟环境

热门文章

  1. Python—其它模块
  2. LG4824 「USACO2015FEB」(Silver)Censoring KMP+栈
  3. luoguP4719 【模板】动态 DP
  4. 【2019.8.12 慈溪模拟赛 T1】钥匙(key)(暴力DP)
  5. Tomca原理分析之责任链
  6. HTML连载31-制作一个百度首页
  7. Loj #2568. 「APIO2016」烟花表演
  8. python生成多维数组方法总结(多维创建有问题的情况)
  9. RHCE实验记录总结-2-RHCE
  10. 如何在 C# 中自定义 Comparer,以实现按中文拼音(a-z)来排序