怎么在WordPress中使用PHP脚本判断访客的来源?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
1。区分网站功能
这个博客有翻译文章的功能,这是为了方便海外访客阅读文章,但对中国人显得十分多余。所以我通过IP判断国家,对中国大陆地区屏蔽翻译功能。
2。区分展示广告
比如中国大陆地区在侧边栏最下方看到的是拿福能的广告,而其他地区看到的是谷歌的广告。hostucan是我的一个广告主,有英文网站,也有中文网站,所以我可以向他提供区分展示服务,免得浪费流量。
3。屏蔽布点服务
海外有很多好的服务平台,在网站上布点即可采集数据和分享文章。但很不幸,因为某些原因,他们在国内展示效果并不好,不但没有起到应有效果,还让页面加载时间变长。可以对大陆访客屏蔽这些布点。
<>强在PHP通过IP区分国家强>
如何用PHP通过IP区分国家和地区呢?Maxmind.com提供一套GeoIP的解决方案,只需要简单几步即可在PHP中通过IP判断访客的国家。
1。下载数据库和PHP库文件
下载GeoID.dat。广州,解压为GeoIP。dat文件。
下载geoip.inc。
2。通过PHP代码获取国家信息
以下是一段示范代码,演示如何获取国家代号和国家名称。
& lt; php ? ,//,引入,PHP 库文件 包括(“geoip.inc"); ,//,打开本地数据库,,数据保存在,GeoIP 文件中。 $ geoData =, geoip_open (& # 39; GeoIP.dat& # 39;,, GEOIP_STANDARD); ,//,获取国家,IP countryCode 美元;=,geoip_country_code_by_addr(地理数据,美元$ _SERVER [& # 39; REMOTE_ADDR& # 39;]); ,//,获取国家名称 countryName 美元;=,geoip_country_name_by_addr(地理数据,美元$ _SERVER [& # 39; REMOTE_ADDR& # 39;]); ,//,关闭本地数据库 geoip_close($地理数据); , ?在
<强>在WordPress中通过IP区分国家强>
既然PHP上使用没问题,WordPress肯定也是好了的。看看我是怎么使用的。
1。放置数据库文件
将GeoIP。dat解压到WordPress根目录中。(你可以在这个目录找到wp-config。php或者wp-config-sample。php文件)
2。编写调用接口
在主题目录中新建文件夹包括,将geoip。公司放置在新建文件夹中。并在该文件夹新建文件geoip。php文件内容如下。
& lt; php ? , 包括(& # 39;geoip.inc& # 39;); , global countryCode美元; , $ geoData =, geoip_open (& # 39; GeoIP.dat& # 39;,, GEOIP_STANDARD); countryCode 美元;=,geoip_country_code_by_addr(地理数据,美元$ _SERVER [& # 39; REMOTE_ADDR& # 39;]); geoip_close($地理数据); , 祝辞;
这里只取国家代号作为判别依据。并且国家代号是全局变量,以避免页面多处判断需要反复访问GeoIP。dat获取信息,减少程序开销。
2。调用接口,获取国家代号
3。打开的头。php文件,在文件顶部加入代码如下。
& lt; ? php 包括(& # 39;包括/geoip.php& # 39;);, ?在
4。使用国家代号
在主题中调用代码,例子如下。
& lt; php ? , global countryCode美元; , if ($ countryCode ==, & # 39; cn # 39;), { ,//中国大陆地区执行的代码 },else 如果(countryCode 美元==,& # 39;我们# 39;),{ ,//美国地区执行的代码 },{else ,//中国大陆和美国以外地区执行的代码 } , 祝辞;
可能有人会问,加这么个东西,性能如何?会不会要求强大的服务器吗?我测试过,正常的服务器上几乎不影响页面加载性能,可以看看这个博客的速度。如果不放心,自己测一下。
<>强PS:采用IP查询API接口
强>国内不少互联网公司例如腾讯,新浪以及淘宝都有IP查询接口,直接调用查询即可。
(1)腾讯IP分享计划
代码如下:
/* *根据腾讯IP分享计划的地址获取IP所在地,比较精确*/函数getIPLoc_QQ (ip1美元){$ url=& # 39; http://ip.qq.com/cgi-bin/searchip?searchip1=& # 39; ip1美元;$ ch=curl_init ($ url); curl_setopt ($ ch CURLOPT_ENCODING & # 39; gb2312 # 39;); curl_setopt (ch美元CURLOPT_TIMEOUT 10); curl_setopt ($ ch CURLOPT_RETURNTRANSFER真实);//获取数据返回$结果=curl_exec (ch);结果=mb_convert_encoding美元(美元的结果,“utf-8",“gb2312");//编码转换,否则乱码curl_close (ch); preg_match (“@< span> (. *) & lt;/span> & lt;/p> @iU",因此,美元ipArray美元);loc=ipArray美元[1];返回loc美元;}