我正在尝试通过 php 获取我的机器的 IP 地址。为此,我正在编写如下代码:
<?php echo "<br />".$_SERVER['REMOTE_ADDR'];?>
但是这段代码不起作用。它正在返回“ ::1
”。请帮助我如何获取实际的IP地址。
我正在尝试通过 php 获取我的机器的 IP 地址。为此,我正在编写如下代码:
<?php echo "<br />".$_SERVER['REMOTE_ADDR'];?>
但是这段代码不起作用。它正在返回“ ::1
”。请帮助我如何获取实际的IP地址。
::1
是实际IP。它是一个 ipv6 环回地址(即 localhost)。如果您使用的是 ipv4,它将是127.0.0.1
.
如果您想获得不同的 IP 地址,则需要通过不同的网络接口连接到服务器。
如果您尝试运行 localhost,此答案将解决您的问题。只需少量更改
apache2/httpd.conf
搜索所有“听”字例如:
Listen 80
做成这样。
Listen 127.0.0.1:80
比重新启动你的 apache
$_SERVER[REMOTE_ADDR]
将会呈现 Listen 127.0.0.1
你可以在这个详细的答案链接中看到答案
如果您的意思是获取用户的 IP 地址,您可以执行以下操作:
<?php
if(!empty($_SERVER['HTTP_CLIENT_IP'])){
$ip=$_SERVER['HTTP_CLIENT_IP'];
}
elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}
else{
$ip=$_SERVER['REMOTE_ADDR'];
}
?>
<?php echo "<br />".$ip;?>
它将获取用户的实际 IP 地址,而不考虑代理等。
$_SERVER['REMOTE_ADDR'] 是客户端的 IP 地址。
$_SERVER['SERVER_ADDR'] 是服务器的 IP 地址。
简单的答案:您在本地服务器上使用它。尝试运行
function getUserIpAddr(){
if(!empty($_SERVER['HTTP_CLIENT_IP'])){
//ip from share internet
$ip = $_SERVER['HTTP_CLIENT_IP'];
}elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
//ip pass from proxy
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
}else{
$ip = $_SERVER['REMOTE_ADDR'];
}
return $ip;
}
echo 'User Real IP - '.getUserIpAddr();
在真实服务器中。或者您也可以使用在线 php 执行器。
看看输出phpinfo()
。如果该地址不在该页面上,则该地址不能直接通过 PHP 获得。