在WordPress中应用PHP脚原本判别访客来自什么国度

区分访客国度有什么用?

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

1.区分网站性能
这个博客有翻译文章的性能, 这是为了不便海内访客浏览文章, 但对中国人显得非常多余. 所以我经过 IP 判别国度, 对中国大海洋区屏蔽翻译性能.

2.区分展现广告
比方中国大海洋区在侧边栏最下方看到的是拿福能的广告, 而其余地域看到的是 Google 的广告. hostucan 是我的一个广告主, 有英文网站, 也有中文网站, 所以我能够向他提供区分展现效劳, 省得糜费流量.

3.屏蔽布点效劳
海内有很多好的效劳平台, 在网站上布点即可采集数据和分享文章. 但很可怜, 由于某些缘由, 他们在国际展现成果并不好, 岂但没有起到应无效果, 还让页面加载工夫变长. 能够对大陆访客屏蔽这些布点.

在 PHP 经过 IP 区分国度

如何用 PHP 经过 IP 区分国度和地域呢? Maxmind.com 提供一套 GeoIP 的处理计划, 只要要简略几步即可在 PHP 中经过 IP 判别访客的国度.

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

下载 GeoID.dat.gz, 解压为 GeoIP.dat 文件.
下载 geoip.inc.
2. 经过 PHP 代码获取国度信息
以下是一段示范代码, 演示如何获取国度代号和国度称号.

<?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 文件内容如下.

<?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 文件, 在文件顶部退出代码如下.

<?php include('include/geoip.php'); ?>

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

<?php
 
global $countryCode;
 
if($countryCode == 'CN') {
 // 中国大海洋区执行的代码
} else if($countryCode == 'US') {
 // 美国地域执行的代码
} else {
 // 中国大陆和美国以当地区执行的代码
}
 
?>


可能有人会问, 加这么个货色, 功能如何? 会不会要求弱小的效劳器? 我测试过, 失常的效劳器上简直不影响页面加载功能, 能够看看这个博客的速度. 假如不释怀, 本人测一下.

PS:采纳IP查问API接口
国际不少互联网公司例如腾讯、新浪以及淘宝都有IP查问接口,间接调用查问即可。

(1)腾讯IP分享方案

代码如下:


/**依据腾讯IP分享方案的地址获取IP所在地,比拟准确*/function getIPLoc_QQ($ip1){$url = 'http://ip.qq.com/cgi-bin/searchip?searchip1='.$ip1;$ch = curl_init($url);curl_setopt($ch,CURLOPT_ENCODING ,'gb2312');curl_setopt($ch, CURLOPT_TIMEOUT, 10);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) ; // 获取数据前往$result = curl_exec($ch);$result = mb_convert_encoding($result, "utf-8", "gb2312"); // 编码转换,否则乱码curl_close($ch);preg_match("@<span>(.*)</span></p>@iU",$result,$ipArray);$loc = $ipArray[1];return $loc;}

(2)新浪IP查问接口

代码如下:


/**依据新浪IP查问接口获取IP所在地*/function getIPLoc_sina($ip1){$url = 'http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip='.$ip1;$ch = curl_init($url);//curl_setopt($ch,CURLOPT_ENCODING ,'utf8');curl_setopt($ch, CURLOPT_TIMEOUT, 10);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) ; // 获取数据前往$location = curl_exec($ch);$location = json_decode($location);curl_close($ch); $loc = "";if($location===FALSE) return "";if (emptyempty($location->desc)) {$loc = $location->province.$location->city.$location->district.$location->isp;}else{$loc = $location->desc;}return $loc;}

(3)应用淘宝IP接口

代码如下:


/** * 依据淘宝IP查问接口获取IP所在地 */function getCity($ip){$url="http://ip.taobao.com/service/getIpInfo.php?ip=".$ip;$ip=json_decode(file_get_contents($url));if((string)$ip->code=='1'){ return false; } $data = (array)$ip->data;return $data;}


总结

经过 IP 判别访客起源非常精准的, 如今一些外贸网站都是经过这个办法向用户进行展现区分, 比方美国地域的用户默许看到美国能买到的商品和美国物流信息. 但不是**的精确, 比方某人终年翻墙, 那他可能不断看不到外国的信息. 至于能否需求区分解决, 网站次要有所思考.

以上就是安达网络工作室关于《在WordPress中使用PHP脚本来判断访客来自什么国家》的一些看法。更多内容请查看本栏目更多内容!

本文相关话题: WordPress 访客 区域 PHP PHP编程
版权声明:本文为 安达网络工作室 转载文章,如有侵权请联系我们及时删除。
相关文章
修正WordPress中文章编辑器的款式的办法详解

自定义文章编辑器的款式 每一个 WordPress 主题的文章款式都是不一样的,然而在应用后盾的可视化编辑器编辑...

wordpress 上传附件中文文件名乱码处理方法(for Windows)

然而将站点部署到一个Windows XP 中文版上时,发现上传的附件在效劳器的文件名为乱码,而URL是失常的,阐明...

判别、增加和删除WordPress置顶文章的相干PHP函数小结

判别置顶文章 is_sticky() 函数用来判别一篇文章能否为置顶文章。 用法 is_sticky( $post_id ); 参数 $p...

WordPress 搜寻框增加文字提醒的办法

如在 Nicky 的博客中, 我发现了下图中的搜寻栏. 在搜寻栏中增加这样的提醒信息, 能够疏导访客对网站进行搜...

完满处理wordpress sae版改域名后不能进入后盾的成绩

处理方法: 办法一: 修正文件&ldquo;/wp-includes/pluggable.php&rdquo;中的wp_set_auth_cookie函数。搜寻...

WordPress查问某年某月文章的SQL语句

利用$wpdb自定义查问能够调用某年下的月份归档, 例如调用2014年月份归档的代码如下所示。复制代码代码如下:...

需求提交

客服服务