2

好简单

<?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

如何获得第一个值以显示在我的测试服务器上?

4

3 回答 3

14

$_SERVER['REMOTE_ADDR']将始终显示请求来自的 IP 地址。如果您在自己的网络中的自己的计算机上访问自己的脚本,则您的外部 IP 地址永远不会发挥作用。该请求必须离开您的本地网络,然后返回以显示外部地址,但如果它都是本地的,那将永远不会发生。

于 2009-07-25T04:24:29.033 回答
1

您必须使您的服务器可公开访问,然后从公共地址访问它。我猜您目前正在使用 localhost 来访问您的服务器?

运行您的服务器,例如端口 8080,然后在路由器中转发该端口,使其对 Internet 公开。然后从http://72.184.212.85:8080而不是http://localhost:8080访问您的网页/phpscript 。

于 2009-07-25T04:30:52.297 回答
0

这是一个我不推荐的荒谬解决方案:

使用域名注册您的家庭 IP,然后通过 URL 查看请求来自何处:

$url = $_SERVER["SERVER_NAME"];

或者

$url = $_SERVER["HTTP_HOST"];

然后对该结果进行 dns 查找,它应该返回它注册到的 IP,即您的外部 IP。

 $ext_ip = gethostbyaddr($url);

这不起作用的唯一原因(如果我错了,很抱歉),是如果 SERVER_NAME 使用与“REMOTE_HOST”相同的方法,这是一个反向 DNS 查找,它不会解析,因为您的内部 IP 不会注册到该域名。一种简单的检查方法是:

 phpinfo();

看看环境变量是什么。

于 2009-07-25T04:51:43.300 回答