加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 14:07:45 所属栏目:PHP教程 来源:网络整理
导读:我想跟踪访问者的国家,然后将其重定向到我的网站的适当子域,就像谷歌所做的那样… 而且,如果我应该使用任何的,我可以依赖api数据的程度? 我正在使用php .. 下载并安装 Maxmind’s GeoLite Country数据库,其中99.5%的准确性要求.您可以支付升级到付费版本,
我想跟踪访问者的国家,然后将其重定向到我的网站的适当子域,就像谷歌所做的那样…

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

我正在使用php ..

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

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

所有这些选项都有一个获取国家/地区代码的方法.我不会包括SQL选项,但可以获得more info here.

纯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做的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读