PHP 获取客户端 IP 地址

PHP 获取客户端真实 IP 地址 通过使用 HTTP 头信息,我们可以更可靠地获取客户端的真实 IP 地址。以上提供的 PHP 代码可以帮助你获取客户端的真实 IP 地址,并根据实际需求进行相应的处理和验证。获取客户端的 IP 地址。最后,返回第一个符合条件的 IP 地址作为客户端的真实 IP 地址。本文将介绍一种获取客户端真实 IP 地址的方法,并提供相应的 PHP 源代码。一种更可靠的方式是使用 HTTP 头信息来获取客户端的真实 IP 地址。值,导致最终获取到的 IP 地址是代理服务器的 IP 地址而不是客户端的真实 IP 地址。 阅读详情

摘要

  • REMOTE_ADDR 是你的客户端跟你的服务器“握手”时候的IP。如果使用了“匿名代理”,REMOTE_ADDR将显示代理服务器的IP。
  • HTTP_CLIENT_IP 是代理服务器发送的HTTP头。如果是“超级匿名代理”,则返回none值。同样,REMOTE_ADDR也会被替换为这个代理服务器的IP。
  1. $_SERVER['REMOTE_ADDR']; //访问端(有可能是用户,有可能是代理的)IP
  2. $_SERVER['HTTP_CLIENT_IP']; //代理端的(有可能存在,可伪造)
  3. $_SERVER['HTTP_X_FORWARDED_FOR']; //用户是在哪个IP使用的代理(有可能存在,也可以伪造)

摘要1、2、3区别如下

  1. 没有使用代理服务器的情况:
REMOTE_ADDR = 您的 IP
HTTP_VIA = 没数值或不显示
HTTP_X_FORWARDED_FOR = 没数值或不显示
  1. 使用透明代理服务器的情况: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。

注意: 这类代理服务器还是将您的信息转发给您的访问对象,无法达到隐藏真实身份的目的。

  1. 使用普通匿名代理服务器的情况:Anonymous Proxies
EMOTE_ADDR = 最后一个代理服务器 IP 
HTTP_VIA = 代理服务器 IP
HTTP_X_FORWARDED_FOR = 代理服务器 IP ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

注意: 隐藏了您的真实IP,但是向访问对象透露了您是使用代理服务器访问他们的。

  1. 使用欺骗性代理服务器的情况:Distorting 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代替您的真实IP欺骗它。

  1. 使用高匿名代理服务器的情况:High Anonymity Proxies (Elite proxies)
REMOTE_ADDR = 代理服务器 IP
HTTP_VIA = 没数值或不显示
HTTP_X_FORWARDED_FOR = 没数值或不显示 ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

注意: 完全用代理服务器的信息替代了您的所有信息,就象您就是完全使用那台代理服务器直接访问对象。

获取客户端真实的IP地址实例

function get_real_ip()
{
    $ip = FALSE;
    //客户端IP 或 NONE 
    if (!empty($_SERVER["HTTP_CLIENT_IP"])) {
        $ip = $_SERVER["HTTP_CLIENT_IP"];
    }
    //多重代理服务器下的客户端真实IP地址(可能伪造),如果没有使用代理,此字段为空
    if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        $ips = explode(", ", $_SERVER['HTTP_X_FORWARDED_FOR']);
        if ($ip) {
            array_unshift($ips, $ip);
            $ip = FALSE;
        }
        for ($i = 0; $i < count($ips); $i++) {
            if (!eregi("^(10│172.16│192.168).", $ips[$i])) {
                $ip = $ips[$i];
                break;
            }
        }
    }
    //客户端IP 或 (最后一个)代理服务器 IP 
    return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);
}
PHP获取客户端IP地址的代码汇总 SERVER[‘REMOTE_ADDR’]可能会返回代理服务器的IP地址而不是客户端的IP地址。如果你知道客户端使用的代理服务器发送了特定的HTTP代理头,你可以使用这个头来获取客户端的IP地址。在PHP中,可以使用不同的方法来获取客户端的IP地址。需要注意的是,客户端IP地址可以被伪造或者被代理服务器修改,因此在依赖于IP地址进行安全性验证或授权的场景中,需要谨慎使用。以上是几种常见的获取客户端IP地址的方法。根据实际情况选择适合的方法来获取IP地址,以确保获取到正确的客户端IP信息。 阅读详情

相关推荐

CentOS 7下glibc升级到2.28的保姆级避坑指南(含GCC 7.3.1编译配置)

