You are not logged in.

  • Login

1

Monday, September 14th 2009, 6:21am

PHP Pagerank Service

Hallo,
ich bin neu hier.

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

Hier die Pagerank class

PHP Quellcode

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


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

PHP Quellcode

1
2
3
4
5
include('pagerank.php');
  $url = $_GET ['url'];
  $pr = getPageRank('$url');
 
  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

2

Monday, September 14th 2009, 9:09am

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 http://www.abakus-internet-marketing.de/…ic/t-52990.html

Quoted from ""seonewbie""

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

3

Monday, September 14th 2009, 9:30am

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
www.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

4

Monday, September 14th 2009, 8:37pm

also ich habe das Script mal wie folgt modifiziert:

PHP Quellcode

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


erhalte damit folgende URL:
http://www.google.com/search?client=navc…agerankcode.com[/url]

und wenn ich dir URL aufrufe bekomme ich

Quoted

Your client does not have permission to get URL ....
Please see Google's Terms of Service posted at http://www.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: http://www.hm2k.com/projects/pagerank
Die Lösung basiert wiederum auf folgendem Algorithmus: http://pagerank.gamesaga.net/

Similar threads

Social bookmarks