PHP中机器的IP地址为::1,但为什么?
我正在尝试通过php获取我的机器的ip地址。为此,我编写了如下代码:PHP中机器的IP地址为::1,但为什么?,php,ip-address,Php,Ip Address,我正在尝试通过php获取我的机器的ip地址。为此,我编写了如下代码: <?php echo "<br />".$_SERVER['REMOTE_ADDR'];?> 但这段代码不起作用。它正在返回“::1”。 请帮助我如何获取实际IP地址。$\u SERVER['REMOTE\u ADDR']是客户端的IP地址 $\u SERVER['SERVER\u ADDR']是服务器的IP地址 参考资料:查看phpinfo()的输出。如果该地址不在该页面上,则无法通过PHP直
<?php echo "<br />".$_SERVER['REMOTE_ADDR'];?>
但这段代码不起作用。它正在返回“::1
”。
请帮助我如何获取实际IP地址。$\u SERVER['REMOTE\u ADDR']是客户端的IP地址 $\u SERVER['SERVER\u ADDR']是服务器的IP地址
参考资料:查看
phpinfo()
的输出。如果该地址不在该页面上,则无法通过PHP直接获取该地址。如果您的意思是获取用户的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地址,而不考虑代理等。
::1
是实际IP。它是一个ipv6环回地址(即本地主机)。如果您使用的是ipv4,它将是127.0.0.1
如果您想获得不同的IP地址,则需要通过不同的网络接口连接到服务器。如果您试图运行localhost,此答案将解决您的问题。只有很少的变化
apache2/httpd.conf
搜索所有“倾听”单词
例:
像这样做
Listen 127.0.0.1:80
然后重新启动apache
$_SERVER[REMOTE_ADDR]
将显示收听127.0.0.1
您可以在这个简单的答案中看到答案:您正在本地服务器上使用它。 试着跑步
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执行器
$\u SERVER['REMOTE\u ADDR']
不是您机器的IP地址。可能的重复项:——或者如果您需要其他东西——是哪台机器的?运行PHP的服务器是什么?连接到服务器的浏览器正在运行的桌面?::1是localhost的别名::1
是实际的IP。这是一个ipv6环回地址(即localhost)。它不是对所问问题的答案,但它很有用。我假设OP实际上就是这个意思,但我可能错了。我想他/她只是好奇为什么$\u SERVER['REMOTE\u ADDR']
返回::1
。也许我错了。这个答案非常不安全,因为任何人都可以设置一个“X-Forwarded-For”头并欺骗另一个IP。$http_client_IP=$_SERVER['http_client_IP']$http_x_forwarded_for=$_SERVER['http_x_forwarded_for']$远程地址=$\u服务器['remote\u addr'];if(!empty($http_client_ip)){$ip_address=$http_client_ip;}else if(!empty($http_x_forwarded_for)){$ip_address=$http_forwarded_;}else{$ip_address=$remote_addr;}echo$ip_address;'为什么突然投了反对票?这个答案表明这些信息对PHP可用或不可用。
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();