我试图通过PHP来取我的机器的IP地址。 对于我写的代码,如:
<?php echo "<br />".$_SERVER['REMOTE_ADDR'];?>
但是这段代码不能正常工作。 它返回“ ::1
”。 请帮我如何获得实际的IP地址。
我试图通过PHP来取我的机器的IP地址。 对于我写的代码,如:
<?php echo "<br />".$_SERVER['REMOTE_ADDR'];?>
但是这段代码不能正常工作。 它返回“ ::1
”。 请帮我如何获得实际的IP地址。
::1
是实际的IP。 这是一个IPv6的环回地址(即本地主机)。 如果你使用的是IPv4这将是127.0.0.1
。
如果你想获得一个不同的IP地址,那么你就需要通过不同的网络接口连接到服务器。
如果你正在尝试到本地主机上运行,这个答案将解决您的问题。 在只有几变化
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地址。
参考: http://php.net/manual/en/reserved.variables.server.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();
在真实服务器。 或者您也可以在线用户PHP执行。
看看输出phpinfo()
如果地址不在该网页上,然后在地址不可直接通过PHP。