TypeCodes

WordPress使用淘宝IP地址库的API显示评论者的位置信息(二)

1 淘宝IP地址库的接口说明

在上一篇文章《WordPress使用淘宝IP地址库的API显示评论者的位置信息(一)》中,vfhky使用了新浪工具提供的这个IP接口显示博客评论者的位置信息。那么这篇文章就接着写在WordPress中使用淘宝IP地址库的API显示评论者的位置信息。这个功能的实现需要储备一些jQuery、json等基础知识,所以如果说上一篇是jQuery版本的新浪IP地址库的API应用,那么这篇文章就是jQuery版本的淘宝IP地址库的API应用。淘宝IP地址库的接口说明文档地址是:http://ip.taobao.com/instructions.php,大家可以去参考下。下面是在WP博客中如何利用淘宝IP地址库实现评论者位置详情的显示。

wordpress评论使用淘宝IP地址库的API

2.1 修改主题评论WEB结构(functis.php)

正如上一篇文章提到的,我们首先需要找到评论信息显示列表的那个文件(博主的是functions.php),在相应的位置加上如下代码。其作用是在jQuery获取IP信息之前,显示“正在查询……”的字样。代码中的waiting.gif是上面省略号的动态图片,这个看个人喜好来决定需不需要用;$ip代表从数据查询出来的评论者的IP数据。

<span class="vfhkyipquery" data-ip="' . $ip . '">正在查询<img src="' . get_bloginfo('template_url') . '/images/waiting.gif" alt="..." style="vertical-align:baseline;" /></span>
2.2 修改JS文件

找到主题文件目录下的一个js文件,然后添加以下代码(注意该js文件一定要是会在文章页面加载的哦!)最终的显示效果会类似于:中国江苏南京 电信。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/************
 *** @Function:jQuery获取淘宝IP地址库API返回的信息
 *** @Author:vfhky http://vfhky.sinaapp.com 20130825
 *** @param string GhpcyBpcy94db71979d35aBhIGV4YW1wbGUd7ebf4317e0de919     由Jquery传送过来的IP地址     
 *** @return string "<span class=ipinfo>中国江苏南京 电信</span>"
************/
$(document).ready(function(c){
 function d(){
  c(".vfhkyipquery").each(function(){
   var a=c.trim(c(this).attr("data-ip")),i=c(this),h="";
   var b="http://vfhky.sinaapp.com/MTBkN2ViZjQzMTdlMGR.php?GhpcyBpcy94db71979d35aBhIGV4YW1wbGUd7ebf4317e0de919=";
   b+=a;
   c.getJSON(b,function(e){
    h+=e.data.country;
    h+=e.data.region;
    h+=e.data.city;
    h+=" ";
    h+=e.data.isp;
    h=h.replace(/省/g,'');
    h=h.replace(/市/g,'');
    i.replaceWith("<span class=ipinfo>"+h+"</span>")
   })
  })
 }

 c(function(){
  d();
 })
});
2.3 新建一个任意命名的PHP文件

新建一个平PHP文件,任意命名(但尽量复杂点),例如MTBkN2ViZjQzMTdlMGR.php。然后把这个文件放在博客的FTP根目录或者主题目录下面,只要记录这个文件的路径就行了,因为待会在jQuery中会用到它。这个PHP文件的主要功能是接收由Jquery文件传送过来的IP参数,然后拼接成一个淘宝IP库的API标准请求URL并读取接口返回的所有数据信息。具体代码如下所示:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php
 /*********
  *** @Filename:MTBkN2ViZjQzMTdlMGR.php
  *** @Function:淘宝API的标准get请求报文
  *** @Author:vfhky http://vfhky.sinaapp.com 20130825
  *** @param string GhpcyBpcy94db71979d35aBhIGV4YW1wbGUd7ebf4317e0de919     其值代表由Jquery传送过来的IP地址     
  *** @return string $data  淘宝API返回的数据(包括Json格式的IP地址信息详情)
 **********/

 //prevent load this file directly
 if (empty($_SERVER['HTTP_REFERER']) || strpos($_SERVER['HTTP_REFERER'], $_SERVER['HTTP_HOST']) === false) {
   exit;
 }

 $c572bd935510d7ebf4317e0de91994db71979d35a = trim($_GET['GhpcyBpcy94db71979d35aBhIGV4YW1wbGUd7ebf4317e0de919']);

 //check if the ip address is ipv4
 if(!filter_var($c572bd935510d7ebf4317e0de91994db71979d35a, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
   exit;
 }

 //if the ip address is ipv4 then
 $ip=explode(".",$c572bd935510d7ebf4317e0de91994db71979d35a);

 //check if the $ip is legel
 for($i=0;$i<count($ip);$i++)
 {  
   if($ip[$i]>255){  
    exit;  
   }
 }

 //prevent the sql-injection(From:http://vfhky.sinaapp.com/web/php/20.html)
 $c572bd935510d7ebf4317e0de91994db71979d35a = trim($c572bd935510d7ebf4317e0de91994db71979d35a);
 $c572bd935510d7ebf4317e0de91994db71979d35a = strip_tags($c572bd935510d7ebf4317e0de91994db71979d35a,"");
 $c572bd935510d7ebf4317e0de91994db71979d35a = str_replace("\n", "", str_replace(" ", "", $c572bd935510d7ebf4317e0de91994db71979d35a));
 $c572bd935510d7ebf4317e0de91994db71979d35a = str_replace("\t","",$c572bd935510d7ebf4317e0de91994db71979d35a);
 $c572bd935510d7ebf4317e0de91994db71979d35a = str_replace("\r\n","",$c572bd935510d7ebf4317e0de91994db71979d35a);
 $c572bd935510d7ebf4317e0de91994db71979d35a = str_replace("\r","",$c572bd935510d7ebf4317e0de91994db71979d35a);

 //request for TAOBAO API to get data-infomation
 $url572bd935510d7ebf4317e0de91994db71979d35a = "http://ip.taobao.com/service/getIpInfo.php?ip=".$c572bd935510d7ebf4317e0de91994db71979d35a;
 $data = file_get_contents($url572bd935510d7ebf4317e0de91994db71979d35a);

 //output the return data from TAOBAO API including json-data(Format:http://ip.taobao.com/instructions.php)
 echo $data;
?>
3 后记

三步就搞定了,也不是很难吧!那么这篇《WordPress使用淘宝IP地址库的API显示评论者的位置信息(二)》就算是jQuery版本的淘宝IP地址库的API调用。当然大家可能想到了,直接用PHP就可以实现了嘛。于是,下一篇文章就是PHP版本的《WordPress使用淘宝IP地址库的API显示评论者的位置信息(三)》

打赏支持

Comments »