PR Rang der angemeldeten Seiten anzeigen

Allgemeiner Support für das kostenlose Toplisten Script Top Xl

Moderator: Paddelberg

Beitragvon chandor » Montag 31. August 2009, 10:25

Hi,

schade!! Hatte vorher wundervoll funktioniert!

Habe aber eine Lösung gefunden. Hasst 'ne PN von mir bekommen. :D

VG Chandor
chandor
 
Beiträge: 14
Registriert: Samstag 30. August 2008, 20:22

Beitragvon Focka » Montag 7. September 2009, 16:24

Hi,

wäre nicht schlecht wenn die Lösung hier auch stehen würde *fg*
Focka
 
Beiträge: 8
Registriert: Freitag 28. August 2009, 12:20

Beitragvon chandor » Montag 7. September 2009, 20:14

Chef wird sich melden .... hat'er gesagt!! :D

Mein Lösungsansatz kann ich hier nicht posten und ist so sehr individuell für mich!
chandor
 
Beiträge: 14
Registriert: Samstag 30. August 2008, 20:22

pagerank wird fehlerhaft angezeigt

Beitragvon coceonc11 » Montag 7. September 2009, 21:08

Nochmals Dank für das Script. Habe beobachtet, daß die PR-Anzeige in einigen Fällen zunächst völlig korrekt erfolgte. Auch nach Aufruf der cron.php. Seit einigen Tagen wird jedoch bei einigen Seiten PR 0 angezeigt, die vorher korrekt angezeigt wurden. Kann das nicht eher an den Datacentern von Google liegen. Kann man die Adresse des abgefragten Datacenters selbst ändern? (wenn, wo?)

Danke schonmal.
coceonc11
 
Beiträge: 8
Registriert: Mittwoch 19. August 2009, 00:18

Beitragvon chandor » Montag 7. September 2009, 21:13

Vermutlich nein! Das liegt an einer erforderlichen 64-Bit-Abfrage!
chandor
 
Beiträge: 14
Registriert: Samstag 30. August 2008, 20:22

Beitragvon chandor » Montag 7. September 2009, 21:14

Vermutlich nein! Das liegt an einer erforderlichen Schlüssel mit einer 64-Bit-Abfrage!
chandor
 
Beiträge: 14
Registriert: Samstag 30. August 2008, 20:22

Beitragvon coceonc11 » Mittwoch 9. September 2009, 20:09

Ich muß zugeben, ich bin sehr gespannt......
coceonc11
 
Beiträge: 8
Registriert: Mittwoch 19. August 2009, 00:18

Beitragvon chandor » Donnerstag 8. Oktober 2009, 21:37

OK .. hat Paddelberg wohl ein bissl viel mehr um die Ohren. Habe aber gesehen, das aus meiner Sparte ein paar Webmaster da auch schon ein Prob haben. Hier mal mein Lösungsansatz:

Folgengde PHP-Datei als PRupdae.php erstellen und ins (gesicherte) ACP laden. Die Daten unter Verbindungsdaten mit den Zugangsdaten der Datenbank versehen. Passwort, DBName und Datenbank. Speichern & ins ACP hochladen.

ToDo: Datei aus Euren Root im Browser aufrufen: ..../admin/PRupdate.php

Bei mir funktionierts!!

Code: Alles auswählen
<?php
set_time_limit(3600);
error_reporting(E_ERROR );
$JOB="PRUPDATE"; //PRUPDATE or RECPRCHECK
$usersite="."; //The url you expect to find at reciprocal location

//Verbindungsdateneintragen
$username=""; //Benutzer
$password=""; //Passwort
$dbname=""; //Datenbankname
$hostname="localhost";


$linktable = "topxl_user";
$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 URL,pr 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,"pr");
    $url=mysql_result($result,$i,"url" );
    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 pr=$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;

    }
    ++$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;
        }
    }
}
}
?>


VG Chandor
chandor
 
Beiträge: 14
Registriert: Samstag 30. August 2008, 20:22

pr-rang - Danke

Beitragvon coceonc11 » Freitag 9. Oktober 2009, 09:58

Danke, ich probier es mal aus. Rückmeldung kommt dann.... :D
coceonc11
 
Beiträge: 8
Registriert: Mittwoch 19. August 2009, 00:18

Beitragvon Jimmy » Sonntag 11. Oktober 2009, 11:53

Bei mir geht das nicht, bekomme immer diese Fehlermeldung:

Parse error: syntax error, unexpected T_SL in /home/www/admin/PRupdate.php on line 37

Das wäre dieses: $body = <<<EOT
Benutzeravatar
Jimmy
 
Beiträge: 44
Registriert: Mittwoch 26. November 2008, 12:17

Beitragvon chandor » Montag 12. Oktober 2009, 20:51

Bei mir funktioniert das in zwei Toplisten einwandfrei! Der Code scheint auch OK zu sein. Das ist die Zeile, (bis EOT;) in der die Updateergenisse im Template ausgegeben werden. Hast Du Deine Tabellen verändert oder stimmt die DB-Verbindung?

Ansonsten fehlt mir da näheres Know-How um zu helfen.
chandor
 
Beiträge: 14
Registriert: Samstag 30. August 2008, 20:22

Es funktioniert!

Beitragvon coceonc11 » Montag 12. Oktober 2009, 23:07

Der Code, den Chandor hier präsentiert, funktioniert auch bei meinen Toplisten.
Danke! :D
coceonc11
 
Beiträge: 8
Registriert: Mittwoch 19. August 2009, 00:18

Hallo Jimmy, kann es sein....

Beitragvon coceonc11 » Dienstag 13. Oktober 2009, 09:40

coceonc11
 
Beiträge: 8
Registriert: Mittwoch 19. August 2009, 00:18

Habe versucht...

Beitragvon coceonc11 » Dienstag 13. Oktober 2009, 09:48

Ist eine Vermutung...
Bei mir tritt der Fehler ja nicht auf.

Habe versucht den Fehler bei meinem Script ebenfalls zu erzeugen, wollte herausfinden was da nicht stimmt. Fehlanzeige, leider. Vielleicht haben Chandor und Paddelberg ja eine Idee.
coceonc11
 
Beiträge: 8
Registriert: Mittwoch 19. August 2009, 00:18

Beitragvon chandor » Dienstag 13. Oktober 2009, 11:58

Der Code ist OK - habe nochmals nachgesehen!

Mit welchen Editor hast Du die php-Datei erstellt? Ich mit CS3! Frontpage funzt auch.

Der hier hatte vermutlich ein Editorproblem!
http://www.php.de/php-einsteiger/58644- ... sen-2.html

Hinter dem EOT darf auf keinen Fall ein Leerzeichen sein! Mit Leerzeichen dahinter bekomme ich auch den Parse-Error!!!
chandor
 
Beiträge: 14
Registriert: Samstag 30. August 2008, 20:22

VorherigeNächste

Zurück zu Allgemeiner Support



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron