欢迎访客之显示对方网站PR

没事想了一个略贱的功能,在欢迎访客界面上显示对方PR,这个也可以广泛应用在评论者和友链等地方,不过那样就太贱了,所以我决定弄成只对来访者本人显示.
效果大家应该已经看到了,顺便附张图吧

欢迎访客之显示对方网站PR
Google pagerank的API地址结构如下

http://toolbarqueries.google.com.hk/tbr?client=navclient-auto&features=Rank&q=info:xiaohudie.net&ch=820909c8a

后面那个ch的值相当于一个key,需要php运算,但是我在本地测试的时候发现和我自己网站运算的结果不同,暂时也不知道是PHP版本问题还是WIN与LINUX的问题,所以把两个运算方法都给出来吧,如果用第一种没有调出正确的PR,换成第二种就可以了.
查询PHP版本的方法如下

<?php  echo PHP_VERSION;?>

下面是对访客显示对方网站PR的代码

代码一

这是我自己网站测试通过的,操作系统LINUX,PHP版本5.2.17

<?php
if($_COOKIE["comment_author_url_" . COOKIEHASH]!="") {
function app_hash_url($url) {
$seed = "Mining PageRank is AGAINST GOOGLE'S TERMS OF SERVICE.";
$hash = 0x01020345;
for ($i=0; $i<strlen($url); $i++) {
$hash ^= ord($seed{$i%87}) ^ ord($url{$i});
$hash = (($hash >> 23) & 0x1FF) | $hash << 9;
}
return sprintf("8%x", $hash);
}
$domain1 = $_COOKIE["comment_author_url_".COOKIEHASH];
$domain=substr($domain1,7);//去掉访客网址前面的http://,只保留domain
$startUrl = "http://toolbarqueries.google.com/tbr?client=navclient-auto&features=Rank&q=info:";
$hash = substr(app_hash_url($domain),9);//由于我网站运算hash的时候得出的ch值错误,观察发现要从第10位开始截
$resultUrl = $startUrl.$domain."&ch=8".$hash;
$array = get_headers($resultUrl,1);
if(!preg_match('/403/',$array[0])){//这个以前文章提过,用来判断是否可以准确读取页面,通常没有pr的时候调用api会跳403
$pageContent = file_get_contents($resultUrl);
$pageRank = substr($pageContent,9);
echo $pageRank;}else { echo "0";}
}
?>

代码二

这是本地测试通过的代码,操作系统WIN7,PHP版本5.2.14

<?php echo PHP_VERSION;
if($_COOKIE["comment_author_url_" . COOKIEHASH]!="") {
function app_hash_url($url) {
$seed = "Mining PageRank is AGAINST GOOGLE'S TERMS OF SERVICE.";
$hash = 0x01020345;
for ($i=0; $i<strlen($url); $i++) {
$hash ^= ord($seed{$i%87}) ^ ord($url{$i});
$hash = (($hash >> 23) & 0x1FF) | $hash << 9;
}
return sprintf("8%x", $hash);//貌似WIN主机直接这么算就可以得出准确的ch值
}
$domain1 = $_COOKIE['comment_author_url_'.COOKIEHASH];
$domain=substr($domain1,7);
$startUrl = "http://toolbarqueries.google.com/tbr?client=navclient-auto&features=Rank&q=info:";
$resultUrl = $startUrl.$domain.'&ch='.app_hash_url($domain);
$array = get_headers($resultUrl,1);
if(!preg_match('/403/',$array[0])){
$pageContent = file_get_contents("$resultUrl");
$pageRank = substr($pageContent,9);
echo $pageRank;
}else{echo '0';}
}
?>

如果想用在其他地方来查询某些网站的PR,改一下$domain值就行了.写完了,挺累的,你们不能像上两篇那样对我,才三十几条评论,我一颗七窍玲珑心都碎了

69 Comments

Name *

E-mail *

Website

  1. Mike

    PR3 哈哈哈~ :nono:

  2. 方露宇

    - -我的PR是0你给显示出来明显打击我的心情么。。。

    • 郑永

      @方露宇 只有你自己可以看到,谁打击你了?只是给你时刻关注pr的信息而已。

  3. 阿水博客

    好吧,pr果断是0 :fue:

  4. 电脑爱好者

    显示的我的不对 我的是2 显示的是0 :koubixiu:

  5. Android

    :meme: :meme:看看pr

  6. Android

    新域名 心开始

  7. Android

    心都碎了 :xia: :xia: :xia: :xia: :xia:

  8. 梦月酱

    怎么还是会跳转首页 – -

    • 小蝴蝶

      @梦月酱 :sui: 不知道….有另外一个人也遇到这个问题 你俩都是火狐 可能跟这个有关系

  9. 左尔德

    这个……

  10. 敏敏

    好吧PR的根本目的并不是给链接分出三六九等

    • 小蝴蝶

      @敏敏 只是写个功能而已啦