We are in the process of migrating this forum. A new space will be available soon. We are sorry for the inconvenience.

Google PageRank


konrad19
12-08-2008, 18:52
Witam wszystkich,
Od dłuższego czasu meczę się z "zainstalowaniem" na stronie skryptu do pobierania wartości PageRank, niestety bez skutku, sprawdzałem już mnóstwo skryptów ale żaden nie pokazuje mi upragnionego "zielonego paska", więc zwracam się do was, czy ktoś może ma działający skrypt do pobierania wartości PageRank, chodzi mi o coś takiego:

pagerank.class.php
Kod PHP:
define('GOOGLE_MAGIC'0xE6359A60);
class 
pageRank{
var 
$pr
var 
$pr_val;

var 
$cache_dir "pr_cache/";

//86400 is 1 day
//604800 is 1 week
//2419200 is 4 weeks
var $cache_time 604800;

 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 ^= ($this->zeroFill($c,13));
   
$b -= $c$b -= $a$b ^= ($a<<8);
   
$c -= $a$c -= $b$c ^= ($this->zeroFill($b,13));
   
$a -= $b$a -= $c$a ^= ($this->zeroFill($c,12));
   
$b -= $c$b -= $a$b ^= ($a<<16);
   
$c -= $a$c -= $b$c ^= ($this->zeroFill($b,5));
   
$a -= $b$a -= $c$a ^= ($this->zeroFill($c,3));
   
$b -= $c$b -= $a$b ^= ($a<<10);
   
$c -= $a$c -= $b$c ^= ($this->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 $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 
$c+=($url[$k+8]<<8);
   
/* the first byte of c is reserved for the length */
   
case $b+=($url[$k+7]<<24);
   case 
$b+=($url[$k+6]<<16);
   case 
$b+=($url[$k+5]<<8);
   case 
$b+=($url[$k+4]);
   case 
$a+=($url[$k+3]<<24);
   case 
$a+=($url[$k+2]<<16);
   case 
$a+=($url[$k+1]<<8);
   case 
$a+=($url[$k+0]);
  }
  
$mix $this->mix($a,$b,$c);
 
/* report the result */
 
return $mix[2];
 }
 
 
//converts a string into an array of integers containing the numeric value of the char
 
 
function strord($string) {
  for(
$i=0;$i<strlen($string);$i++) {
   
$result[$i] = ord($string{$i});
  }
 return 
$result;
 }
 
 function 
query_google($url){
  
$ch "6".$this->GoogleCH($this->strord("info:" $url));
  
  
$fp fsockopen("www.google.com"80$errno$errstr30);
  if (!
$fp) {
     echo 
"$errstr ($errno)\n";
  } else {
     
$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($fp128);
       
$pos strpos($data"Rank_");
         if(
$pos === false){
         }else{
           
$pagerank substr($data$pos 9);
           
$this->pr_val $pagerank;
         }
     }
     
fclose($fp);
  }
 }
//display pagerank image. Create your own or download images I made for this script. If you make your own make sure to call them pr0.gif, pr1.gif, pr2.gif etc.
 
function pr_image($pagerank){
  if(
$pagerank == 0){
   
$this->pr ".$pagerank" out of 10\">" ;
   }elseif(
$pagerank == 1){
   
$this->pr ".$pagerank" out of 10\">" ;
   }elseif(
$pagerank == 2){
   
$this->pr ".$pagerank" out of 10\">" ;
   }elseif(
$pagerank == 3){
   
$this->pr ".$pagerank" out of 10\">" ;
   }elseif(
$pagerank == 4){
   
$this->pr ".$pagerank" out of 10\">" ;
   }elseif(
$pagerank == 5){
   
$this->pr ".$pagerank" out of 10\">" ;
   }elseif(
$pagerank == 6){
   
$this->pr ".$pagerank" out of 10\">" ;
   }elseif(
$pagerank == 7){
   
$this->pr ".$pagerank" out of 10\">" ;
   }elseif(
$pagerank == 8){
   
$this->pr ".$pagerank" out of 10\">" ;
   }elseif(
$pagerank == 9){
   
$this->pr ".$pagerank" out of 10\">" ;
   }else{
   
$this->pr ".$pagerank" out of 10\">" ;
  }
 }
 
 function 
get_rank($url) {
 
    
// Include the package
    
require_once('Cache/Lite.php');
    
        
    
// Set a few options
    
$options = array(
        
'cacheDir' => $this->cache_dir,
        
'lifeTime' => $this->cache_time
    
);
    
    
// Create a Cache_Lite object
    
$Cache_Lite = new Cache_Lite($options);
     
     
//Check the cache here
     // Test if thereis a valide cache for this id
    
if ($data $Cache_Lite->get($url)) {

        
// Cache hit !
        
$this->pr_val $data;

    } else { 
// No valid cache found (you have to make the page)

        // Cache miss !
        // Put in $data datas to put in cache
        
        //Actual code to be run
        
$this->query_google($url);
        
        
$Cache_Lite->save($this->pr_val);

    }
     
     
     
 }
 
 
 
//Functions to actually be used by the user
 
 //Get a numerical value for the pagerank
 
function Qpr_num($url) {
     
     
//Query google server
     
$this->get_rank($url);
     
     
//Return the numerical value
     
return $this->pr_val;     
 }
 
 
//Ret the html code to display an image
 
function Qpr_img($url) {
     
     
//Query google server
     
$this->get_rank($url);
     
     
//Get image code
     
$this->pr_image($this->pr_val);
     
     
//Return the image code
     
return $this->pr;
 }
 
}



?>
Wywołanie:
Kod PHP:

//Get the pagerank checking class
include("pagerank.class.php");

//Get pagerank for site

$gpr = new pageRank();

//You can easily modify the cache folder at runtime
//$gpr->cache_dir = "new_folder";

//A similar method works for the cache lifetime
//86400 is 1 day
//604800 is 1 week - This is the default
//2419200 is 4 weeks
//$gpr->cache_time = 86400;

//Get a value for the pagerank of a page    
$gpr_val $gpr->Qpr_num("http://www.google.pl");

//Get html code to display an image
$gpr_img $gpr->Qpr_img("http://www.google.pl");

echo 
"Google pagerank is " $gpr_val;

echo 
$gpr_img;



?>
Ten skrypt u mnie nie działa, obojętnie jaką stronę wpiszę wyświetla "Google pagerank is 0" nawet dla strony: www.google.pl
Sprawdzałem nawet udostępnioną przez google klasę do sprawdzania wartości PageRank http://code.google.com/p/popstats/
również bez większego skutku, co robię nie tak? Czy ktoś z użytkowników może wyświetlić "zielony pasek" na swojej stronie i najważniejsze czy mógłby podzielić się ze mną informacjami jak to zrobił?

pozdrawiam