share script check page rank

Discussion in 'PHP' started by five_fives2000, Feb 3, 2008.

  1. #1
    Demo :
    http://giaitriworld.net/pagerank.php

    <?php
    $googlehost='toolbarqueries.google.com';
    $googleua='Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.6) Gecko/20060728 Firefox/1.5';
    
    //convert a string to a 32-bit integer
    function StrToNum($Str, $Check, $Magic) {
        $Int32Unit = 4294967296;  // 2^32
    
        $length = strlen($Str);
        for ($i = 0; $i < $length; $i++) {
            $Check *= $Magic; 	
            //If the float is beyond the boundaries of integer (usually +/- 2.15e+9 = 2^31), 
            //  the result of converting to integer is undefined
            //  refer to http://www.php.net/manual/en/language.types.integer.php
            if ($Check >= $Int32Unit) {
                $Check = ($Check - $Int32Unit * (int) ($Check / $Int32Unit));
                //if the check less than -2^31
                $Check = ($Check < -2147483648) ? ($Check + $Int32Unit) : $Check;
            }
            $Check += ord($Str{$i}); 
        }
        return $Check;
    }
    
    //genearate a hash for a url
    function HashURL($String) {
        $Check1 = StrToNum($String, 0x1505, 0x21);
        $Check2 = StrToNum($String, 0, 0x1003F);
    
        $Check1 >>= 2; 	
        $Check1 = (($Check1 >> 4) & 0x3FFFFC0 ) | ($Check1 & 0x3F);
        $Check1 = (($Check1 >> 4) & 0x3FFC00 ) | ($Check1 & 0x3FF);
        $Check1 = (($Check1 >> 4) & 0x3C000 ) | ($Check1 & 0x3FFF);	
    	
        $T1 = (((($Check1 & 0x3C0) << 4) | ($Check1 & 0x3C)) <<2 ) | ($Check2 & 0xF0F );
        $T2 = (((($Check1 & 0xFFFFC000) << 4) | ($Check1 & 0x3C00)) << 0xA) | ($Check2 & 0xF0F0000 );
    	
        return ($T1 | $T2);
    }
    
    //genearate a checksum for the hash string
    function CheckHash($Hashnum) {
        $CheckByte = 0;
        $Flag = 0;
    
        $HashStr = sprintf('%u', $Hashnum) ;
        $length = strlen($HashStr);
    	
        for ($i = $length - 1;  $i >= 0;  $i --) {
            $Re = $HashStr{$i};
            if (1 === ($Flag % 2)) {              
                $Re += $Re;     
                $Re = (int)($Re / 10) + ($Re % 10);
            }
            $CheckByte += $Re;
            $Flag ++;	
        }
    
        $CheckByte %= 10;
        if (0 !== $CheckByte) {
            $CheckByte = 10 - $CheckByte;
            if (1 === ($Flag % 2) ) {
                if (1 === ($CheckByte % 2)) {
                    $CheckByte += 9;
                }
                $CheckByte >>= 1;
            }
        }
    
        return '7'.$CheckByte.$HashStr;
    }
    
    //return the pagerank checksum hash
    function getch($url) { return CheckHash(HashURL($url)); }
    
    //return the pagerank figure
    function getpr($url) {
    	global $googlehost,$googleua;
    	$ch = getch($url);
    	$fp = fsockopen($googlehost, 80, $errno, $errstr, 30);
    	if ($fp) {
    	   $out = "GET /search?client=navclient-auto&ch=$ch&features=Rank&q=info:$url HTTP/1.1\r\n";
    	   //echo "<pre>$out</pre>\n"; //debug only
    	   $out .= "User-Agent: $googleua\r\n";
    	   $out .= "Host: $googlehost\r\n";
    	   $out .= "Connection: Close\r\n\r\n";
    	
    	   fwrite($fp, $out);
    	   
    	   //$pagerank = substr(fgets($fp, 128), 4); //debug only
    	   //echo $pagerank; //debug only
    	   while (!feof($fp)) {
    			$data = fgets($fp, 128);
    			//echo $data;
    			$pos = strpos($data, "Rank_");
    			if($pos === false){} else{
    				$pr=substr($data, $pos + 9);
    				$pr=trim($pr);
    				$pr=str_replace("\n",'',$pr);
    				return $pr;
    			}
    	   }
    	   //else { echo "$errstr ($errno)<br />\n"; } //debug only
    	   fclose($fp);
    	}
    }
    
    //generate the graphical pagerank
    function pagerank($url,$width=100,$method='image') {
    	if (!preg_match('/^(http:\/\/)?([^\/]+)/i', $url)) { $url='http://'.$url; }
    	$pr=getpr($url);
    	$pagerank="PageRank: $pr/10";
    	$textpagerank="$pr/10";
    	//The (old) image method
    	if ($method == 'image') {
    	$prpos=$width*$pr/10;
    	$prneg=$width-$prpos;
    	$html='<img src="http://www.google.com/images/pos.gif" width='.$prpos.' height=10 border=0 alt="'.$pagerank.'"><img src="http://www.google.com/images/neg.gif" width='.$prneg.' height=10 border=0 alt="'.$pagerank.'">';
    	}
    	//The pre-styled method
    	if ($method == 'style') {
    	$prpercent=100*$pr/10;
    	$html='<div style="position: relative; width: '.$width.'px; padding: 0; background: #D9D9D9;"><strong style="width: '.$prpercent.'%; display: block; position: relative; background: #5EAA5E; text-align: center; color: #333; height: 4px; line-height: 4px;"><span></span></strong></div>';
    	}
    	
    	$out='<b>Web Page URL :&nbsp;&nbsp;&nbsp;<font color="red">'.$url.'</font><br><br>The Page Rank:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="'.$url.'" title="'.$pagerank.'">'.$html.'</a>&nbsp;&nbsp;&nbsp;'.$textpagerank.'</b>';
    	return $out;
    }
    if ((!isset($_POST['url'])) && (!isset($_GET['url']))) { echo '<form action="" method="post"><input name="url" type="text" value="http://"><input type="submit" name="Submit" value="Check Pagerank"></form>'; }
    if (isset($_REQUEST['url'])) { 
    echo '<form action="" method="post"><input name="url" type="text" value="http://"><input type="submit" name="Submit" value="Check Pagerank"></form>';
    echo pagerank($_REQUEST['url']); }
    ?>
    
    Code (markup):

     
    five_fives2000, Feb 3, 2008 IP
  2. pizzagreezi

    pizzagreezi Peon

    Messages:
    43
    Likes Received:
    2
    Best Answers:
    0
    Trophy Points:
    0
    #2
    I found this pagerank class and think it's also useful for all.

     
    pizzagreezi, Feb 3, 2008 IP
  3. kreoton

    kreoton Peon

    Messages:
    229
    Likes Received:
    7
    Best Answers:
    0
    Trophy Points:
    0
    #3
    Please then you add PHP code into post use PHP code tag in editor. It is hard to read your php code then it is placed in qoute or simple code tags...

    Anyway does these scripts checks if PR is valid or not?
     
    kreoton, Feb 4, 2008 IP
  4. five_fives2000

    five_fives2000 Peon

    Messages:
    9
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #4
    You can check it with any script or FF add on, i check and like it :D
     
    five_fives2000, Feb 4, 2008 IP
  5. fairuz.ismail

    fairuz.ismail Peon

    Messages:
    232
    Likes Received:
    10
    Best Answers:
    0
    Trophy Points:
    0
    #5
    wow, i searching this for a long time..thanks dude
     
    fairuz.ismail, Feb 4, 2008 IP
  6. kendo1979

    kendo1979 Peon

    Messages:
    208
    Likes Received:
    1
    Best Answers:
    0
    Trophy Points:
    0
    #6
    thanks for the share.
     
    kendo1979, Feb 4, 2008 IP
  7. pizzagreezi

    pizzagreezi Peon

    Messages:
    43
    Likes Received:
    2
    Best Answers:
    0
    Trophy Points:
    0
    #7
    Sorry for posting again, Now I've quoted it in PHP tag.

    
    <?php 
    define('GOOGLE_MAGIC', 0xE6359A60); 
    class pageRank{
    var $pr = 0; 
     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 9 : $c+=($url[$k+8]<<8);
       /* the first byte of c is reserved for the length */
       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); 
     /* 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 pr_image($pagerank){
      if($pagerank == 0){
       $this->pr = "<img src=\"images/pr0.gif\" alt=\"PageRank " .$pagerank. " out of 10\">" ;
       }elseif($pagerank == 1){
       $this->pr = "<img src=\"images/pr1.gif\" alt=\"PageRank " .$pagerank. " out of 10\">" ;
       }elseif($pagerank == 2){
       $this->pr = "<img src=\"images/pr2.gif\" alt=\"PageRank " .$pagerank. " out of 10\">" ;
       }elseif($pagerank == 3){
       $this->pr = "<img src=\"images/pr3.gif\" alt=\"PageRank " .$pagerank. " out of 10\">" ;
       }elseif($pagerank == 4){
       $this->pr = "<img src=\"images/pr4.gif\" alt=\"PageRank " .$pagerank. " out of 10\">" ;
       }elseif($pagerank == 5){
       $this->pr = "<img src=\"images/pr5.gif\" alt=\"PageRank " .$pagerank. " out of 10\">" ;
       }elseif($pagerank == 6){
       $this->pr = "<img src=\"images/pr6.gif\" alt=\"PageRank " .$pagerank. " out of 10\">" ;
       }elseif($pagerank == 7){
       $this->pr = "<img src=\"images/pr7.gif\" alt=\"PageRank " .$pagerank. " out of 10\">" ;
       }elseif($pagerank == 8){
       $this->pr = "<img src=\"images/pr8.gif\" alt=\"PageRank " .$pagerank. " out of 10\">" ;
       }elseif($pagerank == 9){
       $this->pr = "<img src=\"images/pr9.gif\" alt=\"PageRank " .$pagerank. " out of 10\">" ;
       }else{
       $this->pr = "<img src=\"images/pr10.gif\" alt=\"PageRank " .$pagerank. " out of 10\">" ;
      }
     }
    
     function get_pr(){
      return $this->pr;
     }
     
     function getrank($url){
      $ch = "6".$this->GoogleCH($this->strord("info:" . $url)); 
      
      $fp = @fsockopen("www.google.com", 80, $errno, $errstr, 30);
      if (!$fp) {
    //     echo "$errstr ($errno)<br />\n";
    		$this->pr = 0;
      } 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($fp, 128);
           $pos = strpos($data, "Rank_");
             if($pos === false){
             }else{
               $pagerank = substr($data, $pos + 9);
    		  $this->pr = $pagerank;
             }
         }
         fclose($fp); 
      }
     }
    
    
    
     function printrank($url){
      $ch = "6".$this->GoogleCH($this->strord("info:" . $url)); 
      
      $fp = fsockopen("www.google.com", 80, $errno, $errstr, 30);
      if (!$fp) {
         echo "$errstr ($errno)<br />\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($fp, 128);
           $pos = strpos($data, "Rank_");
             if($pos === false){
             }else{
               $pagerank = substr($data, $pos + 9);
               $this->pr_image($pagerank);
             }
         }
         fclose($fp); 
      }
     }
    
     }
    
     ?>
    
    PHP:
     
    pizzagreezi, Feb 4, 2008 IP