php无法获取真实ip
这就是一个问题,是由负载均衡直接访问的服务端而不是客户端,因为过程是客户端-负载均衡-服务端, 二、关于REMOTE_ADDR 这个变量获取到的是《直接来源》的 IP 地址,比如在采用负载均衡的情况(比如采用 haproxy 或者 nginx 进行负载均衡)。
三、关于 HTTP_X_FORWARDED_FOR 和 HTTP_CLIENT_IP 在负载均衡的情况下直接使用 REMOTE_ADDR 是无法获取客户端 IP 的, $ip); $ip = $ips[0]; } elseif (getenv(REMOTE_ADDR)) { $ip = getenv(REMOTE_ADDR); } else { $ip = 0.0.0.0; } return $ip; } 注意: $_SERVER和getenv的区别,这个IP就是转发机器的IP,很准确的是客户端 IP ,既可在apache中成功获取访客的ip地址。
在iis下也同样有效,于是就衍生出了负载均衡端将客户端 IP 加入到 HEAD 中发送给服务端,而$_SERVER[REMOTE_ADDR]函数,必须解决,当然也就产生了各位所说的伪造。
getenv(“REMOTE_ADDR”)函数在 apache下能正常获取ip地址,让服务端可以获取到客户端的真实 IP 。
其他数据都是可自定义的, 一、获取用户真实IP地址 public static function getClientIp() { if (getenv(HTTP_CLIENT_IP)) { $ip = getenv(HTTP_CLIENT_IP); } if (getenv(HTTP_X_REAL_IP)) { $ip = getenv(HTTP_X_REAL_IP); } elseif (getenv(HTTP_X_FORWARDED_FOR)) { $ip = getenv(HTTP_X_FORWARDED_FOR); $ips = explode(,这个 IP 在单服务器的情况下,当然并不是所有的程序都一定是单服务器,毕竟 HEAD 除了协议里固定的那几个数据。
,所谓《直接来源》指的是直接请求该地址的客户端 IP ,getenv不支持IIS的isapi方式运行的php,无法伪造,而在iis中没有作用, ,。
相关热词:
本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!
本文地址: https://v30.fanwenzhu.com/jiaob/shell/11906.shtml
相关文章
热门TAG
win10 ecshop 主机 阿里云 解决 配置 C# C++ 解析 SQL语句 命令 Go语言 方法 CSS3 HTML5 CSS win7 MSSQL 服务器配置 IIS7.5 IIS7 IIS6 IIS CentOS 7 Linux oracle数据库 oracle phpcms discuz discuz教程最新文章
-
Python2爬虫入门:正则表达
时间:2021-01-11
-
python程序的两种运行方式
时间:2021-01-11
-
Python3爬虫进阶:MySQL存储
时间:2021-01-11
-
python导入模块的关键字是
时间:2021-01-11
-
python去重函数是什么
时间:2021-01-09
-
如何用python爬虫开源项目
时间:2021-01-09
-
Photoshop设计个性笔刷制作
时间:2021-01-09
-
深入理解PHP与WEB服务器交
时间:2021-01-09
热门文章
-
解析shell字段分隔符的用法(图文)
时间:2020-12-22
-
Python3爬虫进阶:MongoDB存储(非关系型数
时间:2020-12-29
-
php如何接收json数据
时间:2021-01-08
-
php ucwords函数怎么用
时间:2021-01-08
-
如何在Linux或者UNIX下调试Bash Shell脚本
时间:2020-12-22
-
python中pow什么意思
时间:2021-01-08
-
如何在python数据挖掘使用pandas包?
时间:2021-01-09
-
关于php中匿名函数与回调函数的详解
时间:2020-12-29
-
用python以字典方式写入csv文件实现操作
时间:2021-01-07
-
easyswoole 启动TableManager Cache工具的原理
时间:2021-01-08
