作者:喵屎柔_ | 来源:互联网 | 2023-10-11 20:06
我经常听到人们说使用“$_SERVER[‘SERVER_ADDR’]”,但这会返回我服务器的LANIP(例如192.168.1.100).我想要外部IP.解决方法:只需查询返回您的
我经常听到人们说使用“$_SERVER [‘SERVER_ADDR’]”,但这会返回我服务器的LAN IP(例如192.168.1.100).我想要外部IP.
解决方法:
只需查询返回您的IP地址的主机:
$externalCOntent= file_get_contents('http://checkip.dyndns.com/');
preg_match('/Current IP Address: \[?([:.0-9a-fA-F]+)\]?/', $externalContent, $m);
$externalIp = $m[1];
或者,设置一个只响应IP的服务,并像这样使用它:
$externalIp = file_get_contents('http://yourdomain.example/ip/');
只需回显远程IP地址,或者付某人托管,即可自行设置服务.未经许可,请勿使用其他人的服务器.以前,这个答案与我的服务有关,现在每秒都会被多次击中.
请注意,在具有一个或多个NATs的IP网络中,您可能有多个外部IP地址.这只会给你一个.
此外,此解决方案当然取决于可用的远程主机.但是,由于没有广泛实施的标准(没有ISP,只有一些家用路由器实现UPnP),没有其他方法可以获得外部IP地址.即使您可以与本地NAT通信,也无法确定其背后是否存在其他NAT.