如何获取本地主机系统的公共IP地址

4

我连接到一个局域网,可以访问互联网。使用浏览器可以通过搜索“我的IP是什么”找到我的公共IP。

我想使用PHP获取公共IP。

我在我的localhost WAMP服务器上运行脚本。

我尝试过:

$_SERVER['REMOTE_ADDR'] and $_SERVER['SERVER_ADDR']` both give me `localhost ip ::1

有没有任何网络功能可以提供我的公共IP地址?

有没有不使用任何外部服务的方法?因为如果我使用外部服务,它可能在将来不可用。


关于你的编辑(不使用任何外部服务),不,你不能这样做。 - roberto06
@roberto06 但是依赖于外部服务可能会在未来破坏我的代码。 - Sugumar Venkatesan
5个回答

8
请尝试一下这个:
$externalContent = file_get_contents('http://checkip.dyndns.com/');
preg_match('/Current IP Address: \[?([:.0-9a-fA-F]+)\]?/', $externalContent, $m);
$externalIp = $m[1];

或者像Priyesh Kumar建议的那样使用httpbin.org/ip。

1
有没有不使用任何外部服务的方法? - Sugumar Venkatesan
两个链接都不使用cookies。 - questionto42

6
您可以使用API从本地主机获取公共IP地址。

https://www.ipify.org/

<?php
    $ip = file_get_contents('https://api.ipify.org');
    echo "My public IP address is: " . $ip;
?>

-1

我认为你应该使用$_SERVER['REMOTE_ADDR']来获取路由器的IP地址。


-1

尝试这个,因为它已经在本地机器(localhost)上测试过了:

$ip = file_get_contents('https://api.ipify.org'); echo $ip;


-1

也尝试一下,并使用 print_r 进行检查

$ip= isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR'];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接