私はこのコードを使って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: </td>";
echo "<td nowrap><b>".$pagerank."</b> </td>\n";
$out = '';
echo $out;
echo <<<FOOTER
</table>
</td></tr></table>
</blockquote>
FOOTER;
}
?>
</body>
</html>
なぜですか?どうすれば修正できますか?
この行:[$ URL = "Yahoo.com" ;] PRを取得しようとしているURLを表示します。 – Towhid
あなたのコードはすべて混乱しており、問題をデバッグするために行ったことについてはまったく情報が含まれていないので、説明するのは難しいです。さらに、このようにページランクを掻き集めることは、GoogleのToSに対するものです。 – Brad
エラーが表示されますか? – Ibu