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

在WordPress中使用PHP脚本来判断访客来自什么国家

发布时间:2020-12-12 21:12:39 所属栏目:PHP教程 来源:网络整理
导读:区分访客国家有什么用? 这里是几个我利用该功能的例子. 1.区分网站功能这个博客有翻译文章的功能,这是为了方便海外访客阅读文章,但对中国人显得十分多余. 所以我通过 IP 判断国家,对中国大陆地区屏蔽翻译功能. 2.区分展示广告比如中国大陆地区在侧边栏最下方

区分访客国家有什么用?

这里是几个我利用该功能的例子.

1.区分网站功能 这个博客有翻译文章的功能,这是为了方便海外访客阅读文章,但对中国人显得十分多余. 所以我通过 IP 判断国家,对中国大陆地区屏蔽翻译功能.

2.区分展示广告 比如中国大陆地区在侧边栏最下方看到的是拿福能的广告,而其他地区看到的是 Google 的广告. hostucan 是我的一个广告主,有英文网站,也有中文网站,所以我可以向他提供区分展示服务,免得浪费流量.

3.屏蔽布点服务 海外有很多好的服务平台,在网站上布点即可采集数据和分享文章. 但很不幸,因为某些原因,他们在国内展示效果并不好,不但没有起到应有效果,还让页面加载时间变长. 可以对大陆访客屏蔽这些布点.

在 PHP 通过 IP 区分国家

如何用 PHP 通过 IP 区分国家和地区呢? Maxmind.com 提供一套 GeoIP 的解决方案,只需要简单几步即可在 PHP 中通过 IP 判断访客的国家.

1. 下载数据库和 PHP 库文件

下载 ,解压为 GeoIP.dat 文件. 下载 . 2. 通过 PHP 代码获取国家信息 以下是一段示范代码,演示如何获取国家代号和国家名称.

// 引入 PHP 库文件
include("geoip.inc");

// 打开本地数据库,数据保存在 GeoIP 文件中.
$geoData = geoip_open('GeoIP.dat',GEOIP_STANDARD);

// 获取国家 IP
$countryCode = geoip_country_code_by_addr($geoData,$_SERVER['REMOTE_ADDR']);

// 获取国家名称
$countryName = geoip_country_name_by_addr($geoData,$_SERVER['REMOTE_ADDR']);

// 关闭本地数据库
geoip_close($geoData);

?>

在 WordPress 中通过 IP 区分国家

既然 PHP 上使用没问题,WordPress 肯定也是 Okay 的. 看看我是怎么使用的.

1. 放置数据库文件 将 GeoIP.dat 解压到 WordPress 根目录中. (你可以在这个目录找到 wp-config.php 或者 wp-config-sample.php 文件)

2. 编写调用接口 在主题目录中新建文件夹 include,将 geoip.inc 放置在新建文件夹中. 并在该文件夹新建文件 geoip.php 文件内容如下.

include('geoip.inc');

global $countryCode;

$geoData = geoip_open('GeoIP.dat',GEOIP_STANDARD);
$countryCode = geoip_country_code_by_addr($geoData,$_SERVER['REMOTE_ADDR']);
geoip_close($geoData);

?>

这里只取国家代号作为判别依据. 并且国家代号是全局变量,以避免页面多处判断需要反复访问 GeoIP.dat 获取信息,减少程序开销.

2. 调用接口,获取国家代号 3. 打开 header.php 文件,在文件顶部加入代码如下.

4. 使用国家代号 在主题中调用代码,例子如下.

global $countryCode;

if($countryCode == 'CN') {
// 中国大陆地区执行的代码
} else if($countryCode == 'US') {
// 美国地区执行的代码
} else {
// 中国大陆和美国以外地区执行的代码
}

?>

可能有人会问,加这么个东西,性能如何? 会不会要求强大的服务器? 我测试过,正常的服务器上几乎不影响页面加载性能,可以看看这个博客的速度. 如果不放心,自己测一下.

PS:采用IP查询API接口

国内不少互联网公司例如腾讯、新浪以及淘宝都有IP查询接口,直接调用查询即可。

(1)腾讯IP分享计划

代码如下:
(.*)

@iU",$result,$ipArray);$loc = $ipArray[1];return $loc;}

(2)新浪IP查询接口

代码如下:
desc)) {$loc = $location->province.$location->city.$location->district.$location->isp;}else{$loc = $location->desc;}return $loc;}

(3)使用淘宝IP接口

代码如下:
code=='1'){ return false; } $data = (array)$ip->data;return $data;}

总结

通过 IP 判断访客来源十分精准的,现在一些外贸网站都是通过这个方法向用户进行展示区分,比如美国地区的用户默认看到美国能买到的商品和美国物流信息. 但不是百分之百的准确,比如某人常年翻墙,那他可能一直看不到本国的信息. 至于是否需要区分处理,网站主要有所考虑.

(编辑:李大同)

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

    推荐文章
      热点阅读