首页/新闻资讯/正文详情

PHP 获取客户端真实IP地址

发布时间:2026/9/26 21:38:48 来源:云帆数科 栏目:资讯中心
PHP 获取客户端真实IP地址
PHP获取客户端真实IP地址需要根据具体的服务器环境来确定使用哪种方法。目前搜索到的方法大多是直接贴代码没有针对不同情况作出说明有可能导致系统被假IP骗过IP欺骗。很多文章都提到“无法保证获取到的访客IP地址100%准确”是否意味着PHP获取访客IP一定有漏洞可钻呢只要根据实际部署情况选择相对应的代码获取访客IP地址是可以确保程序不被假IP欺骗的。PHP的运行方式PHP支持非常多的运行方式例如php-cgi、php-fpm、swoole、php-cli、php-mod等。其中php-fpm是php的fast-cgi的进程管理器。php-mod通常配合Apache使用而php-fpm通常配合Nginx使用。从PHP5.4开始PHP甚至可以以内置PHP服务Buid-in web server方式运行。逐渐的PHP形成了很多经典搭配例如LAMP、LNMP、LNMPA、IISPHP。无论采用哪种PHP运行方式分清是谁传递IP给PHP程序即可。这里对几种常见环境进行分析。无代理层PHP内置服务器/swoole由于客户端IP数据是从TCP/IP协议层传递过来的因此在没有中间代理客户端和服务器直连的情况下可以直接通过标准方法REMOTE_ADDR获得与PHP直接通讯的IP地址。例如$_SERVER[REMOTE_ADDR]或getenv(REMOTE_ADDR)。而在swoole中可以通过$request-server[remote_addr]获得客户端IP地址。在这种情况下REMOTE_ADDR不可以显式的伪造获取到的是实际与服务器连接的IP地址是可靠的。Nginx代理Nginx php-fpm / Nginx swoole常见的LNMP方案属于Nginx反向代理。Nginx与php的通讯无论unix socket方式还是tcp socket方式都跟Nginx的Header配置有关系。1234567proxy_http_version 1.1;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header Host $http_host;proxy_set_header X-NginX-Proxy true;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection upgrade;可以在第一层nginx代理设置proxy_set_header X-Forwarded-For $remote_addr其他层nginx代理设置proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for这样就可以通过X-Forwarded-For获取客户端真实IP地址。如果设置了X-Real-IP $remote_addr则通过X-Real-IP获取客户端IP地址。PHP代码12345// php-fpm等$_SERVER[HTTP_X_FORWARDED_FOR]);// swoole$this-http_input-header(x-real-ip);总结来说当有Nginx代理的情况下需要根据具体配置来选择获取的Header从而正确获取客户端IP地址此时PHP中的的REMOTE_ADDR可能是最后一级代理的IP地址。Apache代理Apache php_mod / Apache php-fpm通常在Apache PHP方案中获取IP地址取决于Apache配置信息。绝大部分情况可以使用$_SERVER[REMOTE_ADDR]获取到真实客户端IP地址。如果Apache上级存在Nginx那么可以在Apache中使用mod_rpaf模块将客户端IP地址传递到X-Forwarded-For头中。1PAFheader X-Forwarded-For负载均衡/云虚拟机/Serverless在负载均衡条件下需要查阅对应负载均衡程序的文档来决定使用哪种方法获取真实客户端IP地址。在大部分虚拟主机、负载均衡及无服务器中可以通过HTTP_CLIENT_IP、HTTP_X_FORWARDED_FOR或X-REAL-IP其一得知客户端IP地址。但是不建议对多种来源进行空值判断这样容易被伪造者利用从而实现IP欺骗。目前并未有标准规定将客户端IP地址放入名为CLIENT_IP的环境变量但是有不少老虚拟主机供应商这样做。新的提供商都不再使用该环境变量。网上大量的PHP文章中都是优先获取HTTP_CLIENT_IP的值因此导致网上存在大量的服务器可以被伪造IP欺骗。可能有该漏洞的代码123456?phpif(!empty($_SERVER[HTTP_CLIENT_IP])) {$ip$_SERVER[HTTP_CLIENT_IP];}elseif(isset($_SERVER[REMOTE_ADDR]) $_SERVER[REMOTE_ADDR] strcasecmp($_SERVER[REMOTE_ADDR],unknown)) {$ip$_SERVER[REMOTE_ADDR];}IIS PHP这种情况下直接使用$_SERVER[REMOTE_ADDR]方法即可。总结无论是哪种情况如果用户使用匿名代理访问服务器只能获取到代理服务器的IP地址其IP地址仍然具有参考意义。获取客户端真实IP地址此事需要查阅相关资料根据具体情况选用某一个方法而不是复制粘贴。部分方法获取到的值可能是一个数组。不建议对获取到的IP地址进行正则过滤有可能你获取到的是一个IPv6地址。

