如何使用 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日
尝试
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']; } }
请检查阅读更多链接和问题链接