I used to use a class to grab pagerank, but all it returns is a -1 now. It's the same pagerank.php class that everyone else was using. Does this still work or did something change or is it just a problem on my end somewhere?
Sounds like the code that google use may have changed, or something within your setup on your server does not work. Glen
Might be an idea to show as the script or at least give more details on what part of the script has broken so we can have a decent attempt in helping you.
Heres how.... Usuage: <?php include('pagerank.php'); $pr = getPageRank('digitalpoint.com'); echo 'Digitalpoint has PR '.$pr; ?> PHP: Now create or replace your exsisting file pagerank.php with this: <?php function StrToNum($Str, $Check, $Magic) { $Int32Unit = 4294967296; $length = strlen($Str); for ($i = 0; $i < $length; $i++) { $Check *= $Magic; if ($Check >= $Int32Unit) { $Check = ($Check - $Int32Unit * (int) ($Check / $Int32Unit)); $Check = ($Check < -2147483648) ? ($Check + $Int32Unit) : $Check; } $Check += ord($Str{$i}); } return $Check; } 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); } 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; } function getPageRank($url) { $agents = array( 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.9', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.8', ); $useragent = @ini_get('user_agent'); @ini_set('user_agent', $agents[array_rand($agents)]); $ch = CheckHash(HashURL($url)); $pr_url ="http://toolbarqueries.google.com/search?client=navclient-auto&ch=$ch&features=Rank&q=info:$url"; $data = file_get_contents($pr_url); @ini_set('user_agent', $useragent); $pos = strpos($data, "Rank_"); if($pos !== false) { $pr = trim(substr($data, $pos + 9)); return str_replace("\n",'',$pr); } else return 0; } ?> PHP: Your Welcome to +Rep me
It has actually stopped working for me since a month or so and the PR seems to be inaccurate. Looks like google have blocked all toolbar queries using php.
hu? They haven't blocked tool-bar queries, they've blocked how some are made, the code above works perfectly, try it.
I used your PHP script and I got this error: Fatal error: Cannot redeclare strtonum() (previously declared in /home/sites/weblinkcheck.com/public_html/pagerank.php:2) in /home/sites/weblinkcheck.com/public_html/pagerank.php on line 2 line 2: function StrToNum($Str, $Check, $Magic){ ...} solved