本文详细介绍了在CentOS 7系统中将glibc升级到2.28版本的完整流程,包括GCC 7.3.1的编译配置、环境变量设置、glibc编译的细节处理以及生产环境验证。文章特别强调了风险控制和避坑技巧,适用于需要提升系统兼容性的企业级用户。

weixin_29611239的博客 408

php获取客户端IP和服务器端IP

1.php获取客户端IP 在PHP获取客户端IP时,常使用 $_SERVER["REMOTE_ADDR"] 。但如果客户端是使用代理服务器来访问,那取到的是代理服务器的 IP 地址,而不是真正的客户端 IP 地址。要想透过代理服务器取得客户端的真实 IP 地址,就要使用$_SERVER["HTTP_X_FORWARDED_FOR"]来读取。 但只有客户端使用“透明代理”的情况下,$_S

WorldMvp的专栏 1万+

验证码接收平台搭建教程(含源代码)

在很多注册流程中,我们常常需要通过短信验证码验证用户的身份。本教程将手把手教你搭建一个验证码接收平台,用于自动接收并展示来自短信网关或短信转发器的验证码。⚠️ 本教程仅供学习使用,请勿用于任何非法用途!本教程展示了一个简单的验证码接收平台的搭建流程,从后端到前端完整实现。你可以将其用于学习 Web 开发、数据库操作以及 Flask 项目部署。访问我的优快云主页。

weixin_52548902的博客 4084

php 获取请求端ip

