好简单
<?PHP
echo $_SERVER[REMOTE_ADDR];
?>
好吧,也许不是,我的 IP 目前是72.184.212.85但是我在 IP 阻止系统上使用的脚本上面的代码显示我的 IP 作为我的家庭服务器 IP 127.0.0.1
因此,当我转到我的脚本时,我的 IP 显示为127.0.0.1但当我转到其他网站时,它显示为72.184.212.85
如何获得第一个值以显示在我的测试服务器上?
$_SERVER['REMOTE_ADDR']
将始终显示请求来自的 IP 地址。如果您在自己的网络中的自己的计算机上访问自己的脚本,则您的外部 IP 地址永远不会发挥作用。该请求必须离开您的本地网络,然后返回以显示外部地址,但如果它都是本地的,那将永远不会发生。
您必须使您的服务器可公开访问,然后从公共地址访问它。我猜您目前正在使用 localhost 来访问您的服务器?
运行您的服务器,例如端口 8080,然后在路由器中转发该端口,使其对 Internet 公开。然后从http://72.184.212.85:8080而不是http://localhost:8080访问您的网页/phpscript 。
这是一个我不推荐的荒谬解决方案:
使用域名注册您的家庭 IP,然后通过 URL 查看请求来自何处:
$url = $_SERVER["SERVER_NAME"];
或者
$url = $_SERVER["HTTP_HOST"];
然后对该结果进行 dns 查找,它应该返回它注册到的 IP,即您的外部 IP。
$ext_ip = gethostbyaddr($url);
这不起作用的唯一原因(如果我错了,很抱歉),是如果 SERVER_NAME 使用与“REMOTE_HOST”相同的方法,这是一个反向 DNS 查找,它不会解析,因为您的内部 IP 不会注册到该域名。一种简单的检查方法是:
phpinfo();
看看环境变量是什么。