第一步,首先建立一个 /source/function/function_autopr.php
- <?php
- function HashURL($url)
- {$SEED = "Mining PageRank is AGAINST GOOGLE'S TERMS OF SERVICE. Yes, I'm talking to you, scammer.";
- $Result = 0x01020345;
- for ($i=0; $i<strlen($url); $i++)
- {
- $Result ^= ord($SEED{$i%87}) ^ ord($url{$i});
- $Result = (($Result >> 23) & 0x1FF) | $Result << 9;
- }
- return sprintf("8%x", $Result);
- }
- function prget($domain)
- {
- $PRURL
=
"http://www.google.com/search?client=navclient-auto&features=Rank:&q=info:".$domain.'&ch='.HashURL($domain); - $prstr = file_get_contents($PRURL);
- $pagerank = substr($prstr,9);
- if ($pagerank){
- return $pagerank;
- }
- else {
- return "0";
- }
- }
- ?>
第二步,再建立一个 sourceincludecroncron_autolink.php
- <?
- if(!defined('IN_DISCUZ')) {
- exit('Access Denied');
- }
- require_once DISCUZ_ROOT.'./source/function/function_autopr.php';
- $discuz = & discuz_core::instance();
- $myhost = 'http://www.XXXXXXX.com';//你的域名
- set_time_limit(1800);
- $query = DB::query("select id,url,display from pre_common_friendlink where display=0 and checknum<10");
- while($links = DB::fetch($query)) {
- $links['url']=strtolower($links['url']);
- if(!empty($links['url']) and substr($links['url'],0,4)=="http"){
- $htmls=@file_get_contents($links['url']);
- }
- $website = $links['url'] ;
- $website = str_replace("http://","",$website);
- $website = str_replace("https://","",$website);
- $website = str_replace("/","",$website);
- $website = trim($website);
- $pr = prget($website);
- $pr = str_replace( "
", "", $pr ); - if(substr($htmls,-1) == "/"){
- $htmls = str_replace("/","",$htmls);
- }
- //if( !strstr($htmls,$myhost) ) {
- if(!ereg($myhost,$htmls)){
- DB::query("update pre_common_friendlink set checknum=checknum+1,pr='".$pr."' where id=".$links['id']);
- }else{
- if($links["display"]==0){
- DB::query("update pre_common_friendlink set display=1,checknum=0,pr=".$pr." where id=".$links['id']);
- }
- }
- }
- DB::query("update pre_common_friendlink set display=0 where checknum>7");//七次检查没有,自动隐藏
- //DB::query("delete from pre_common_friendlink where checknum>10");//十次检查没有,自动删除。
- ?>
第三步,在数据库表 pre_common_friendlink 增加 display,checknum,pr 字段
- ALTER TABLE pre_common_friendlink ADD `display` smallint(2) unsigned NOT NULL default '0'
- ALTER TABLE pre_common_friendlink ADD `checknum` tinyint(3) NOT NULL default '0'
- ALTER TABLE pre_common_friendlink ADD `pr` int(11) NOT NULL default '0'
第四步,在后台--工具--计划任务添加 cron_autolink.php
执行一下就可以了。
大功告成。
另外,也可以在添加时,就直接提取对方的 PR 值。
用法:
$pr = prget($pr);
这个帖子希望官方能够看到,并完善 DZ1.5 的友情连接功能里。