3

是否可以从用户访问站点的地方获取大陆?我知道我可以像这样获得浏览器的语言:::

<?php
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
switch ($lang){
    case "fr":
        //echo "PAGE FR";
        include("index_fr.php");//include check session FR
        break;
    case "it":
        //echo "PAGE IT";
        include("index_it.php");
        break;
    case "en":
        //echo "PAGE EN";
        include("index_en.php");
        break;        
    default:
        //echo "PAGE EN - Setting Default";
        include("index_en.php");//include EN in all other cases of different lang detection
        break;
}
?>

参考

我也知道有一些php函数调用-> geoip_continent_code_by_name 如果传递一个带有主机名的字符串,它将返回我:

代码 大陆名称

AF  Africa
AN  Antarctica
AS  Asia
EU  Europe
NA  North america
OC  Oceania
SA  South america

但这只会返回我的主机名,那么除了访问该站点的用户之外,还有什么方法可以获得相同的结果?甚至有可能做到吗?

4

2 回答 2

1

我建议一开始就使用 Maxmind GeoLite2 数据库。它具有知识共享许可,如果您需要更完整的 IP 覆盖,您可以在以后升级到商业 GeoIP2 数据库。该数据库中提供了国家和大陆代码。

我在这里描述了如何编译扩展,以及如何在 PHP 中使用 mmdb 数据库:

使用 Kohana PHP 介绍 Maxmind GeoLite2

在此处输入图像描述

于 2014-03-10T21:49:20.150 回答
1

您可以根据 $_SERVER["REMOTE_ADDR"] 中的用户 IP 地址获取地理位置数据库,并从那里确定城市/国家。

MaxMind 在这里提供了一个免费的城市/国家数据库:http: //dev.maxmind.com/geoip/geoip2/geolite2/

于 2013-09-11T20:03:21.007 回答