相关推荐

化工时序预测实战:从DCS数据清洗到工艺约束建模
化工时序预测实战:从DCS数据清洗到工艺约束建模

简介:本资源是一个面向化工过程建模与智能预测方向的实战项目,适用于高校过程控制、化学工程及工业大数据相关专业的高年级本科生与研究生,以及从事化工生产优化的工程师。项目聚焦于利用历史检验数据构建产品质量多指标预测模型,… · 2026/9/26 21:38:48

Unity游戏内存防修改:八槽密文阵保护数值不被Cheat Engine篡改
Unity游戏内存防修改:八槽密文阵保护数值不被Cheat Engine篡改

说实话,我见过太多 Unity 项目栽在同一个坑上:游戏上线第二天,玩家群里就有人晒出 999999999 金币的截图;后台一看,不是服务器流水里的正常数据,是客户端内存被内存修改器直接改了。在 Unity 里&#xff0c… · 2026/9/26 21:38:48

Sublime Text关闭自动更新提示的三种安全方案
Sublime Text关闭自动更新提示的三种安全方案

1. 为什么Sublime Text的自动更新提示让人烦躁——从软件设计逻辑到用户真实痛点Sublime Text作为一款被程序员、前端工程师、技术文档写手长期信赖的轻量级代码编辑器,其核心魅力在于“快、稳、不打扰”。但自Sublime Text 4发布以来,尤其是4200系列&am… · 2026/9/26 21:38:48

拒绝丑模板!在门户网站管理建设工作讲话图解步骤全解
拒绝丑模板!在门户网站管理建设工作讲话图解步骤全解

拒绝丑模板!在门户网站管理建设工作讲话图解步骤全解 别再对着那个一眼假的 Bootstrap 模板抓头了,真的,模板网站太丑不够用是大多数创业团队负责人的噩梦。你花大价钱买的“企业级解决方案”,上线后客户第一反应往往是:“这网站是十年前的吧… · 2026/9/27 0:12:39

企业网站seo排名优化哪家好?5步实操避坑指南
企业网站seo排名优化哪家好?5步实操避坑指南

企业网站seo排名优化哪家好?5步实操避坑指南 模板网站太丑且功能僵化,根本撑不起业务需求,这时候大家最纠结的就是企业网站seo排名优化哪家好,怕被割韭菜。… · 2026/9/27 0:12:26

做网站公司晨旭东方避坑指南:网站被黑挂马后的7天自救实战
做网站公司晨旭东方避坑指南:网站被黑挂马后的7天自救实战

做网站公司晨旭东方避坑指南:网站被黑挂马后的7天自救实战 凌晨三点,手机突然疯狂震动。你迷迷糊糊醒来,点开工作群,满屏都是红色感叹号和愤怒的语音条。“网站怎么变成赌博广告了?”“客户投诉说点击链接跳转到非法页面!”“咱们是不是被黑客入侵了?… · 2026/9/27 0:12:02

为wordpress首页添加关键词的速查手册:告别拖期
为wordpress首页添加关键词的速查手册:告别拖期

为wordpress首页添加关键词的速查手册:告别拖期 改个需求建站公司拖一周,这种痛谁懂?很多设计师转前端的朋友,接手一个WordPress项目,客户指着首页说“这里要加个关键词,方便百度搜”,结果开发团队排期排到下个月。别等了,今天就把… · 2026/9/27 0:11:36

Ajax实现WordPress导航栏实战案例与安全加固
Ajax实现WordPress导航栏实战案例与安全加固

Ajax实现WordPress导航栏实战案例与安全加固 做网站最怕什么?不是代码写不出来,是上线后一堆破事儿缠身。特别是备案流程一头雾水,域名刚注册完,ICP备案材料准备到一半,发现服务器IP和域名解析对不上,或者SSL证书没配好导致浏览器… · 2026/9/27 0:11:24

如何在3分钟内给React项目嵌入Web终端:wterm快速上手教程
如何在3分钟内给React项目嵌入Web终端:wterm快速上手教程

如何在3分钟内给React项目嵌入Web终端:wterm快速上手教程 【免费下载链接】wterm A terminal emulator for the web 项目地址: https://gitcode.com/gh_mirrors/wterm1/wterm wterm 是一款面向浏览器的 Web 终端模拟器(terminal emulator for the… · 2026/9/27 0:11:24

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码