function getip() { static $ip = ''; $ip = $_SERVER['REMOTE_ADDR']; if(isset($_SERVER['HTTP_CDN_SRC_IP'])) { $ip = $_SERVER['HTTP_CDN_SRC_IP']; } elseif (isset($_SERVER['HTTP_CLIENT_IP'])) { $...

lorraine_40t的博客 469

LinuxMint 22.1(Ubuntu24.04)下通过Wine完美运行同花顺远航版的实战指南

本文详细介绍了在LinuxMint 22.1(Ubuntu24.04)系统下通过Wine完美运行同花顺远航版的实战指南。从基础环境准备到深度优化,包括Wine环境配置、同花顺远航版安装、字体显示调优、任务栏兼容性修复等关键步骤,帮助Linux用户高效使用同花顺远航版进行股票交易和行情分析。

weixin_30919429的博客 571

告别命令行恐惧!用TBtools的MCScanX插件,5分钟搞定拟南芥和水稻的基因组共线性分析

本文介绍如何利用TBtools的MCScanX插件快速完成拟南芥和水稻的基因组共线性分析,无需命令行操作,5分钟即可生成专业可视化结果。通过图形化界面简化传统MCScanX的复杂流程,特别适合非生物信息背景的研究者,显著提升基因组数据分析效率。

dianzhuique8587的博客 377

PHP获取IP的五种方法

【代码】PHP获取IP的五种方法。

sejinan的博客 3894

lvds接口_LVDS,接口,时序讲解,非常好的文章

欢迎FPGA工程师加入官方微信技术群点击蓝字关注我们FPGA之家-中国最好最大的FPGA纯工程师社群1.1.1 LVDS接口分类1.1.1.1 单路6bit LVDS这种接口电路中,采用单路方式传输,每个基色信号采用6位数据,共18位RGB数据,因此,也称18位或18bit LVDS接口。此,也称18位或18bit LVDS接口。1.1.1.2 双路6bit LVDS这种接口电...

weixin_39639286的博客 1902

php如何获取客户端IP地址

php获取客户端IP地址的几种方法 阅读php获取客户端IP地址的几种方法, <?php $iipp=$_SERVER["REMOTE_ADDR"]; echo $iipp; ?> <?php $user_IP = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] :

dxmcu的专栏 1984

Microsemi Libero使用技巧11——CoreUARTAPB RX管脚分配时不显示

调用串口IP核CoreUARTAPB,并例化到顶层设计,发现UART_RX管脚在进行管脚分配时没有显示出来,最后发现是CoreAPB3总线IP核配置不对导致,改为如下配置后正常。

whik1194的博客 758

【Python基础】FastAPI 从入门到项目实战操作详解

【Python基础】FastAPI从入门到使用实战操作详解

congge_study的博客 443

PHP获取客户端IP地址方式

一、如果没有使用代理服务器 REMOTE_ADDR = 客户端IP HTTP_X_FORWARDED_FOR = 没数值或不显示 $ip = $_SERVER['REMOTE_ADDR']; 二、使用透明代理 REMOTE_ADDR = 最后一个代理服务器 IP HTTP_X_FORWARDED_FOR = 客户端真实 IP (经过多个代理服务器时,这个值类似:221.5.252....

于大博 2万+

k8s篇之underlay网络和overlay区别

underlay和overlay

小橙子的笔记屋 2142

PHP 获取客户端ip地址

一、如果没有使用代理服务器,   REMOTE_ADDR = 客户端IP    HTTP_X_FORWARDED_FOR = 没数值或不显示   $ip = $_SERVER['REMOTE_ADDR'];   二、使用透明代理,   REMOTE_ADDR = 最后一个代理服务器 IP  HTTP_X_FORWARDED_FOR = 客户端真实 IP (经过多个代理服务器时,这个值类...

进阶之旅 297

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

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

php获取客户端IP地址有四种方法,这五种方法分别为 1 2 3 4 REMOTE_ADDR HTTP_CLIENT_IP HTTP_X_FORWARDED_FOR HTTP_VIA REMOTE_ADDR 是你的客户端跟你的服务器“握手”时候的IP。如果使用了“匿名代理”,REMOTE_ADDR将显示代理服务器的IP。 HTTP_CLIENT_IP 是代理服务器发送的HTTP头。如果是“超级匿名代理”,则返.

qq_39702981的博客 1012

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

php获取客户端ip地址方法

1 /** 2 * 获取客户端IP地址 3 * @param integer $type 返回类型 0 返回IP地址 1 返回IPV4地址数字 4 * @param boolean $adv 是否进行高级模式获取(有可能被伪装) 5 * @return mixed 6 */ 7 public ...

146

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

php获取客户端IP地址的几种方法(转)

php获取客户端IP地址的几种方法 <?php $iipp=$_SERVER["REMOTE_ADDR"]; echo $iipp; ?> <?php $user_IP = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"]; $user_IP = ($user_IP

u011233702的专栏 1万+

获取客户端ip地址php

public function ip() { //strcasecmp 比较两个字符,不区分大小写。返回0,&gt;0,&lt;0。 if(getenv('HTTP_CLIENT_IP') &amp;&amp; strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) { $ip = getenv('HTTP_CLIENT_...

Neil_1993的博客 315

PHP获取客户端的IP地址

这里写自定义目录标题PHP获取客户端的IP地址 PHP获取客户端的IP地址 首先我们来了解相关变量的含义: $_SERVER[‘REMOTE_ADDR’]:浏览当前页面的用户计算机的ip地址 $_SERVER[‘HTTP_CLIENT_IP’]:客户端的ip $_SERVER[‘HTTP_X_FORWARDED_FOR’]:浏览当前页面的用户计算机的网关 $_SERVER[‘HTTP_X_REAL...

qq_36358709的博客 301

如何在PHP中获取客户端IP地址[重复]

This question already has an answer here: 这个问题已经在这里有了答案: What is the most accurate way to r

asdfgh0077的博客 310

php获取客户端IP地址的几种方法

$iipp=$_SERVER["REMOTE_ADDR"];echo $iipp;-------------------------------------------------- $user_IP = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"];$user_I

guoguo1980的专栏 2677

PHP 如何获取客户端ip地址

PHP 如何获取客户端ip地址 一、总结 一句话总结:主要是使用$_SERVER的 REMOTE_ADDR 和 HTTP_X_FORWARDED_FOR 两个属性,在用户使用不同代理的时候这两个属性可用于获取ip 使用$_SERVER的 REMOTE_ADDR 和 HTTP_X_FORWARDED_FOR 两个属性 public function ip() { //strcase...

weixin_34269583的博客 172

PHP 获取客户端真实IP地址

由于客户端IP数据是从TCP/IP协议层传递过来的,因此在没有中间代理(客户端和服务器直连)的情况下,可以直接通过标准方法REMOTE_ADDR获得与PHP直接通讯的IP地址。总结来说,当有Nginx代理的情况下,需要根据具体配置来选择获取的Header,从而正确获取客户端IP地址,此时PHP中的的REMOTE_ADDR可能是最后一级代理的IP地址。常见的LNMP方案,属于Nginx反向代理。在这种情况下,REMOTE_ADDR不可以显式的伪造,获取到的是实际与服务器连接的IP地址,是可靠的。

Oona_01的博客 551
上一篇: Win10 安装 JDK1.8 及配置环境变量
下一篇: js轮询及踩过的坑
dadeity
博客等级 码龄10年 1172粉丝 225原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dadeity

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值