我正在尝试跟踪访问者的IP地址.使用时$_SERVER["REMOTE_ADDR"]
,我得到服务器的IP地址而不是访问者的IP地址.我在多个位置的多台机器上尝试了这一点,它们都产生了完全相同的IP.是否有一些PHP /服务器设置可能会影响这个?
sim*_*aun 46
REMOTE_ADDR
不可信任.
无论如何,试试
$ipAddress = $_SERVER['REMOTE_ADDR'];
if (array_key_exists('HTTP_X_FORWARDED_FOR', $_SERVER)) {
$ipAddress = array_pop(explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']));
}
Run Code Online (Sandbox Code Playgroud)
编辑:此外,您的服务器的路由器是否启用了端口转发?有可能它正在搞乱数据包.
Pek*_*ica 20
使用$ _SERVER ["REMOTE_ADDR"]时,我得到服务器的IP地址而不是访问者的IP地址.
然后你的配置出了问题,或者很奇怪.
你在使用某种反向代理吗?在这种情况下,@ simshaun的建议可能会奏效.
您的Web服务器配置中还有其他不寻常的东西吗?
你能展示你正在使用的PHP代码吗?
你能说出地址的样子吗?它是本地的还是因特网地址?
cas*_*nca 11
$_SERVER['REMOTE_ADDR']
提供将请求发送到Web服务器的IP地址.这通常是访问者的地址,但在您的情况下,听起来有一种代理坐在Web服务器之前拦截请求,因此Web服务器看起来好像请求来自那里.
不要再查找未在预期标头中设置的IP地址.只需执行以下操作即可检查整个服务器变量,并找出适合您案例的变量:
print_r($_SERVER);
Run Code Online (Sandbox Code Playgroud)