Durch die PHP-Versionen ist eine Pagerankabfrage nicht überall mehr möglich ....
Hier eine kleine Hilfe, wie Ihr trotzdem den PR updaten könnt!
1. Erstelle eine Datei z.B. prupdater.php
2. Trage dort diesen CODE ein:
Code:
<?php
set_time_limit(3600);
error_reporting(E_ERROR );
$JOB="PRUPDATE"; //PRUPDATE or RECPRCHECK
$usersite="."; //The url you expect to find at reciprocal location
$username="Datenbank-Username";
$password="Datenbank-Passwort";
$dbname="Datenbank-Benutzername";
$hostname="localhost";
$linktable = "PLD_LINK";
$BATCHSIZE = 500; //How many
$DELAY = 30; //Seconds delay before doing next batch
$DEBUG = 0; // if set to 1, only prints text, do not update.
define('GOOGLE_MAGIC', 0x00000000E6359A60); // CHANGED (64Bit)
if ( $username == "" || $password == "" || $dbname == "" || $hostname == "" ) {
echo "Please set username, password, dbname, and hostname";
exit;
}
$link = mysql_connect($hostname,$username,$password);
if (!$link) {
die('Not connected : ' . mysql_error());
}
$db_selected = mysql_select_db("$dbname", $link);
if (!$db_selected) {
die ("Can't use $dbname : " . mysql_error($link ));
}
$query="SELECT RECPR_LAST_CHECKED,FEATURED,RECPR_VALID,RECPR_URL,URL,PAGERANK FROM $linktable";
$result=mysql_query($query,$link );
if ($result == null) die ("Error in Select : " . mysql_error($link ));
$num=mysql_numrows($result );
$i=0;
$updatedrows=0;
$body = <<<EOT
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD>
<TITLE>PR Updated</TITLE>
</HEAD><BODY>
EOT;
print $body;
while ($i < $num) {
$pagerank=mysql_result($result,$i,"PAGERANK");
$reciprocal=mysql_result($result,$i,"RECPR_URL");
$url=mysql_result($result,$i,"URL" );
$featured=mysql_result($result,$i,"FEATURED" );
$lastchecked=mysql_result($result,$i,"RECPR_LAST_CHECKED");
flush();
switch ($JOB) {
case "PRUPDATE":
$google= new google_pr();
$newpr=$google->get_page_rank($url);
if ($pagerank <> $newpr && $newpr != -1) {
++$updatedrows;
print $i+1 . ") PR: $pagerank (New PR=$newpr) ::: $url UPDATING -- ";
$query="UPDATE $linktable SET PAGERANK=$newpr WHERE URL='$url'";
if ($DEBUG==0) mysql_query($query,$link );
echo " Record Updated<br>";
} else {
print $i+1 . ") PR: $pagerank (PR=$newpr) ::: $url<br>";
}
break;
case "RECPRCHECK":
if ($featured != 1 and (strtotime($lastchecked) < strtotime("-2 weeks"))) {
if ($reciprocal == "") break;
$htmlString=file_get_contents($reciprocal,false);
if (eregi($usersite, $htmlString)) {
echo "'link found on $reciprocal<br>";
$google= new google_pr();
$recpr_pagerank=$google->get_page_rank($reciprocal);
$query="UPDATE $linktable SET RECPR_VALID=2,RECPR_LAST_CHECKED=NOW(),RECPR_PAGERANK=$recpr_pagerank WHERE URL='$url'";
if ($DEBUG==0) mysql_query($query,$link );
++$updatedrows;
} else {
echo "'link <b>NOT</b> found on $reciprocal<br>";
$query="UPDATE $linktable SET RECPR_VALID=1 WHERE URL='$url'";
if ($DEBUG==0) mysql_query($query,$link );
++$updatedrows;
}
}
break;
}
++$i;
if (fmod($i,$BATCHSIZE) == 0) sleep($DELAY); //Sleep 10 sec for each block of 50 links.
}
mysql_close($link);
$footer = <<<EOT
<br>
<b>Finished checking through $num links in your database.
<br>
$updatedrows of $num where not up2date and was corrected.</b>
<br>
</BODY></HTML>
EOT;
print $footer;
class google_pr{
var $checksum;
function google_pr(){
$this->checksum='';
}
function zeroFill($a, $b){
$z = hexdec(80000000);
if ($z & $a)
{
$a = ($a>>1);
$a &= (~$z);
$a |= 0x40000000;
$a = ($a>>($b-1));
} else {
$a = ($a>>$b);
}
return $a;
}
function mix($a,$b,$c) {
$a -= $b; $a -= $c; $this->toInt32($a); $a = (int)($a ^ ($this->zeroFill($c,13)));
$b -= $c; $b -= $a; $this->toInt32($b); $b = (int)($b ^ ($a<<8));
$c -= $a; $c -= $b; $this->toInt32($c); $c = (int)($c ^ ($this->zeroFill($b,13)));
$a -= $b; $a -= $c; $this->toInt32($a); $a = (int)($a ^ ($this->zeroFill($c,12)));
$b -= $c; $b -= $a; $this->toInt32($b); $b = (int)($b ^ ($a<<16));
$c -= $a; $c -= $b; $this->toInt32($c); $c = (int)($c ^ ($this->zeroFill($b,5)));
$a -= $b; $a -= $c; $this->toInt32($a); $a = (int)($a ^ ($this->zeroFill($c,3)));
$b -= $c; $b -= $a; $this->toInt32($b); $b = (int)($b ^ ($a<<10));
$c -= $a; $c -= $b; $this->toInt32($c); $c = (int)($c ^ ($this->zeroFill($b,15)));
return array($a,$b,$c);
}
function strord($string) {
for($i=0;$i<strlen($string);$i++) {
$result[$i] = ord($string{$i});
}
return $result;
}
function GoogleCH($url, $length=null, $init=GOOGLE_MAGIC) {
if(is_null($length)) {
$length = sizeof($url);
}
$a = $b = 0x9E3779B9;
$c = $init;
$k = 0;
$len = $length;
while($len >= 12) {
$a += ($url[$k+0] +($url[$k+1]<<8) +($url[$k+2]<<16) +($url[$k+3]<<24));
$b += ($url[$k+4] +($url[$k+5]<<8) +($url[$k+6]<<16) +($url[$k+7]<<24));
$c += ($url[$k+8] +($url[$k+9]<<8) +($url[$k+10]<<16)+($url[$k+11]<<24));
$mix = $this->mix($a,$b,$c);
$a = $mix[0]; $b = $mix[1]; $c = $mix[2];
$k += 12;
$len -= 12;
}
$c += $length;
switch($len)
{
case 11: $c+=($url[$k+10]<<24);
case 10: $c+=($url[$k+9]<<16);
case 9 : $c+=($url[$k+8]<<8);
case 8 : $b+=($url[$k+7]<<24);
case 7 : $b+=($url[$k+6]<<16);
case 6 : $b+=($url[$k+5]<<8);
case 5 : $b+=($url[$k+4]);
case 4 : $a+=($url[$k+3]<<24);
case 3 : $a+=($url[$k+2]<<16);
case 2 : $a+=($url[$k+1]<<8);
case 1 : $a+=($url[$k+0]);
}
$mix = $this->mix($a,$b,$c);
return $mix[2];
}
function getGoogleChecksum($url) {
$url="info:"."http://".str_replace('http://','',$url);
$tmp_ch=$this->strord($url);
$this->checksum=sprintf("%u", $this->GoogleCH($tmp_ch));
return $this->checksum;
}
function toInt32(& $x) {
$z = hexdec(80000000);
$y = (int)$x;
if($y==-$z&&$x<-$z){
$y = (int)((-1)*$x);
$y = (-1)*$y;
}
$x = $y;
}
function get_page_rank($url){
//$url = preg_replace('/\?.*$/','?',$url);
$reqgr = "info:".$url;
$reqgre = "info:".urlencode($url);
$gch="6".$this->getGoogleChecksum($url);
$patern = '/^http:/';
$patern2 = '/^http:\/\/.*google\..*\/(search|images|groups|news).*/';
$patern3 = '/^http:\/\/localhost.*/';
$patern4 = '/^http:\/\/(127\.|10\.|172\.16|192\.168).*/'; //local ip
if(!preg_match($patern, $url) || preg_match($patern2, $url) ||
preg_match($patern3, $url) || preg_match($patern4, $url)){
return -1;
}else{
$fsock = fsockopen('toolbarqueries.google.com', 80, $errno, $errstr);
if ( !$fsock ){
return -1;
}
$base_get = "/search?client=navclient-auto&ch=".$gch."&ie=UTF-8&oe=UTF-8&features=Rank&q=".$reqgre;
fputs($fsock, "GET $base_get HTTP/1.1\r\n");
fputs($fsock, "HOST: toolbarqueries.google.com\r\n");
fputs($fsock, "User-Agent: Mozilla/5.0 (compatible; GoogleToolbar 3.0.114-big; Windows XP 5.1)\r\n");
fputs($fsock, "Connection: close\r\n\r\n");
while(!feof($fsock)){
$res['content'] .= fread($fsock, 1024);
}
fclose($fsock);
if(preg_match('/Rank_.*?:.*?:(\d+)/i', $res['content'], $m)){
return $m[1];
}else{
return -1;
}
}
}
}
?>
3. Nun Deine Datenbank-Daten eintragen
4. Lade die Datei ins ROOT-Verzeichnis
5. Rufe die Datei auf
www.deine-domain.de/prupdater.phpJetzt kannst Du den verlauf sehen .... wenn alles funktioniert, sollten die PR´s aktualisiert sein.