首页 后端开发 php教程 如何识别代理服务器背后的真实IP地址?

如何识别代理服务器背后的真实IP地址?

Nov 05, 2024 am 03:18 AM

How to Identify the True IP Address Behind Proxy Servers?

识别代理服务器背后的真实 IP 地址

使用标准 PHP 方法(例如 $_SERVER['REMOTE_ADDR'] 检索访问者的 IP 地址)如果访问者通过代理服务器访问您的网站,则可能无法提供准确的信息。

要解决此问题,请考虑使用以下 PHP 代码:

<code class="php">function getUserIP()
{
    // Obtain the IP address of the visitor behind CloudFlare
    if (isset($_SERVER["HTTP_CF_CONNECTING_IP"])) {
        $_SERVER['REMOTE_ADDR'] = $_SERVER["HTTP_CF_CONNECTING_IP"];
        $_SERVER['HTTP_CLIENT_IP'] = $_SERVER["HTTP_CF_CONNECTING_IP"];
    }
    $client  = @$_SERVER['HTTP_CLIENT_IP'];
    $forward = @$_SERVER['HTTP_X_FORWARDED_FOR'];
    $remote  = $_SERVER['REMOTE_ADDR'];

    $ip = null;

    if(filter_var($client, FILTER_VALIDATE_IP))
    {
        $ip = $client;
    }
    elseif(filter_var($forward, FILTER_VALIDATE_IP))
    {
        $ip = $forward;
    }
    else
    {
        $ip = $remote;
    }

    return $ip;
}

$user_ip = getUserIP();

echo $user_ip; // Output IP address [Ex: 177.87.193.134]</code>

此函数首先检查是否访客正在使用 CloudFlare,这是一种流行的代理服务。如果是,它会使用 HTTP_CF_CONNECTING_IP 标头检索真实 IP 地址。

接下来,它会考虑三个潜在的 IP 源:HTTP_CLIENT_IP、HTTP_X_FORWARDED_FOR 和 REMOTE_ADDR。它会验证每个 IP 地址并选择最可靠的一个。

通过采用这种方法,您可以有效地获取访问者的实际 IP 地址,即使他们位于代理服务器后面。

以上是如何识别代理服务器背后的真实IP地址?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

PHP教程
1598
276
在PHP中构建不变的物体,并具有可读的属性 在PHP中构建不变的物体,并具有可读的属性 Jul 30, 2025 am 05:40 AM

ReadonlypropertiesinPHP8.2canonlybeassignedonceintheconstructororatdeclarationandcannotbemodifiedafterward,enforcingimmutabilityatthelanguagelevel.2.Toachievedeepimmutability,wrapmutabletypeslikearraysinArrayObjectorusecustomimmutablecollectionssucha

处理加密货币计算:为什么BCMATH在PHP中至关重要 处理加密货币计算:为什么BCMATH在PHP中至关重要 Aug 01, 2025 am 07:48 AM

bcmathisesene forAccratecryptoCurrencyCalcalsionSinphpBecausefloing-pointarithmeticIntroducesunAcceptablebablerOundingErrors.1.floation-pointnumberslike0.1 0.2yieldimimpreciseresults(e.g.,e.g.,0.30000000000000000000004)

字符串作为价值对象:一种现代的特定领域字符串类型的方法 字符串作为价值对象:一种现代的特定领域字符串类型的方法 Aug 01, 2025 am 07:48 AM

Rawstringsindomain-drivenapplicationsshouldbereplacedwithvalueobjectstopreventbugsandimprovetypesafety;1.Usingrawstringsleadstoprimitiveobsession,whereinterchangeablestringtypescancausesubtlebugslikeargumentswapping;2.ValueobjectssuchasEmailAddressen

使用PHP进行数据刮擦和Web自动化 使用PHP进行数据刮擦和Web自动化 Aug 01, 2025 am 07:45 AM

使用guazzleforbusthttprequestswithheadersand andtimeouts.2.parsehtmleffitedlywithsymfonydomcrawlerusingcssselectors.3.handlejavascript-heavysitesby-heavysitesbyintegrationpuppeepetementegratingpuppeeteviaphpage()

php 8的'匹配”表达式:``if-elseif''链的优越替代品 php 8的'匹配”表达式:``if-elseif''链的优越替代品 Aug 02, 2025 pm 02:47 PM

match表达式在PHP8中提供更简洁、安全的替代方案,相比if-elseif和switch,它自动进行严格比较(===),避免类型松散比较的错误;2.match是表达式,可直接返回值,适用于赋值和函数返回,提升代码简洁性;3.match始终使用严格类型检查,防止整数、布尔值与字符串间意外匹配;4.支持单臂多值匹配(如0,false,''),但复杂条件(如范围判断)仍需if-elseif;因此,当进行单一变量的精确值映射时应优先使用match,而复杂逻辑则保留if-elseif。

WordPress 自定义文章类型按钮弹出表单与 AJAX 提交教程 WordPress 自定义文章类型按钮弹出表单与 AJAX 提交教程 Aug 08, 2025 pm 11:09 PM

本教程详细指导如何在 WordPress 中为自定义文章类型列表的每个文章添加一个“提交报价”按钮,点击后弹出包含文章ID的自定义HTML表单,并实现表单数据的AJAX提交及成功消息显示。内容涵盖前端jQuery UI弹窗设置、动态数据传递、AJAX请求处理,以及后端WordPress AJAX钩子和数据处理的PHP实现,确保功能完整、安全且用户体验良好。

解开性能:关于PHP开关与IF-Else的真相 解开性能:关于PHP开关与IF-Else的真相 Aug 02, 2025 pm 04:34 PM

Switchcanbeslightlyfasterthanif-elsewhencomparingasinglevariableagainstmultiplescalarvalues,especiallywithmanycasesorcontiguousintegersduetopossiblejumptableoptimization;2.If-elseisevaluatedsequentiallyandbettersuitedforcomplexconditionsinvolvingdiff

通过上下文魔术常数增强您的错误记录策略 通过上下文魔术常数增强您的错误记录策略 Aug 01, 2025 am 07:47 AM

Contextualmagicconstantsarenamed,meaningfulidentifiersthatprovideclearcontextinerrorlogs,suchasUSER_LOGIN_ATTEMPTorPAYMENT_PROCESSING.2.Theyimprovedebuggingbyreplacingvagueerrormessageswithspecific,searchablecontext,enablingfasterrootcauseidentificat

See all articles