“In this article i will show you how to get a working Google Website Pagerank Checker using the PHP language.”

Vrijdag 18 mei 2012
Blog / Interesting / Google PageRank Checker - PHP Script

Google PageRank Checker - PHP Script

  • Donderdag 17 november 2011
  • door  Roy Jansen, FX Webdesign
Beoordeel dit project
(8 stemmen)
Since Google changed their Google PageRank API to use a different query URL a lot are “lost” without their Google PageRank. The solution consist of a PHP GooglePageRankChecker class which queries the PageRank for a given site and returns the PageRank number.

“It turns out Pagerank is not dead after all. Google has simply updated the URL which is used to query it, which has caused various toolbars and websites to stop reporting the number.”

In this article i will show you how to get/build a “working” Google Website Pagerank Checker using the PHP language.
Example:
  • First of all, copy and paste the following “GooglePageRankChecker Class” to your existing PHP code.

GooglePageRankChecker Class

<?php
class GooglePageRankChecker {

  // Track the instance
  private static $instance;

  // Constructor
  function getRank($page) {
    // Create the instance, if one isn't created yet
    if(!isset(self::$instance)) {
      self::$instance = new self();
    }
    // Return the result
    return self::$instance->check($page);
  }

  // Convert string to a number
  function stringToNumber($string,$check,$magic) {
    $int32 = 4294967296;  // 2^32
      $length = strlen($string);
      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 >= $int32) {
              $check = ($check - $int32 * (int) ($check / $int32));
              //if the check less than -2^31
              $check = ($check < -($int32 / 2)) ? ($check + $int32) : $check;
          }
          $check += ord($string{$i});
      }
      return $check;
  }

  // Create a url hash
  function createHash($string) {
    $check1 = $this->stringToNumber($string, 0x1505, 0x21);
      $check2 = $this->stringToNumber($string, 0, 0x1003F);

    $factor = 4;
    $halfFactor = $factor/2;

      $check1 >>= $halfFactor;
      $check1 = (($check1 >> $factor) & 0x3FFFFC0 ) | ($check1 & 0x3F);
      $check1 = (($check1 >> $factor) & 0x3FFC00 ) | ($check1 & 0x3FF);
      $check1 = (($check1 >> $factor) & 0x3C000 ) | ($check1 & 0x3FFF);  

      $calc1 = (((($check1 & 0x3C0) << $factor) | ($check1 & 0x3C)) << $halfFactor ) | ($check2 & 0xF0F );
      $calc2 = (((($check1 & 0xFFFFC000) << $factor) | ($check1 & 0x3C00)) << 0xA) | ($check2 & 0xF0F0000 );

      return ($calc1 | $calc2);
  }

  // Create checksum for hash
  function checkHash($hashNumber)
  {
      $check = 0;
    $flag = 0;

    $hashString = sprintf('%u', $hashNumber) ;
    $length = strlen($hashString);

    for ($i = $length - 1;  $i >= 0;  $i --) {
      $r = $hashString{$i};
      if(1 === ($flag % 2)) {
        $r += $r;
        $r = (int)($r / 10) + ($r % 10);
      }
      $check += $r;
      $flag ++;
    }

    $check %= 10;
    if(0 !== $check) {
      $check = 10 - $check;
      if(1 === ($flag % 2) ) {
        if(1 === ($check % 2)) {
          $check += 9;
        }
        $check >>= 1;
      }
    }

    return '7'.$check.$hashString;
  }

  function check($page) {

    // Open a socket to the toolbarqueries address, used by Google Toolbar
    $socket = fsockopen("toolbarqueries.google.com", 80, $errno, $errstr, 30);

    // If a connection can be established
    if($socket) {
      // Prep socket headers
      $out = "GET /tbr?client=navclient-auto&ch=".$this->checkHash($this->createHash($page)).
              "&features=Rank&q=info:".$page."&num=100&filter=0 HTTP/1.1\r\n";
      $out .= "Host: toolbarqueries.google.com\r\n";
      $out .= "User-Agent: Mozilla/4.0 (compatible; GoogleToolbar 2.0.114-big; Windows XP 5.1)\r\n";
      $out .= "Connection: Close\r\n\r\n";

      // Write settings to the socket
      fwrite($socket, $out);

      // When a response is received...
      $result = "";
      while(!feof($socket)) {
        $data = fgets($socket, 128);
        $pos = strpos($data, "Rank_");
        if($pos !== false){
          $pagerank = substr($data, $pos + 9);
          $result += $pagerank;
        }
      }
      // Close the connection
      fclose($socket);

      // Return the rank!
      return $result;
    }
  }
}
?>
  • Now simply copy and paste the following “Test Code” to your existing PHP code. (this will echo the Google pagerank result)

Test Code

<?php
$rank = GooglePageRankChecker::getRank("fxwebdesign.nl"); // Replace with your website url
echo "Google Pagerank: " .$rank;
?>
  • Reload the existing PHP code (in your browser) wich you edited, you will see something like “Google Pagerank: 4”, of course the number may be different. (this means the echoing of the Google pagerank result works)
    Finally we add the “Google PageRank Checker” form. Simply copy and paste the following “Form Code” to your existing PHP code.

Form Code

<?php
echo '<form name="pr" action="http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'] .'" method="post">
        <input type="text" value="http://"  name="www" />
        <input type="submit" value="Check PageRank" />
      </form>';

if(isset($_POST['www']))
{
  echo 'Google PageRank of “<a href="'.$_POST['www'].'" target="_blank">'.$_POST['www'].'</a>” is: '.GooglePageRankChecker::getRank(stripslashes($_POST['www'])).'.';
}
?>
  • You're Ready! Reload the existing PHP code (in your browser) wich you edited, and . (live demo here)
    • Like the article? Finally found a Google PageRank Checker that works? wink Please consider a donation or comment. I suspect that like many of you, “scripting is just a hobby for me”. Thank you very much, i'd very much appreciate it.


Aanvullende informatie


Blogitems Kalender

« mei 2012 »
ma di wo do vr za zo
  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      

Categoriën

Vandaag: 133 | Week: 1701 | Maand: 6610 | Totaal: 158113
Naar Boven