【发布时间】:2021-08-04 16:32:34
【问题描述】:
我试过这个功能,但这总是返回主机/网站的 IP 地址而不是用户的 IP 知道为什么以及如何解决它吗?
该网站未托管在 localhost 上,我正在使用 lighttpd 托管该网站
<?php
function getUserIpAddr(){
if(!empty($_SERVER['HTTP_CLIENT_IP'])){
$ip = $_SERVER['HTTP_CLIENT_IP'];
}elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
}else{
$ip = $_SERVER['REMOTE_ADDR'];
}
return $ip;
}
$ip = getUserIpAddr();
echo $ip;
?>
【问题讨论】:
-
听起来主机有一个反向代理,所以所有请求都来自它。除了更改反向代理的工作方式之外,您无能为力(并且根据它的声音,这是您需要要求托管服务做的事情)来设置您正在寻找的转发标头之一。跨度>
-
或者好像他们已经在服务器变量中传递了它,您也可以通过转储/记录
$_SERVER来检查自己。 -
昆汀的网站托管在我的 linux 机器上