Merhaba arkadaşlar , google pagerank kontrol için paylaşımda bulunan kodların kimi hostlarda problem çıkartıp pagerank değerini -1 veya 0 orarak göstermesi üzerine ilgili kodlar derlenmiş ve yeniden yayımlanmıştı.

32bit ve 64bit farklılıklarından dolayı problem çıkartan bu uygulamanın minik değişikliklerle daha kararlı haline getirilmiş olanını paylaşmak istiyorum.

örnek uygulamaya buradan bakabilirsiniz DomainBank

örnek uygulamada çalışan kodlar aşağıdadır.

pagerank.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';
function StrToNum($Str, $Check, $Magic) {
    $Int32Unit = 4294967296;  // 2^32

    $length = strlen($Str);
    for ($i = 0; $i < $length; $i++) {
        $Check *= $Magic;     
        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;
}
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 getch($url) { return CheckHash(HashURL($url)); }

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";
       $out .= "User-Agent: $googleua\r\n";
       $out .= "Host: $googlehost\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{
                $pr=substr($data, $pos + 9);
                $pr=trim($pr);
                $pr=str_replace("\n",'',$pr);
                return $pr;
            }
       }
       fclose($fp);
    }
}
function pagerank($url,$width=40,$method='image') {
    if (!preg_match('/^(http:\/\/)?([^\/]+)/i', $url)) { $url='http://'.$url; }
    $pr=getpr($url);
    if(!$pr)
    {
        $pr=0;
    }
    $pagerank="PageRank: $pr/10";

    //Resim Bas
    if ($method == 'image') {
    $prpos=$width*$pr/10;
    $prneg=$width-$prpos;
    $html='<img src="http://www.domainbank.gen.tr/simgeler/pr'.$pr.'.gif" border=0 alt="'.$pagerank.'">';
    }
    //Div Class bas
    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: 8px; line-height: 8px;"><span></span></strong></div>';
    }
    
    $out=''.$html.'</div>
    ';
    
    return $out;
}

if ((!isset($_POST['url'])) && (!isset($_GET['url']))) 
{ 
echo '<div id="container">
    <form id="fm-form" method="post" action="" >
    <fieldset>
        <legend>PageRank Kontrol</legend>
    <div class="fm-opt">
      <label for="fm-eposta">Domain :</label>
      <input name="url" id="url" type="text" size="20" /> 
    </div>
   <div id="siyahlink11"><font class="gri10">sorgulamak istediğiniz domaini yazarak <b>PR Sorgula</b> tuşuna basınız.</font></div>
    </fieldset> 

    <fieldset>    
    <div id="fm-submit" class="fm-req">
      <input name="Submit" value="PR Sorgula" type="submit" /> </form>
    </div>
</div>'; 
}
if (isset($_REQUEST['url'])) { echo pagerank($_REQUEST['url']); }
yukarıdaki kodu pagerank.php (veya tercih ettiğiniz isimle kaydedip çalıştırın ) kolay gelsin