代码测试遇问题:本地测试出错,阿里云服务器测试成功原因探究
今天对 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制作简历