今天我遇到了一个基于php的应用程序的一个非常奇怪的行为.
在系统的某个部分,有一个UI使用AJAX调用来填充列表
包含来自后端内容的框.
现在,AJAX监听器对所有传入的请求执行安全检查,确保
只有有效的客户端IP才能获得响应.有效的IP也存储在后端.
为了获得客户端的IP,我使用了普通的旧版本
$_SERVER['REMOTE_ADDR']
适用于大多数客户.今天我遇到了一个装置
remote_addr包含一个网络适配器的IP,它不是执行的那个
我的申请的实际沟通.
function getRealIpAddr()
{
if (!empty($_SERVER['HTTP_CLIENT_IP'])) //check ip from share internet
{
$ip=$_SERVER['HTTP_CLIENT_IP'];
}
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))//check ip is pass from prxy
{
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
$ip=$_SERVER['REMOTE_ADDR'];
}
return $ip;
}
可悲的是,问题仍然存在.
有没有人偶然发现这类问题(实际上我不认为我发现了一个完全新的问题^^)并且有一个想法让我如何解决这个问题?
编辑:
我上线了
> PHP版本5.2.9-1
> Apache / 2.2.9(Win32)
通过常规LAN卡进行通信.现在,客户端有几个
设备更多. VMNet适配器等.
我想知道客户端配置如何“打扰”Web服务器那么多……
TIA
ķ