Php “如何打印”;“公众”;您所在网站的IP地址?
到目前为止,我已经尝试:Php “如何打印”;“公众”;您所在网站的IP地址?,php,ip,host,Php,Ip,Host,到目前为止,我已经尝试: echo gethostbyname(gethostname()) 但这给了我“本地”IP(不确定这是否是正确的术语)127.0.0.1,而我想要“公共”IP地址 例如,对于stackoverflow.com网站,我在使用该网站服务时获得151.101.193.69。。。这就是我要找的。gethostbyname(“example.com”)返回指定服务器/域的IPv4 关于这方面的更多信息: 因此,要获取服务器的外部IP,必须指定域名,因为gethostname()将
echo gethostbyname(gethostname())代码>
但这给了我“本地”IP(不确定这是否是正确的术语)127.0.0.1
,而我想要“公共”IP地址
例如,对于stackoverflow.com网站,我在使用该网站服务时获得151.101.193.69
。。。这就是我要找的。gethostbyname(“example.com”)代码>返回指定服务器/域的IPv4
关于这方面的更多信息:
因此,要获取服务器的外部IP,必须指定域名,因为gethostname()
将返回本地IP地址使用此代码
function getIPAddress() {
//whether ip is from the share internet
if(!empty($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
}
//whether ip is from the proxy
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
//whether ip is from the remote address
else{
$ip = $_SERVER['REMOTE_ADDR'];
}
return $ip;
}您必须连接到另一台服务器以确定其IP地址,除非在配置中的某个位置对其进行了硬编码。如果您试图获取我公司网站的公共IP,您将得到不同的答案,具体取决于一天中的时间、国家和一系列其他内容,因为我们支持Cloudflare。但一般来说,您可以查找站点的A或CNAME记录,这可能会让您了解一些您正在查找的内容。但我也会查询公共DNS服务器,而不是内部DNS服务器。嗯,我明白了,所以最好调用第三方API并打印输出?我想这真的取决于你在做什么。对于我的一个客户机,当我将VPN接入他们的网络时,他们服务器的IP从公共地址变为专用的10.x.x.x地址。然而,这是一种边缘情况。在这种情况下,要么使用API,要么使用DNS查找。对于后者,我没有尝试过,但根据文档中的注释,如果在域名后加上句点,它将使用机器的DNS而不是可能的主机文件<代码>gethostbyname(gethostname()。。。)
我从未尝试过这个方法,但它很有意义…如果您想要客户端Ip地址。。。不,他们不想那样。另外,如果您仔细阅读OP的问题,您会发现他们已经尝试了gethostbyname()
。顺便说一句,我建议不要使用W3傻瓜作为参考。这给了我127.0.0.1
-我正在寻找我实际访问的网站的“公共”IP。就像你在一个网站上,上面写着“我们网站的公共IP是X”对不起,我误解了这个问题。我对它进行了编辑并提供了进一步的解释。@Drewdavid您必须指定域名,因为gethostname()将返回本地IP地址