PHP使用了CDN无法获取客户端真实IP

发表:2年前 更新:2年前

此方法仅适用于 php-fpm

关于 SuperForum 使用 CDN 无法得到客户端真实 IP 的问题会在 V2.1.5 版本修复。

方法

如果您使用了 CDN(内容分发网络),那么可能需要使用特殊的方法来获取客户端的真实 IP 地址。这是因为 CDN 会将客户端的请求转发到您的网站,所以您的网站看到的 IP 地址可能是 CDN 的地址,而不是客户端的真实地址。

要获取客户端的真实 IP 地址,您可以使用 PHP 的 $_SERVER 变量来访问服务器发送到 PHP 的请求头信息。具体来说,您可以使用以下代码来获取客户端的真实 IP 地址:

<?php
$client_ip = $_SERVER['HTTP_CLIENT_IP'];

请注意,上面的代码只能在大多数情况下获取客户端的真实 IP 地址。但是,有些情况下,上面的代码可能无法正常工作,比如当客户端使用了代理服务器时。因此,您可能需要使用更复杂的方法来确定客户端的真实 IP 地址。

如果您遇到了这种情况,您可以尝试使用以下代码来获取客户端的真实 IP 地址:

<?php
$client_ip = $_SERVER['HTTP_X_FORWARDED_FOR'];

这样,您就可以使用 PHP 代码来获取客户端的真实 IP 地址了。希望这些信息对您有所帮助。

<?php
$real_ip = '';
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
    $arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
    $pos = array_search('unknown', $arr);
    if (false !== $pos) {
        unset($arr[$pos]);
    }
    $real_ip = trim($arr[0]);
} elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
    $real_ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (isset($_SERVER['REMOTE_ADDR'])) {
    $real_ip = $_SERVER['REMOTE_ADDR'];
}
signature
保持理智
评论

无权限

请登录后评论

RunPod公众号

赞助商

联系我们

QQ群:798695907

邮箱:laravel@88.com