当前位置: 首页 > article >正文

PHP获取当前IP地址的方法

想象一下你在寄信时需要填写收件人的地址IP 地址。在 PHP 中我们可以通过读取 HTTP 请求中的信息来获取用户的 IP 地址。(1) 获取 IP 的方法$_SERVER超全局变量$_SERVER[REMOTE_ADDR]直接获取客户端的 IP 地址。$_SERVER[HTTP_X_FORWARDED_FOR]如果用户通过代理服务器访问可能会包含真实的 IP 地址。$_SERVER[HTTP_CLIENT_IP]某些情况下也可能包含客户端的 IP 地址。代码示例1234567891011121314functiongetUserIP() {// 检查是否有代理服务器传递的真实 IPif(!empty($_SERVER[HTTP_X_FORWARDED_FOR])) {$ip$_SERVER[HTTP_X_FORWARDED_FOR];}elseif(!empty($_SERVER[HTTP_CLIENT_IP])) {$ip$_SERVER[HTTP_CLIENT_IP];}else{// 直接获取客户端 IP$ip$_SERVER[REMOTE_ADDR];}return$ip;}echoYour IP address is: . getUserIP();(2) 注意事项安全性$_SERVER[HTTP_X_FORWARDED_FOR]和$_SERVER[HTTP_CLIENT_IP]可能被伪造因此需要验证其合法性。代理服务器如果用户通过代理服务器访问$_SERVER[REMOTE_ADDR]返回的是代理服务器的 IP而不是用户的真实 IP。2. 使用场景是什么(1) 用户行为分析场景记录用户的访问日志分析用户来源。示例12$ip getUserIP();file_put_contents(access.log,User IP: $ip accessed at .date(Y-m-d H:i:s) .\n, FILE_APPEND);(2) 安全防护场景限制某些 IP 访问敏感页面。示例123456$allowed_ips [192.168.1.1,127.0.0.1];$user_ip getUserIP();if(!in_array($user_ip,$allowed_ips)) {die(Access denied for IP: $user_ip);}(3) 地理位置定位场景根据 IP 地址获取用户的地理位置。示例12345$ip getUserIP();$geo_datafile_get_contents(http://ip-api.com/json/$ip);$geo_data json_decode($geo_data, true);echoYou are visiting from: .$geo_data[city] ., .$geo_data[country];3. 底层原理是什么(1) HTTP 协议与 IP 地址当用户通过浏览器访问网站时HTTP 请求会携带一些元信息包括客户端的 IP 地址。这些信息由 Web 服务器如 Apache、Nginx解析后存入 $_SERVER 超全局变量中。(2) $_SERVER 的来源REMOTE_ADDR由 Web 服务器直接获取客户端的 IP 地址。这是最可靠的来源但可能受代理服务器影响。HTTP_X_FORWARDED_FOR如果用户通过代理服务器或负载均衡器访问代理服务器会将原始 IP 添加到请求头中。格式通常是真实 IP, 代理 IP1, 代理 IP2。HTTP_CLIENT_IP某些代理服务器会将客户端 IP 放入此字段。(3) 代理服务器的影响正向代理用户通过代理服务器访问目标服务器目标服务器只能看到代理服务器的 IP。反向代理目标服务器前面有一个反向代理如 Nginx反向代理会将客户端的 IP 转发给后端服务器。(4) 验证 IP 的合法性过滤非法字符确保 IP 地址符合正确的格式如 IPv4 或 IPv6。防止伪造检查HTTP_X_FORWARDED_FOR是否包含多个 IP并提取第一个有效 IP。

相关文章:

PHP获取当前IP地址的方法

想象一下,你在寄信时需要填写收件人的地址(IP 地址)。在 PHP 中,我们可以通过读取 HTTP 请求中的信息来获取用户的 IP 地址。(1) 获取 IP 的方法$_SERVER 超全局变量:$_SERVER[REMOTE_ADDR]:直接获取客户端…...

PHP序列化数据格式的示例详解

PHP序列化是将PHP变量(包括对象)转换为可存储或传输的字符串表示形式的过程。了解这些序列化格式对于数据处理、调试和安全性分析非常重要。本文将详细介绍PHP中各种数据类型的序列化表示方式。基本数据类型序列化格式布尔值(Boolean&#xf…...

PHP短信发送功能的实现与优化指南

在现代Web应用中,短信通知是用户认证、营销推送和安全预警的重要渠道。本文将深入解析一个PHP短信发送函数的实现原理,并通过代码优化展示如何提升其安全性、可靠性和性能。核心实现原理短信发送的基本原理是通过HTTP请求调用第三方短信服务API。以下是一…...

macOS上OpenClaw排错指南:Qwen2.5-VL-7B连接失败解决方案

macOS上OpenClaw排错指南:Qwen2.5-VL-7B连接失败解决方案 1. 问题背景与现象描述 上周我在自己的MacBook Pro(M1芯片,macOS Ventura 13.5)上尝试部署OpenClaw并连接本地运行的Qwen2.5-VL-7B模型时,遭遇了一系列连接问…...

OpenClaw备份自动化:用SecGPT-14B识别关键数据并同步加密

OpenClaw备份自动化:用SecGPT-14B识别关键数据并同步加密 1. 为什么需要智能备份系统 作为一个长期在本地开发项目的程序员,我经历过太多次"误删文件后追悔莫及"的时刻。传统的定时全量备份虽然简单,但存在三个致命问题&#xff…...

LeetCode(16/100)

灵神的方法,采用教室坐座位类比,将在1~n范围的数排到他们应在的位置,然后分为都在自己的位置上和有位置没人坐的情况遍历找出缺失的第一个正数。非常形象容易理解,时间效率最优。 class Solution {public int firstMissingPositiv…...

LeetCode(15/100)

数组中除当前数外所有数乘积。不许用除法,时间复杂度O(N),左右指针求前缀乘积和后缀乘积,还能u空间。 class Solution {public int[] productExceptSelf(int[] nums) {int len nums.length;// L 和 R 分别表示左右两侧的乘积列表int[] L ne…...

2024丨时间序列预测(Time Series Prediction)前沿技术解析与论文精要

1. 2024年时间序列预测技术全景图 时间序列预测就像给数据装上"时光望远镜",让我们能够窥见未来的趋势和变化。从股票价格到天气变化,从设备故障预警到疫情传播预测,这项技术正在深刻改变各行各业的决策方式。2024年,这…...

避坑指南:YOLOv5单目测距项目里,为什么你的距离值总是不准?

YOLOv5单目测距实战:五大误差源深度解析与精准优化方案 当你兴奋地跑通了YOLOv5单目测距代码,却发现测量结果与实际距离相差甚远时,这种挫败感我深有体会。本文将带你系统排查那些容易被忽视的关键误差源,并提供可直接落地的解决方…...

手把手教你用蓝莲花XSS平台玩转CTFHub Web XSS题目

蓝莲花XSS平台实战指南:攻克CTFHub Web安全挑战 在网络安全竞赛和实战演练中,跨站脚本攻击(XSS)始终是Web安全领域的重要考点。不同于传统的漏洞利用,XSS攻击需要建立有效的数据回传机制,这对CTF选手提出了更高要求。蓝莲花(BLUE-…...

手把手教你复现ownCloud高危漏洞CVE-2023-49103:从环境搭建到信息泄露验证

从零构建ownCloud漏洞靶场:CVE-2023-49103深度复现指南 当开源云存储系统ownCloud的graphapi组件暴露出PHP环境信息时,意味着什么?想象一下,攻击者通过一个未公开的URL路径,就能获取数据库密码、邮件服务器凭证甚至加密…...

从漏洞复现到修复:手把手教你用ModHeader测试和防御HTTP Host头攻击

HTTP Host头攻击实战:从漏洞复现到Nginx防御全解析 当你在浏览器地址栏输入一个网址时,很少有人会注意到背后那个看似普通的Host头字段。正是这个不起眼的HTTP头部,却可能成为攻击者撬开系统大门的杠杆。想象一下,攻击者只需修改这…...

给STM32L5和LPC55S6x加把锁:手把手配置ARMv8-M TrustZone的SAU与内存分区

给STM32L5和LPC55S6x加把锁:手把手配置ARMv8-M TrustZone的SAU与内存分区 在物联网设备爆炸式增长的今天,安全已经从"可有可无"变成了"必不可少"。想象一下,你设计的智能门锁固件被轻易破解,或者医疗设备的敏…...

OpenClaw配置优化:Qwen2.5-VL-7B任务执行的3个性能技巧

OpenClaw配置优化:Qwen2.5-VL-7B任务执行的3个性能技巧 1. 为什么需要优化OpenClaw的多模态任务性能 上周我尝试用OpenClaw自动处理一批图文混合的电商产品描述,结果发现简单的20条数据竟然花了47分钟。看着日志里频繁出现的"Waiting for model r…...

OpenClaw安全加固:Qwen3-14B镜像操作权限精细控制方案

OpenClaw安全加固:Qwen3-14B镜像操作权限精细控制方案 1. 为什么需要安全加固? 去年我在尝试用OpenClaw自动整理财务报告时,差点酿成大错——脚本误删了原始Excel文件。这次经历让我意识到:当AI能直接操作系统时,安全…...

Si7021温湿度传感器I²C驱动开发与FreeRTOS工程实践

1. Si7021温湿度传感器驱动库深度解析与工程实践Si7021是由Silicon Labs(芯科科技)推出的一款高精度、低功耗数字式温湿度传感器,采用CMOS工艺集成电容式湿度传感单元与带隙温度传感单元,通过IC接口输出经过校准的12位湿度和14位温…...

嵌入式代码阅读方法论:从新手到高效能工程师

1. 嵌入式代码阅读方法论:从新手到高效能工程师的进阶之路刚接触嵌入式开发的新人常会遇到这样的困境:打开一个项目代码库,面对成千上万行代码和复杂的模块关系,完全不知从何入手。作为一名在嵌入式领域摸爬滚打多年的工程师&…...

Jupyter Notebook机器学习避坑指南:为什么你的泰坦尼克号预测模型准确率虚高?

Jupyter Notebook机器学习避坑指南:为什么你的泰坦尼克号预测模型准确率虚高? 在数据科学竞赛和实际业务场景中,泰坦尼克号数据集堪称机器学习界的"Hello World"。但正是这个看似简单的数据集,却暗藏诸多陷阱。许多学习…...

神经结构搜索(NAS)编码策略解析:从邻接矩阵到路径优化的实战指南

1. 神经结构搜索(NAS)编码策略入门指南 第一次接触神经结构搜索(NAS)时,我被那些晦涩的术语搞得一头雾水。直到在真实项目中踩过几次坑才明白,编码策略的选择直接影响着整个搜索过程的效率。简单来说,NAS编码就像给神经网络结构设计"身份…...

OpenClaw+百川2-13B-4bits量化模型:个人知识管理自动化方案

OpenClaw百川2-13B-4bits量化模型:个人知识管理自动化方案 1. 为什么需要自动化知识管理 作为一个长期与技术文档打交道的开发者,我的知识库在过去三年膨胀到了2000篇杂乱无章的Markdown文件。每次查找资料时,要么记不清文件名,…...

OpenClaw会议小助手:Qwen3.5-9B实时转录与待办项提取

OpenClaw会议小助手:Qwen3.5-9B实时转录与待办项提取 1. 为什么需要会议自动化助手 作为经常参加跨时区会议的技术从业者,我长期被两个问题困扰:一是会议录音整理耗时耗力,二是行动项经常在后续执行中被遗漏。传统解决方案要么需…...

OpenClaw技能组合:千问3.5-35B-A3B-FP8驱动的自动化工作流设计

OpenClaw技能组合:千问3.5-35B-A3B-FP8驱动的自动化工作流设计 1. 从零到一的自动化工作流实践 去年夏天,我接手了一个临时项目:需要每天处理上百封客户邮件,提取会议需求并安排日程,会后还要生成纪要同步给团队。手…...

OpenClaw成本优化方案:千问3.5-9B本地部署省下90%API费用

OpenClaw成本优化方案:千问3.5-9B本地部署省下90%API费用 1. 为什么我开始关注OpenClaw的成本问题 去年冬天,我第一次用OpenClaw自动整理全年会议纪要时,被月底的API账单吓了一跳——单月调用GPT-4的费用竟然超过了300美元。作为一个坚持用…...

OpenClaw+千问3.5-27B代码助手:自动生成Python脚本并测试运行

OpenClaw千问3.5-27B代码助手:自动生成Python脚本并测试运行 1. 为什么需要代码生成与执行的自动化? 作为开发者,我经常遇到这样的场景:脑子里有个想法需要快速验证,比如抓取某个网站的数据做分析。传统流程是手动写…...

OpenClaw自动化测试方案:Phi-3-vision-128k-instruct实现UI截图比对

OpenClaw自动化测试方案:Phi-3-vision-128k-instruct实现UI截图比对 1. 为什么需要自动化UI测试 在个人项目开发中,每次代码提交后手动检查页面样式是否错乱,是最容易被忽视却又最耗费精力的环节。我曾经历过一个典型场景:深夜修…...

OpenClaw隐私保护方案:Qwen3-14b_int4_awq本地化数据处理优势

OpenClaw隐私保护方案:Qwen3-14b_int4_awq本地化数据处理优势 1. 为什么我们需要关注AI自动化中的隐私问题 去年我帮朋友的公司评估一个自动化方案时,遇到一个典型场景:他们需要处理大量客户合同,但担心使用云端AI服务会导致敏感…...

OpenClaw多任务队列:Qwen3.5-9B并行处理图片批分析

OpenClaw多任务队列:Qwen3.5-9B并行处理图片批分析 1. 为什么需要批量图片分析 上周我接到一个朋友的需求:他经营一家小型电商店铺,每天需要处理上百张商品截图,包括提取商品特征、检查图片合规性、生成简短的描述文案。手动操作…...

5分钟搞定OpenClaw+Qwen3.5-9B:飞书机器人配置指南

5分钟搞定OpenClawQwen3.5-9B:飞书机器人配置指南 1. 为什么选择OpenClawQwen3.5-9B组合 上周我在团队内部尝试用OpenClaw对接Qwen3.5-9B模型搭建飞书机器人时,意外发现这个组合特别适合小团队的轻量化需求。相比直接调用商业API,本地部署的…...

MacBook安装OpenClaw全流程:Phi-3-vision-128k-instruct多模态开发环境搭建

MacBook安装OpenClaw全流程:Phi-3-vision-128k-instruct多模态开发环境搭建 1. 为什么选择OpenClawPhi-3组合 去年我在做一个智能文档处理项目时,发现传统RPA工具对非结构化数据的理解能力太弱。直到尝试了OpenClaw多模态模型的组合,才真正…...

OpenClaw自动化办公实战:千问3.5-9B处理日报与会议纪要

OpenClaw自动化办公实战:千问3.5-9B处理日报与会议纪要 1. 为什么选择OpenClaw处理办公杂务 去年冬天的一个深夜,我盯着电脑屏幕上一堆未处理的会议录音和零散的邮件摘要,突然意识到自己每周要花至少5小时做这些重复性工作。当时我尝试过各…...