2012-02-06 9 views
-5

私はこのコードを使ってGoogleのページランクを取得します。私のローカルホストでは完璧に動作しますが、私のホスト(linux-php5)で使用すると0ランクを返します。 コード:なぜこのPHPコードがリモートホストで正常に動作していないのですか?localhostでうまく動作します

<html> 
<head> 
<title>GPR</title> 
<body> 
<?php 
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; 
} 
define('GOOGLE_MAGIC',0xE6359A60); 
function Mix($a,$b,$c){ 
    $a-=$b;$a-=$c;$a^=(ZeroFill($c,13)); 
    $b-=$c;$b-=$a;$b^=($a<<8); 
    $c-=$a;$c-=$b;$c^=(ZeroFill($b,13)); 
    $a-=$b;$a-=$c;$a^=(ZeroFill($c,12)); 
    $b-=$c;$b-=$a;$b^=($a<<16); 
    $c-=$a;$c-=$b;$c^=(ZeroFill($b,5)); 
    $a-=$b;$a-=$c;$a^=(ZeroFill($c,3)); 
    $b-=$c;$b-=$a;$b^=($a<<10); 
    $c-=$a;$c-=$b;$c^=(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=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); 
    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=Mix($a,$b,$c); 
    return $mix[2]; 
} 
function StringOrder($string){ 
    for($i=0;$i<strlen($string);$i++){$result[$i]=ord($string{$i});} 
    return $result; 
} 
$url="Yahoo.com"; 
$server="toolbarqueries.google.com"; 

    $url="info:"."$url"; 
    $ch=trim(str_replace("-","",sprintf("6%u\n",GoogleCH(StringOrder($url))))); 
    $res="http://$server/tbr?client=navclient-auto&ch=$ch&features=Rank&q=$url"; 
    [email protected]("$res",r); 
    if($data){ 
    while($line = fgets($data,1024)) { 
     if(substr($line,0,7)=="Rank_1:"){$rankline = $line;} 
    } 
    fclose($data); 
    if (isset($rankline)==false){$rankline="";}; 
    $pagerank = trim(substr($rankline,9,2)); 
    if($pagerank==""){$pagerank="0";} 
    echo <<<HEADER 


<table border=0> 
HEADER; 
echo "<td nowrap colspan=2><a href=\"http://".$url."\">".$url."</a></td>\n"; 
echo "</tr>"; 
echo "<tr>"; 
echo "<td nowrap>Pagerank:&nbsp;&nbsp;</td>"; 
echo "<td nowrap><b>".$pagerank."</b>&nbsp;&nbsp;</td>\n"; 
$out = ''; 
echo $out; 
echo <<<FOOTER 
</table> 
</td></tr></table> 
</blockquote> 
FOOTER; 
} 

?> 
</body> 
</html> 

なぜですか?どうすれば修正できますか?

+0

この行:[$ URL = "Yahoo.com" ;] PRを取得しようとしているURLを表示します。 – Towhid

+2

あなたのコードはすべて混乱しており、問題をデバッグするために行ったことについてはまったく情報が含まれていないので、説明するのは難しいです。さらに、このようにページランクを掻き集めることは、GoogleのToSに対するものです。 – Brad

+0

エラーが表示されますか? – Ibu

答えて

3

ホストで外部URLにfopenを使用できますか? CURLを使用する必要があります。

まず、そのホストでallow_url_fopenが有効になっていることを確認します。

+0

さらに悪いことに、一部のホストでは、スクリプトが発信接続をまったく許可されません。その場合、彼はかなり運が悪いです。 – Dmitri

関連する問題