摘要:
利用getenv获取获取用户真实ip可以获取相当可观的用户数据,不管是做大数据还是数据备份查找来源,都是不错的选择.

好处:
一个网站,获取用户是非常有必要的,你获得了ip可以干嘛?简单了说,它只是显示一个地方,但如果这个ip数据足够大了.对一个网站来说好处可就大大的有了,做大数据,准确营销,假如你是购物网站,你肯定想让商品卖给需要它的人,而不是像超市一样哪里人多往哪开.也不会跑到寺庙卖梳子(把梳子卖给和尚属于骗人).

用法:
此方法不仅仅可以获取来访者IP,就算是国外的IP一样可以获取.甚至挂了vpn的客户端一样能获取到.

这里我们用超全局变量$_SERVER[‘REMOTE_ADDR’],它是你的客户端跟你的服务器”握手”时候的IP。如果使用了”匿名代理”,REMOTE_ADDR将显示代理服务器的IP。

当然,web服务器下,也有不用REMOTE_ADDR的,比如IIS服务器,用的是CLIENT_IP代表客户的IP,如果某人使用了代理,如何获取?HTTP_X_FORWARDED这个可以做到.当然,用这个东西会有一定的安全问题,我们下一篇文章再讨论.

web服务器很多都不允许获取它的服务器信息的,我们就可以用getenv去获取.

代码如下:

//不同环境下获取真实的IP
function get_ip(){//判断服务器是否允许$_SERVERif(isset($_SERVER)){    if(isset($_SERVER[HTTP_X_FORWARDED_FOR])){$realip = $_SERVER[HTTP_X_FORWARDED_FOR];}elseif(isset($_SERVER[HTTP_CLIENT_IP])) {$realip = $_SERVER[HTTP_CLIENT_IP];}else{$realip = $_SERVER[REMOTE_ADDR];}}else{//不允许就使用getenv获取  if(getenv("HTTP_X_FORWARDED_FOR")){$realip = getenv( "HTTP_X_FORWARDED_FOR");}elseif(getenv("HTTP_CLIENT_IP")) {$realip = getenv("HTTP_CLIENT_IP");}else{$realip = getenv("REMOTE_ADDR");}}return $realip;
}      

为了防止重复运行代码或者重复的来访者IP,我们可以放在静态变量中.只需要在代码前面加如下面代码:

static $realip = NULL;
if($realip !== NULL){return $realip;
}

PHP获取客户端真实IP的方法相关推荐

  1. 获取客户端真实ip的方法

    为什么需要获取客户端真实ip ip地址是按地域分布的,服务器获取到客户端ip后可以做流量统计和分析,服务器也可以针对客户端ip做一些定制化的功能,比如限流和黑白名单. 网络环境十分复杂,客户端发出的一 ...

  2. Java从代理服务器中获取客户端真实IP的方法

    概要 一般在单机版的tomcat获取请求来源的ip,可以使用下面方式这么干,下文的request是HttpServletRequest对象. String remoteAddr = request.g ...

  3. python获取客户端ip_各种脚本语言获取客户端真实IP的方法

    各种语言获取客户端真是ip的方法 1.PHP脚本获取客户端真实ip的方法 整体思路:需要依次检查HTTP_CLIENT_IP.HTTP_X_FORWARDED_FOR.REMOTE_ADDR这三个是否 ...

  4. 获取客户端真实 IP

    Tomcat + Nginx 反向代理获取客户端真实IP.域名.协议.端口 Nginx 反向代理后,Servlet 应用通过 request.getRemoteAddr() 取到的 IP 是 Ngin ...

  5. Java正确获取客户端真实IP方法整理

    转载自 干货:Java正确获取客户端真实IP方法整理 在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了Apach ...

  6. PHP获取客户端真实IP地址的方法

    php获取客户端IP地址有四种方法,这五种方法分别为 1 2 3 4 REMOTE_ADDR HTTP_CLIENT_IP HTTP_X_FORWARDED_FOR HTTP_VIA REMOTE_A ...

  7. 获取客户端真实IP方法

    2019独角兽企业重金招聘Python工程师标准>>> 我们经常会记录审计日志,那么如何获取客户端真实IP呢?让我们了解一下HTTP协议头吧. 在讨论获取客户端IP 地址前,我们首先 ...

  8. 获取客户端真实IP地址

    Java-Web获取客户端真实IP: 发生的场景:服务器端接收客户端请求的时候,一般需要进行签名验证,客户端IP限定等情况,在进行客户端IP限定的时候,需要首先获取该真实的IP. 一般分为两种情况: ...

  9. 如何获取客户端真实 IP?从 Gin 的一个 Bug 说起

    1. 背景 请求 IP 作为用户的身份标识属性之一,是一种非常重要的基础数据.在很多场景下,我们会基于客户端请求 IP 去做网络安全攻击防范或访问风险控制.通常我们可以通过 HTTP 协议 Reque ...

最新文章

  1. windows10下使用virtualenv虚拟技术,管理多个python版本,多个项目包环境
  2. elasticsearch给IK分词器添加自定义词汇
  3. Linux学习总结(五十四)LVS nat 模式搭建
  4. java cst gmt_“CST”和“GMT”时间的区别?
  5. why approver preview in Document builder is empty
  6. 支付宝为何放弃社交梦?
  7. mac中rabbitmq的安装
  8. linux下使用过的命令总结(未整理完)
  9. jquery mobile页面跳转后js不执行的问题
  10. 牛客网 F-The Biggest Water Problem
  11. 雅虎团队经验:网站页面性能优化的 34条
  12. #STM32 LCD12864编程即原理介绍
  13. 数据挖掘学习--主成分分析
  14. xshell 密钥身份验证_使用密钥斗篷和大使边缘堆栈进行集中式身份验证
  15. 几何基础 罗德里格公式
  16. form表单下的button不设置type会自动提交表单
  17. mysql cast()与convert() 函数
  18. addEventListener和addListener的区别
  19. 解决es查询异常:lasticsearch exception [type=illegal_argument_exception, reason=Can‘t load fielddata on....
  20. 2021年中国电动剃须刀行业发展现状分析,行业高端化趋势明显「图」

热门文章

  1. linux中tftp服务器设置及测试
  2. Linux下的常用编程工具初探
  3. ps如何批量处理图片
  4. IOS课程期末项目报告
  5. 对话《财富》40U40|闪马智能创始人兼CEO彭垚:人口、变局与下一代智慧系统
  6. IT桔子 - 千里马俱乐部
  7. 人工智能实战第三次作业 焦宇恒
  8. 《大学“电路分析基础”课程实验合集.实验五》丨线性有源二端网络等效电路的研究
  9. 运载火箭飞行控制系统设计
  10. 课程学习:让神经机器翻译模型像人类一样学习