我是这个代码来获取我的locolhost上的IP地址,我得到了
::1
结果
代码是:
function ip()
{
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'];
}
return $ip;
}
echo ip();
哪里出错?
实际上,我想获得国家和地区我获得IP之后的城市名称...还有其他解决方案吗?
由于
答案 0 :(得分:7)
:: 1是localhost的简写,使用IPv6术语,因此它正在运行。尝试使用您的主机名进行连接,您应该看到地址更改更明显是一个地址...
答案 1 :(得分:2)
您可以使用以下内容:
$server_address = $_SERVER['SERVER_ADDR'];
$port_used = $_SERVER['SERVER_PORT'];
$ip_address = $_SERVER['REMOTE_ADDR'];
// on my test machine this gives the following results:
$server_address = 127.0.0.1
$port_used = 80
$ip_address = 127.0.0.1
已编辑,以包含问题的地理位置方面,在我提交原始答案后,我才注意到这一点。
我不会重复在其他地方找到的答案,而是首先链接到这个(答案很好的)SO问题: google-geolocation-api-library,然后是搜索字词geolocation php site:stackoverflow.com的Google搜索结果页面,其链接到许多其他可能相关的答案,这些答案可能比我能够更好地解决您的问题。
答案 2 :(得分:2)
@Roland写道,它是一个IPv6地址。如果您不打算在应用程序中使用IPv6,则应告知Web服务器停止侦听IPv6端口。当您发送请求时,客户端将首先尝试IPv6,如果它不起作用,那么它将回退到IPv4,您应该得到更熟悉的127.0.0.1。
答案 3 :(得分:0)
如果你是print_r($ _ SERVER),你会看到哪些信息可用,它看起来是什么,以及哪些字段可能是空的。