如何使用 PHP 获取客户端 IP?

18 浏览
0 Comments

如何使用 PHP 获取客户端 IP?

这个问题已经有了答案:

如何在PHP中获取客户端IP地址

我有一个使用PHP的网页,我正在尝试获取客户端IP,但我得到的是服务器网关IP地址(192.168.0.1)。

这是我在办公室的情况:

ISP--->ISP路由器--->我的路由器(192.168.0.1)--->(192.168.0.2)我的服务器。

我尝试了所有这些命令,但我不能获取真正的IP地址,只能获取服务器网关IP地址。

$_SERVER['HTTP_X_FORWARDED_FOR']
$_SERVER['HTTP_CLIENT_IP']
$_SERVER['HTTP_X_REAL_IP']
$_SERVER['GATEWAY_INTERFACE']
$_SERVER['SERVER_ADDR']
$_SERVER['SERVER_NAME']
$_SERVER['SERVER_SOFTWARE']
$_SERVER['SERVER_PROTOCOL']
$_SERVER['REQUEST_METHOD']
$_SERVER['REQUEST_TIME']
$_SERVER['QUERY_STRING']
$_SERVER['DOCUMENT_ROOT']
$_SERVER['HTTP_ACCEPT']
$_SERVER['HTTP_ACCEPT_CHARSET']
$_SERVER['HTTP_ACCEPT_ENCODING']
$_SERVER['HTTP_ACCEPT_LANGUAGE']
$_SERVER['HTTP_CONNECTION']
$_SERVER['HTTP_HOST']
$_SERVER['HTTP_REFERER']
$_SERVER['HTTP_USER_AGENT']
$_SERVER['HTTPS']
$_SERVER['REMOTE_ADDR']
$_SERVER['REMOTE_HOST']
$_SERVER['REMOTE_PORT']
$_SERVER['SCRIPT_FILENAME']
$_SERVER['SERVER_ADMIN']
$_SERVER['SERVER_PORT'] 
$_SERVER['SERVER_SIGNATURE']
$_SERVER['PATH_TRANSLATED']
$_SERVER['SCRIPT_NAME']
$_SERVER['REQUEST_URI']
$_SERVER['PHP_AUTH_DIGEST']
$_SERVER['PHP_AUTH_USER'] 
$_SERVER['PHP_AUTH_PW']
$_SERVER['AUTH_TYPE']

以下变量是“未定义”的:

-HTTP_X_FORWARDED_FOR
-HTTP_CLIENT_IP
-HTTP_X_REAL_IP
-HTTPS
-REMOTE_HOST
-PATH_TRANSLATED
-PHP_AUTH_DIGEST
-PHP_AUTH_USER
-PHP_AUTH_PW
-AUTH_TYPE

编辑:尝试“var_dump($_SERVER)”无法找到客户端IP地址:(

编辑2:我在谷歌上搜索了一下,“找到了答案”。用户马丁·霍恩伯格(Martin Hohenberg)所说的是正确的。在NAT过程中,头部被破坏,因此我的服务器无法读取原始IP地址。目前我不知道该问题的可能解决方案,除非把服务器移到前面。

admin 更改状态以发布 2023年5月22日
0
0 Comments

类似的问题

尝试

echo $_SERVER['REMOTE_ADDR'];

阅读更多

function getUserIpAddr()
{
    if (!empty($_SERVER['HTTP_CLIENT_IP'])) //if from shared
    {
        return $_SERVER['HTTP_CLIENT_IP'];
    }
    else if (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))   //if from a proxy
    {
        return $_SERVER['HTTP_X_FORWARDED_FOR'];
    }
    else
    {
        return $_SERVER['REMOTE_ADDR'];
    }
}

请检查阅读更多链接和问题链接

0
0 Comments

如果您正在从运行服务器的机器发出请求,则 $_SERVER ['REMOTE_ADDR'] 显然将包含您自己的IP地址,即192.168.0.1。

0