php – 我如何跟踪访问者的国家和重定向到适当的网站?

前端之家收集整理的这篇文章主要介绍了php – 我如何跟踪访问者的国家和重定向到适当的网站?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想跟踪访问者的国家,然后将其重定向到我的网站的适当子域,就像谷歌所做的那样…

而且,如果我应该使用任何的,我可以依赖api数据的程度?

我正在使用PHP ..

下载并安装 Maxmind’s GeoLite Country数据库,其中99.5%的准确性要求.您可以支付升级到付费版本,声称的99.8%的准确性.有关如何使用PHP数据库有四个选项:

>下载CSV文件并将其导入到您选择的sql数据库中.这是最慢的选择,并且有一个丑陋的API.我不会推荐它,但它包括为了完整性.
>下载一个可以读取数据库文件的纯PHP类.这提供了一个比sql选项更好的API,但仍然有点慢.有PHP4PHP5的版本
>下载并安装C extension module for PHP.这具有nice interface的优点和良好的性能.然而,比纯PHP类更难安装,所以您可能需要向您的托管公司查询.如果你幸运的话,可能已经安装好了.
>如果您需要快速的表现,请与Apache module一起使用.这是最难安装的,也是最快的选择.

所有这些选项都有一个获取国家/地区代码方法.我不会包括sql选项,但可以获得@L_403_6@.

PHP4:

include("geoip.inc");
$gi = geoip_open("/usr/local/share/GeoIP/GeoIP.dat",GEOIP_STANDARD);
$code = geoip_country_code_by_addr($gi,"24.24.24.24");

PECL PHP扩展:

$code = geoip_country_code_by_name($_SERVER['REMOTE_ADDR']);

Apache模块:

$code = apache_note("GEOIP_COUNTRY_CODE");

然后,您可以使用HTTP重定向根据这些代码进行重定向

$redirect = array("AU" => "http://australia.example.com","NZ" => "http://newzealand.example.com")
 $url = $redirect[$code]
 header("Location: $url");

这会导致两个HTTP请求,因此不是最佳的.更好的方法是在.htaccess文件中使用Apache模块进行重写:

GeoIPEnable On
GeoIPDBFile /path/to/GeoIP.dat

# Redirect one country
RewriteEngine on
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^CA
RewriteRule ^(.*)$http://www.canada.com$1 [L]

# Redirect multiple countries to a single page
RewriteEngine on
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^(CA|US|MX)$
RewriteRule ^(.*)$http://www.northamerica.com$1 [L]

当然,可以这样做的一个更好的办法是让别人在DNS层面为你做这个.一个快速搜索显示this company,(我不知道他们是否好)毫无疑问有其他人.这是Google做的.

猜你在找的PHP相关文章