1. Advertising
    y u no do it?

    Advertising (learn more)

    Advertise virtually anything here, with CPM banner ads, CPM email ads and CPC contextual links. You can target relevant areas of the site and show ads based on geographical location of the user if you wish.

    Starts at just $1 per CPM or $0.10 per CPC.

PHP Script to display google page rank (interesting!)

Discussion in 'PHP' started by Rezo, Mar 22, 2006.

  1. #1
    What is Google PageRank?
    PageRank is a numeric value that represents how important a page is on the web. It is Google's way of measuring the importance of web site.

    Here is how Google explains PageRank:

    PageRank relies on the uniquely democratic nature of the web by using its vast link structure as an indicator of an individual page's value. Google interprets a link from page A to page B as a vote, by page A, for page B. But Google looks at more than the sheer volume of votes, or links a page receives; it also analyzes the page that casts the vote. Votes cast by pages that are themselves "important" weigh more heavily and help to make other pages "important."

    Google PageRank is mostly discussed by SEO's but also webmasters, web advertisers and publishers. For example, webmasters will not exchange links with websites whose PageRank is less then 4 or 5. Often, web publishers will pay less money for ads on websites with lower PageRanks. So how do you know what a PageRank of a website is? Simplest way to do it is to install Google toolbar. There are also various tools and scripts out there that will tell you the PageRank. One of the popular scripts was the one published by www.googlecommunity.com.

    Below is modified version of that script. I used the code to create a PHP class that can be easily implemented with your projects. I also included images for visual representation of the PageRank.

    To see the implementation of the code below visit BeWebmaster.com link directory.

    pagerank.php

    <?php  
    define('GOOGLE_MAGIC', 0xE6359A60);  
    class pageRank{ 
    var $pr;  
    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];  
    }  
    
    
    
    function strord($string) {  
      for($i=0;$i<strlen($string);$i++) {  
       $result[$i] = ord($string{$i});  
      }  
    return $result;  
    }  
    
    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:
    //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 = "<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; 
    } 
    } 
    ?> 
    PHP:
    Do following:
    Save the code above as pagerank.php.
    Download or create your own images to display each rank.
    Create a directory "images" containing all page rank images.
    See code below on how to use the class.

    <?php 
    include("pagerank.php"); 
    $gpr = new pageRank(); 
    $gpr->printrank("http://www.yahoo.com"); 
    //display image 
    echo $gpr->get_pr(); 
    ?>
    PHP:
    Done!
     
    Rezo, Mar 22, 2006 IP
    vishwaa likes this.
  2. seowebguide

    seowebguide Active Member

    Messages:
    258
    Likes Received:
    6
    Best Answers:
    0
    Trophy Points:
    73
    #2
    when I try to save the code none of the formatting stays (IE). If I use Firefox to copy the code I get the line numbers with the code. Am I missing something?
     
    seowebguide, Mar 22, 2006 IP
  3. Rezo

    Rezo Well-Known Member

    Messages:
    4,183
    Likes Received:
    158
    Best Answers:
    0
    Trophy Points:
    135
    #3
    Everything works, just follow the steps...
     
    Rezo, Mar 23, 2006 IP
  4. mad4

    mad4 Peon

    Messages:
    6,986
    Likes Received:
    493
    Best Answers:
    0
    Trophy Points:
    0
    #4
    mad4, Mar 23, 2006 IP
  5. Webase

    Webase Peon

    Messages:
    53
    Likes Received:
    1
    Best Answers:
    0
    Trophy Points:
    0
    #5
    Thanks for the code, I think I'm going to use on my page. :O
     
    Webase, Mar 23, 2006 IP
  6. seowebguide

    seowebguide Active Member

    Messages:
    258
    Likes Received:
    6
    Best Answers:
    0
    Trophy Points:
    73
    #6
    Awsome. Thanks for the zip package.
     
    seowebguide, Mar 23, 2006 IP
  7. seowebguide

    seowebguide Active Member

    Messages:
    258
    Likes Received:
    6
    Best Answers:
    0
    Trophy Points:
    73
    #7
    zip package isn't the same script.
     
    seowebguide, Mar 23, 2006 IP
  8. seowebguide

    seowebguide Active Member

    Messages:
    258
    Likes Received:
    6
    Best Answers:
    0
    Trophy Points:
    73
    #8
    I was able to save the code in proper format with wordpad rather than notepad. Thanks for the code and help.
     
    seowebguide, Mar 23, 2006 IP
  9. seowebguide

    seowebguide Active Member

    Messages:
    258
    Likes Received:
    6
    Best Answers:
    0
    Trophy Points:
    73
    #9
    I was able to get the code working...thanks a bunch, been looking for a "free", non hosted version of this for a while (not a programmer).
     
    seowebguide, Mar 23, 2006 IP
  10. Rezo

    Rezo Well-Known Member

    Messages:
    4,183
    Likes Received:
    158
    Best Answers:
    0
    Trophy Points:
    135
    #10
    Isn't the same script? Strange...
     
    Rezo, Mar 23, 2006 IP
  11. commandos

    commandos Notable Member

    Messages:
    3,648
    Likes Received:
    329
    Best Answers:
    0
    Trophy Points:
    280
    #11
    The zip is a search script ....
     
    commandos, Mar 25, 2006 IP
  12. falcondriver

    falcondriver Well-Known Member

    Messages:
    963
    Likes Received:
    47
    Best Answers:
    0
    Trophy Points:
    145
    #12
    holly sh1t - why you dont cut this crap to 3 lines:

    
    function pr_image($pagerank) {
       return '<img src="images/pr'.trim($pagerank).'.gif" alt="PageRank '.$pagerank.' out of 10">'; 
    }
    
    PHP:
    (2 lines more to check if $pagerank is valid...)
    and yes, you can hire me as your programmer :cool:
     
    falcondriver, Mar 25, 2006 IP
    mad4 likes this.
  13. coolsitez

    coolsitez Well-Known Member

    Messages:
    2,586
    Likes Received:
    246
    Best Answers:
    0
    Trophy Points:
    183
    #13
    Is it ok to use the script? I was wondering if it's against TOS of Google.
     
    coolsitez, Apr 8, 2006 IP
  14. Rezo

    Rezo Well-Known Member

    Messages:
    4,183
    Likes Received:
    158
    Best Answers:
    0
    Trophy Points:
    135
    #14
    Why wouldn't it be ok? I guess it should be ok!
     
    Rezo, Apr 8, 2006 IP
  15. commandos

    commandos Notable Member

    Messages:
    3,648
    Likes Received:
    329
    Best Answers:
    0
    Trophy Points:
    280
    #15
    I also think google allready blocked a lot of server from displaying page rank ... any one got the same issue ?
     
    commandos, Apr 8, 2006 IP
  16. mad4

    mad4 Peon

    Messages:
    6,986
    Likes Received:
    493
    Best Answers:
    0
    Trophy Points:
    0
    #16
    This script isn't actually allowed by google as it doesn't make use of the API. They do turn a blind eye to the thousands of sites that use it but if you make a bunch of queries then your IP might get banned.......
     
    mad4, Apr 8, 2006 IP
  17. mvandemar

    mvandemar Notable Member

    Messages:
    2,409
    Likes Received:
    307
    Best Answers:
    0
    Trophy Points:
    230
    #17
    This script looks like the one I was using before, and the checksum it generates doesn't seem to work. Has anyone actually gotten this version to run lately?

    I have a working Javascript version that does generate the correct checksum, and the checksum generated by it looks totally differant than what this script produces. Any ideas on where to look for an updated version?

    Thanks.

    -Michael
     
    mvandemar, Apr 10, 2006 IP
  18. LiveWire

    LiveWire Peon

    Messages:
    8
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #18
    What exacly does this script do, and how does it benefit web owners?
     
    LiveWire, Apr 11, 2006 IP
  19. mad4

    mad4 Peon

    Messages:
    6,986
    Likes Received:
    493
    Best Answers:
    0
    Trophy Points:
    0
    #19
    It allows you to show the current toolbar PR of a url on your site. This can benefit anybody but its very useful if you have a directory.

    I use this script and it works fine.
     
    mad4, Apr 11, 2006 IP
  20. falcondriver

    falcondriver Well-Known Member

    Messages:
    963
    Likes Received:
    47
    Best Answers:
    0
    Trophy Points:
    145
    #20
    i agree, such a pr-display can be very usefull for a directory:

    
    $pr=printrank($category_url);
    $price=(20*$pr)+9.95;
    echo "The listing fee for your category is US$".$price.", ";
    echo "or only US$".10+$price." for a featured (bold title!) listing.";
    
    PHP:
    :D
     
    falcondriver, Apr 17, 2006 IP