代码测试遇问题:本地测试出错,阿里云服务器测试成功原因探究

今天对 PHP 获取客户端真实 IP 进行了学习,接着又碰到了情况(不能完全称之为坑,只是存在不懂的地方而已)……

代码测试遇问题:本地测试出错,阿里云服务器测试成功原因探究

代码如下:

//获取客户端真实IP
function getIp() {
如果获取到环境变量“HTTP_CLIENT_IP”,并且将其与“unknown”进行不区分大小写的比较后结果不为相等,那么就满足条件。
获取环境变量“HTTP_CLIENT_IP”的值并赋值给变量$ip。
    else
如果存在环境变量“HTTP_X_FORWARDED_FOR”,并且“HTTP_X_FORWARDED_FOR”与“unknown”不相等(不区分大小写)
获取环境变量“HTTP_X_FORWARDED_FOR”的值并赋值给变量$ip。
        else
如果获取到环境变量"REMOTE_ADDR",并且将获取到的"REMOTE_ADDR"与"unknown"进行不区分大小写的比较后结果不相等
                $ip = getenv("REMOTE_ADDR");
            else
如果存在 $_SERVER['REMOTE_ADDR'] ,并且 $_SERVER['REMOTE_ADDR'] 不为空,并且 strcasecmp($_SERVER['REMOTE_ADDR'], "unknown") 的结果为真
$ip 等于 $_SERVER 中的 'REMOTE_ADDR' ;
                else
                    $ip = "unknown";
    return ($ip);
}

代码本身没有问题。在本地进行测试后,结果要么是获取到了 127.0.0.1,要么是出现了:::的情况。

找了一堆博客大都这样写,那问题是?

最后放到阿里云服务器再本地客户端测试一下,结果成功了。。。

原因可能是 $_SERVER["HTTP_CLIENT_IP"]能够获取客户端的 IP,它存在于 http 请求的 header 中,不过它可以被伪造,而本地没有相关数据,所以会出现错误。

你可能想看:
« 上一篇
下一篇 »

相关推荐

php实时推送,php实地培训

2026年10月05日

48阅读

php乱码出现问号的原因,php乱码出现问号的原因有哪些

2026年10月05日

40阅读

php一句话木马,一句话木马ctf

2026年10月05日

43阅读

php获取数组长度,php中如何获取数组的长度

2026年10月05日

44阅读

php面试题库及答案,php程序员面试真题库

2026年10月05日

42阅读

phpcontent-type修改,php源码二次修改需要多少钱

2026年10月05日

38阅读