当前位置

一个判断访问者是否来自中国大陆的Drupal模块及PHP函数

James Qi 在 2017年3月24日 - 12:31 提交
内容摘要:一直以来我们放在国外服务器上的网站在国内访问都很慢,当网站中包含有Google地图等内容的时候,更是在国内访问会被卡住,等待几十秒后才打开页面剩余部分,而地图部分也是空白。 去年在做ipshu.......

  一直以来我们放在国外服务器上的网站在国内访问都很慢,当网站中包含有Google地图等内容的时候,更是在国内访问会被卡住,等待几十秒后才打开页面剩余部分,而地图部分也是空白。

  去年在做ipshu.com网站的时候也是遇到这个问题,因为这个站本身就是判断IP地址的,所以也方便解决,当时记录了一篇博客《让国内国外都可以调用Google地图API》,采用的其中第二种办法。

  但其它放在国外的网站依然没有解决,昨天干脆去编写了一个简单的Drupal模块in_china(放在本文的附件中),主要作用就是定义一个PHP函数in_china(),用于判断访问者IP地址是否属于中国大陆,如果属于返回True,反之返回False。

  in_china模块一共4个文件:

  • in_china.info :模块定义文件
  • in_china.module :函数in_china()定义文件
  • in_china_IP-COUNTRY.BIN :IP库文件
  • in_china_IP2Location.php :读取IP库中内容的文件

  在Drupal网站中放置该模块文件、开启该模块,就可以用in_china()这个定义的PHP函数了,在node--xxx.tpl.php显示模板中进行下面的修改:

...
if (in_china()) {
    $google_map_url = '//ditu.google.cn/maps/api/js?sensor=false&language=zh-CN';
} else {
    $google_map_url = '//maps.google.com/maps/api/js?sensor=false';
} 
...
...
<script type='text/javascript' src='$google_map_url'></script>
...

  也就是根据访问者是否在国内来修改使用不同的google api地址,国内用ditu.google.cn的。实际使用效果达到预期,以后还可以对IP库、读取程序进行优化,提高性能。

  非Drupal系统的其它PHP程序其实也一样可以用这个函数,下载附件、解压后打开就可以看到源代码,根据自己的需要来复制到自己的程序中进行调用就可以。

自由标签:

附件大小
Package icon Drupal模块in_china1.05 MB

评论

-- 发自IP地址: 61.183.172.45 (位置 | 谁是)

谢谢过奖,本来我就一直在用开源软件,是分享的直接受益者,能做点点贡献就很高兴了。只是这个程序比较简单、需求可能也不多,就不到drupal官方网站上去单独添加一个第三方扩展程序了,直接放在我的博客中。

James Qi / 祁劲松

添加新评论

Plain text

  • 不允许使用HTML标签。
  • 自动将网址与电子邮件地址转变为链接。
  • 自动断行和分段。
验证码
本问题用于测试您是否为人类访问者,避免自动垃圾发贴。
图形验证
键入显示在图片中的字符