PHP Pagerank Service

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • PHP Pagerank Service

    Hallo,
    ich bin neu hier.

    ich arbeite grade an einer art pagerankservice der wie folgt aussieht.

    Hier die Pagerank class

    Quellcode

    1. define('GOOGLE_MAGIC', 0xE6359A60);
    2. function _zeroFill($a, $b){
    3. $z = hexdec(80000000);
    4. if ($z & $a){
    5. $a = ($a>>1);
    6. $a &= (~$z);
    7. $a |= 0x40000000;
    8. $a = ($a>>($b-1));
    9. }else
    10. $a = ($a>>$b);
    11. return $a;
    12. }
    13. function _mix($a,$b,$c){
    14. $a -= $b; $a -= $c; $a ^= (_zeroFill($c,13));
    15. $b -= $c; $b -= $a; $b ^= ($a<<8);
    16. $c -= $a; $c -= $b; $c ^= (_zeroFill($b,13));
    17. $a -= $b; $a -= $c; $a ^= (_zeroFill($c,12));
    18. $b -= $c; $b -= $a; $b ^= ($a<<16);
    19. $c -= $a; $c -= $b; $c ^= (_zeroFill($b,5));
    20. $a -= $b; $a -= $c; $a ^= (_zeroFill($c,3));
    21. $b -= $c; $b -= $a; $b ^= ($a<<10);
    22. $c -= $a; $c -= $b; $c ^= (_zeroFill($b,15));
    23. return array($a,$b,$c);
    24. }
    25. function _GoogleCH($url, $length=null, $init=GOOGLE_MAGIC){
    26. if(is_null($length))
    27. $length = sizeof($url);
    28. $a = $b = 0x9E3779B9;
    29. $c = $init;
    30. $k = 0;
    31. $len = $length;
    32. while($len >= 12){
    33. $a += ($url[$k + 0] + ($url[$k + 1] << 8) + ($url[$k + 2] << 16) + ($url[$k + 3] << 24));
    34. $b += ($url[$k + 4] + ($url[$k + 5] << 8) + ($url[$k + 6] << 16) + ($url[$k + 7] << 24));
    35. $c += ($url[$k + 8] + ($url[$k + 9] << 8) + ($url[$k + 10] << 16) + ($url[$k + 11] << 24));
    36. $_mix = _mix($a,$b,$c);
    37. $a = $_mix[0]; $b = $_mix[1]; $c = $_mix[2];
    38. $k += 12;
    39. $len -= 12;
    40. }
    41. $c += $length;
    42. switch($len){
    43. case 11: $c += ($url[$k + 10] << 24);
    44. case 10: $c += ($url[$k + 9] << 16);
    45. case 9 : $c += ($url[$k + 8] << 8);
    46. case 8 : $b += ($url[$k + 7] << 24);
    47. case 7 : $b += ($url[$k + 6] << 16);
    48. case 6 : $b += ($url[$k + 5] << 8);
    49. case 5 : $b += ($url[$k + 4]);
    50. case 4 : $a += ($url[$k + 3] << 24);
    51. case 3 : $a += ($url[$k + 2] << 16);
    52. case 2 : $a += ($url[$k + 1] << 8);
    53. case 1 : $a += ($url[$k + 0]);
    54. }
    55. $_mix = _mix($a,$b,$c);
    56. return $_mix[2];
    57. }
    58. function _strord($string){
    59. for($i = 0;$i < strlen($string);$i++)
    60. $result[$i] = ord($string{$i});
    61. return $result;
    62. }
    63. function getPageRank($url){
    64. $pagerank = -1;
    65. $ch = "6"._GoogleCH(_strord("info:" . $url));
    66. $fp = fsockopen("www.google.com", 80, $errno, $errstr, 30);
    67. if($fp){
    68. $out = "GET /search?client=navclient-auto&ch=" . $ch . "&features=Rank&q=info:" . $url . " HTTP/1.1\r\n";
    69. $out .= "Host: www.google.com\r\n";
    70. $out .= "Connection: Close\r\n\r\n";
    71. fwrite($fp, $out);
    72. while (!feof($fp)){
    73. $data = fgets($fp, 128);
    74. $pos = strpos($data, "Rank_");
    75. if($pos === false){
    76. }else
    77. $pagerank = substr($data, $pos + 9);
    78. }
    79. fclose($fp);
    80. }
    81. return $pagerank;
    82. }
    Alles anzeigen


    so nun habe ich eine index.php
    der sinn von dieser ist das diese mit PHP $_GET die url ausliest.

    Quellcode

    1. include('pagerank.php');
    2. $url = $_GET ['url'];
    3. $pr = getPageRank('$url');
    4. echo $url.'has PR '.$pr;


    so das geht nur nicht so wie ich es möchte, denn die url (index.php?url=http://www.easy-coding.de)
    wird zwar ausgelesen und auch angezeigt (echo $url;)
    nur wird sie nicht in getPageRank('$url') eingefügt

    könnt ihr mir helfen
  • Hi,
    hast du die bei Google abgefragte URL mal direkt aufgerufen?
    Hast du es mal ohne http:// probiert?

    Arbeitest dein Server mit einem 32 oder einem 64 Bit System. Linux oder Windows? Unter Umständen funktioniert die Checksum Berechnung nicht auf beiden Systemen. Davon habe ich mal gelesen.
    Es gibt so viele Versionen des Scripts im Internet.

    Siehe auch abakus-internet-marketing.de/foren/viewtopic/t-52990.html

    "seonewbie" schrieb:

    PHP4 mit 64 bit sollte aber gehen.
    Nur PHP5 mit 64 bit nicht?
    oder habe ich da was übersehen.

    Zumindest lief bei mir der ganze PR Abfrage kram auf 64bit bis
    ich auf php5 umgestellt habe. Hier ist auch noch ein Unterschied
    hat man Inel oder AMD da je nach Prozzie der Intel kann 32 Bit emulieren
    und der AMD nicht zumindest bei Linux.


    UPDATE
    Die Variable wird gar nicht evaluiert
    statt getPageRank('$url') muss es getPageRank($url) sein!
    Wenn es weiterhin nicht funktioniert hinterlege die URL mal manuell. Evtl. werden die Slashs noch escapet
  • also zu dem system (eben nachschau) also es laäuft auf meinem rootserver mit debian 5 und ner 32 bit architektur
    so jetzt sche ich mal ohne http
    easy-coding.de has PR -1. ich glaube nicht das solch ein gutes forum wie dießes hier *schleim* einen pagerank von -1 hat ^^

    EDIT: also zu deinem edit nochmal.
    ich habe mal die anführungszeichen weggelassen geht nich
    habe die url mal direkt eingetragen mit und ohne http:// geht auch nich
  • also ich habe das Script mal wie folgt modifiziert:

    Quellcode

    1. function getPageRank($url){
    2. $pagerank = -1;
    3. $ch = "6"._GoogleCH(_strord("info:" . $url));
    4. $g = "http://www.google.com/search?client=navclient-auto&ch=" . $ch . "&features=Rank&q=info:" . $url;
    5. die($g);


    erhalte damit folgende URL:
    google.com/search?client=navcl…tp://www.pagerankcode.com[/url]

    und wenn ich dir URL aufrufe bekomme ich
    Your client does not have permission to get URL ....
    Please see Google's Terms of Service posted at google.com/terms_of_service.html


    Bestimmt hast du die selbe Ausgabe.

    Ich habe dann noch ein bisschen weiter gesucht und ein Script gefunden, dass mit meiner Hard- und Software funktioniert: hm2k.com/projects/pagerank
    Die Lösung basiert wiederum auf folgendem Algorithmus: pagerank.gamesaga.net/