<?php
function cn_calcRankPR($url, &$comment)
{
$pr = new PR();
$pr = $pr->check_pr($url);
if ($pr == "") {$pr="0";}
return($pr);
}
?>
Нужна помощь в скрипте каталога CNCAT 4.4.2
Не отображается PR сайтов, помогите поправить файл
check.php
[FONT="Comic Sans MS"]В данной функции я поменял ссылки тулбара гугла но всё равно не работает[/FONT]
отрывок кода
Код:
<?php
function get_pr($url, $timeout = 30)
{
global $CNCAT;
$result=array("",-1);
if (($url.""!="")&&($url.""!="http://"))
{
// check for protocol
if (cn_substr(cn_strtolower($url),0,7)!="http://")
{
$url="http://".$url;
}
$url=rtrim($url, "/");
//$url="info:".$url;
$checksum=checkHash(hashUrl($url));//cn_GoogleCH(cn_strord($url));
$checksum = ($checksum >= 0? $checksum: 4294967296 + $checksum);
$contents="";
// let's get ranking
// this way could cause problems because the Browser Useragent is not set...
if ($CNCAT["config"]["check_method"] == 0 && function_exists("fsockopen"))
{
$google_url="/tbr?features=Rank&sourceid=navclient-ff&client=navclient-auto-ff&ch={$checksum}&q=info:".$url; // url to get from google
//$google_url="/search?client=navclient-auto&ch={$checksum}&features=Rank&q=info:" . $url; // url to get from google
// Creating socket
$address = "toolbarqueries.google.com";
if ($timeout>0)
$socket = @fsockopen($address, 80, $errno, $errstr, $timeout);
else
$socket = @fsockopen($address, 80, $errno, $errstr);
if (!$socket)
{
$contents="Connection unavailable";
break;
}
$request = "GET ".$google_url." HTTP/1.0\r\n";
fputs($socket, $request);
fputs($socket,"Accept: */*\r\n");
fputs($socket,"User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)\r\n");
fputs($socket,"Host: ".$address."\r\n\r\n");
fputs($socket,"Connection: Close\r\n");
// Response
while (!feof($socket))
$contents .= fgets($socket, 2048);
fclose ($socket);
$contents = strstr( $contents,"Rank" );
}
else
{
// $google_url="http://www.google.com/search?client=navclient-auto&ch={$checksum}&features=Rank&q=info:" . $url;
$google_url="http://toolbarqueries.google.com/tbr?features=Rank&sourceid=navclient-ff&client=navclient-auto-ff&ch={$checksum}&q=info:".$url; // url to get from google
if ($handle=@fopen($google_url,"rb"))
{
while(true):
$data=fread($handle,8192);
if (cn_strlen($data)==0):
break;
endif;
$contents.=$data;
endwhile;
fclose($handle);
}
else
$contents="Connection unavailable";
}
$result[0]=$contents;
// Rank_1:1:0 = 0
// Rank_1:1:5 = 5
// Rank_1:1:9 = 9
// Rank_1:2:10 = 10 etc
$p=explode(":",$contents);
if (isset($p[2]))
{
$result[1]=$p[2];
}
}
return $result;
}
?>
function get_pr($url, $timeout = 30)
{
global $CNCAT;
$result=array("",-1);
if (($url.""!="")&&($url.""!="http://"))
{
// check for protocol
if (cn_substr(cn_strtolower($url),0,7)!="http://")
{
$url="http://".$url;
}
$url=rtrim($url, "/");
//$url="info:".$url;
$checksum=checkHash(hashUrl($url));//cn_GoogleCH(cn_strord($url));
$checksum = ($checksum >= 0? $checksum: 4294967296 + $checksum);
$contents="";
// let's get ranking
// this way could cause problems because the Browser Useragent is not set...
if ($CNCAT["config"]["check_method"] == 0 && function_exists("fsockopen"))
{
$google_url="/tbr?features=Rank&sourceid=navclient-ff&client=navclient-auto-ff&ch={$checksum}&q=info:".$url; // url to get from google
//$google_url="/search?client=navclient-auto&ch={$checksum}&features=Rank&q=info:" . $url; // url to get from google
// Creating socket
$address = "toolbarqueries.google.com";
if ($timeout>0)
$socket = @fsockopen($address, 80, $errno, $errstr, $timeout);
else
$socket = @fsockopen($address, 80, $errno, $errstr);
if (!$socket)
{
$contents="Connection unavailable";
break;
}
$request = "GET ".$google_url." HTTP/1.0\r\n";
fputs($socket, $request);
fputs($socket,"Accept: */*\r\n");
fputs($socket,"User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)\r\n");
fputs($socket,"Host: ".$address."\r\n\r\n");
fputs($socket,"Connection: Close\r\n");
// Response
while (!feof($socket))
$contents .= fgets($socket, 2048);
fclose ($socket);
$contents = strstr( $contents,"Rank" );
}
else
{
// $google_url="http://www.google.com/search?client=navclient-auto&ch={$checksum}&features=Rank&q=info:" . $url;
$google_url="http://toolbarqueries.google.com/tbr?features=Rank&sourceid=navclient-ff&client=navclient-auto-ff&ch={$checksum}&q=info:".$url; // url to get from google
if ($handle=@fopen($google_url,"rb"))
{
while(true):
$data=fread($handle,8192);
if (cn_strlen($data)==0):
break;
endif;
$contents.=$data;
endwhile;
fclose($handle);
}
else
$contents="Connection unavailable";
}
$result[0]=$contents;
// Rank_1:1:0 = 0
// Rank_1:1:5 = 5
// Rank_1:1:9 = 9
// Rank_1:2:10 = 10 etc
$p=explode(":",$contents);
if (isset($p[2]))
{
$result[1]=$p[2];
}
}
return $result;
}
?>
check.php
отрывок кода
Код:
<?php
function cn_calcRankPR($url, &$comment)
{
define('GOOGLE_MAGIC', 0xE6359A60);
$pr=get_pr($url);
return($pr[1]);
};
function cn_nooverflow($a)
{
while ($a<-2147483648)
$a+=2147483648+2147483648;
while ($a>2147483647)
$a-=2147483648+2147483648;
return $a;
}
function cn_zeroFill($x, $bits)
{
if ($bits==0) return $x;
if ($bits==32) return 0;
$y = shr(ands($x,0x7FFFFFFF) , $bits);
if (ands(0x80000000 , $x)) {
$y |= (shl(1,(31-$bits)));
}
return $y;
}
function cn_mix($a,$b,$c)
{
$a=(int)$a; $b=(int)$b; $c=(int)$c;
$a -= $b; $a -= $c; $a=cn_nooverflow($a); $a = xors($a,(cn_zeroFill($c,13)));
$b -= $c; $b -= $a; $b=cn_nooverflow($b); $b = xors($b,(shl($a,8)));
$c -= $a; $c -= $b; $c=cn_nooverflow($c); $c = xors($c,(cn_zeroFill($b,13)));
$a -= $b; $a -= $c; $a=cn_nooverflow($a); $a = xors($a,(cn_zeroFill($c,12)));
$b -= $c; $b -= $a; $b=cn_nooverflow($b); $b = xors($b,(shl($a,16)));
$c -= $a; $c -= $b; $c=cn_nooverflow($c); $c = xors($c,(cn_zeroFill($b,5)));
$a -= $b; $a -= $c; $a=cn_nooverflow($a); $a = xors($a,(cn_zeroFill($c,3)));
$b -= $c; $b -= $a; $b=cn_nooverflow($b); $b = xors($b,(shl($a,10)));
$c -= $a; $c -= $b; $c=cn_nooverflow($c); $c = xors($c,(cn_zeroFill($b,15)));
return array($a,$b,$c);
}
function dec2bin($dec)
{
$result = '';
$shift = 0;
if ($dec<0)
{
$minus=true; // отрицательное
$dec=-1*($dec+1); // делаем NOT, чтоб делить положительное число, но ставим флаг что отрицательное
} else {
$minus=false;
}
while ( pow(2, $shift) < $dec ) // стандартные наработки
{
++$shift;
}
while ( 0 <= $shift )
{
$pow = pow(2, $shift);
if ( $pow <= $dec )
{
$dec-= $pow;
$result = $result . ($minus?'0':'1'); // если отрицательное число у нас, то NOT
} else {
$result = $result . ($minus?'1':'0');
}
--$shift;
}
$result=str_pad($result, 64, ($minus?"1":"0"), STR_PAD_LEFT);
// заполняем результат слева, чтобы было 64 символа (дальше поймете почему)
return $result;
}
function xors ($a, $b) // переменные передаются в десятичной форме
{
$c='0000000000000000000000000000000000000000000000000000000000000000';
$a=dec2bin($a);
$b=dec2bin($b);
for ($i=63;$i>=0;$i--)
{
$c[$i]=((int)$a[$i]^(int)$b[$i]);
}
$c=bin2dec($c);
return $c;
}
function ands ($a, $b) // переменные передаются в десятичной форме
{
$c='0000000000000000000000000000000000000000000000000000000000000000';
$a=dec2bin($a);
$b=dec2bin($b);
for ($i=63;$i>=0;$i--)
{
$c[$i]=((int)$a[$i]&(int)$b[$i]);
}
$c=bin2dec($c);
return $c;
}
function shl($a, $bit)
{
$a=dec2bin($a);
$a=str_pad($a, 64+$bit, "0", STR_PAD_RIGHT); // добавляем справа "0" количество $bit
$c=substr($a,$bit); // а теперь отрезаем, тоесть сдвинули влево на $bit
$c=bin2dec($c);
return $c;
}
function shr($a, $bit)
{
$a=dec2bin($a);
$a=str_pad($a, 64+$bit, "0", STR_PAD_LEFT);
$c=substr($a,0, -$bit);
$c=bin2dec($c);
return $c;
}
function bin2dec($c)
{
if ($c>'0000000000000000000000000000000001111111111111111111111111111111')
{
for ($i=63;$i>=0;$i--)
{
$c[$i]=((int)$c[$i]^1); //^1;
}
$c=base_convert(substr($c,32), 2, 10);
$c=-1*($c+1);
} else {
$c=bindec($c);
}
return $c;
}
function cn_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] +(shl($url[$k+1],8)) +(shl($url[$k+2],16)) +(shl($url[$k+3],24)));
$b += ($url[$k+4] +(shl($url[$k+5],8)) +(shl($url[$k+6],16)) +(shl($url[$k+7],24)));
$c += ($url[$k+8] +(shl($url[$k+9],8)) +(shl($url[$k+10],16))+(shl($url[$k+11],24)));
$cn_mix = cn_mix($a,$b,$c);
$a = $cn_mix[0]; $b = $cn_mix[1]; $c = $cn_mix[2];
$k += 12;
$len -= 12;
}
$c += $length;
switch($len)
{
case 11: $c+=(shl($url[$k+10],24));
case 10: $c+=(shl($url[$k+9],16));
case 9 : $c+=(shl($url[$k+8],8));
case 8 : $b+=(shl($url[$k+7],24));
case 7 : $b+=(shl($url[$k+6],16));
case 6 : $b+=(shl($url[$k+5],8));
case 5 : $b+=($url[$k+4]);
case 4 : $a+=(shl($url[$k+3],24));
case 3 : $a+=(shl($url[$k+2],16));
case 2 : $a+=(shl($url[$k+1],8));
case 1 : $a+=($url[$k+0]);
}
$cn_mix = cn_mix($a,$b,$c);
return $cn_mix[2];
}
//converts a string into an array of integers containing the numeric value of the char
function cn_strord($string)
{
for($i=0;$i<strlen($string);$i++)
{
$result[$i] = ord($string{$i});
}
return $result;
}
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;
}
/**
* Получаем хеш URL-а
* @param string $string
* @return integer
*/
function hashUrl($string) {
$check1 = strToNum($string, 0x1505, 0x21);
$check2 = strToNum($string, 0, 0x1003F);
$check1 >>= 2;
$check1 = (($check1 >> 4) & 0x3FFFFC0 ) | ($check1 & 0x3F);
$check1 = (($check1 >> 4)
function cn_calcRankPR($url, &$comment)
{
define('GOOGLE_MAGIC', 0xE6359A60);
$pr=get_pr($url);
return($pr[1]);
};
function cn_nooverflow($a)
{
while ($a<-2147483648)
$a+=2147483648+2147483648;
while ($a>2147483647)
$a-=2147483648+2147483648;
return $a;
}
function cn_zeroFill($x, $bits)
{
if ($bits==0) return $x;
if ($bits==32) return 0;
$y = shr(ands($x,0x7FFFFFFF) , $bits);
if (ands(0x80000000 , $x)) {
$y |= (shl(1,(31-$bits)));
}
return $y;
}
function cn_mix($a,$b,$c)
{
$a=(int)$a; $b=(int)$b; $c=(int)$c;
$a -= $b; $a -= $c; $a=cn_nooverflow($a); $a = xors($a,(cn_zeroFill($c,13)));
$b -= $c; $b -= $a; $b=cn_nooverflow($b); $b = xors($b,(shl($a,8)));
$c -= $a; $c -= $b; $c=cn_nooverflow($c); $c = xors($c,(cn_zeroFill($b,13)));
$a -= $b; $a -= $c; $a=cn_nooverflow($a); $a = xors($a,(cn_zeroFill($c,12)));
$b -= $c; $b -= $a; $b=cn_nooverflow($b); $b = xors($b,(shl($a,16)));
$c -= $a; $c -= $b; $c=cn_nooverflow($c); $c = xors($c,(cn_zeroFill($b,5)));
$a -= $b; $a -= $c; $a=cn_nooverflow($a); $a = xors($a,(cn_zeroFill($c,3)));
$b -= $c; $b -= $a; $b=cn_nooverflow($b); $b = xors($b,(shl($a,10)));
$c -= $a; $c -= $b; $c=cn_nooverflow($c); $c = xors($c,(cn_zeroFill($b,15)));
return array($a,$b,$c);
}
function dec2bin($dec)
{
$result = '';
$shift = 0;
if ($dec<0)
{
$minus=true; // отрицательное
$dec=-1*($dec+1); // делаем NOT, чтоб делить положительное число, но ставим флаг что отрицательное
} else {
$minus=false;
}
while ( pow(2, $shift) < $dec ) // стандартные наработки
{
++$shift;
}
while ( 0 <= $shift )
{
$pow = pow(2, $shift);
if ( $pow <= $dec )
{
$dec-= $pow;
$result = $result . ($minus?'0':'1'); // если отрицательное число у нас, то NOT
} else {
$result = $result . ($minus?'1':'0');
}
--$shift;
}
$result=str_pad($result, 64, ($minus?"1":"0"), STR_PAD_LEFT);
// заполняем результат слева, чтобы было 64 символа (дальше поймете почему)
return $result;
}
function xors ($a, $b) // переменные передаются в десятичной форме
{
$c='0000000000000000000000000000000000000000000000000000000000000000';
$a=dec2bin($a);
$b=dec2bin($b);
for ($i=63;$i>=0;$i--)
{
$c[$i]=((int)$a[$i]^(int)$b[$i]);
}
$c=bin2dec($c);
return $c;
}
function ands ($a, $b) // переменные передаются в десятичной форме
{
$c='0000000000000000000000000000000000000000000000000000000000000000';
$a=dec2bin($a);
$b=dec2bin($b);
for ($i=63;$i>=0;$i--)
{
$c[$i]=((int)$a[$i]&(int)$b[$i]);
}
$c=bin2dec($c);
return $c;
}
function shl($a, $bit)
{
$a=dec2bin($a);
$a=str_pad($a, 64+$bit, "0", STR_PAD_RIGHT); // добавляем справа "0" количество $bit
$c=substr($a,$bit); // а теперь отрезаем, тоесть сдвинули влево на $bit
$c=bin2dec($c);
return $c;
}
function shr($a, $bit)
{
$a=dec2bin($a);
$a=str_pad($a, 64+$bit, "0", STR_PAD_LEFT);
$c=substr($a,0, -$bit);
$c=bin2dec($c);
return $c;
}
function bin2dec($c)
{
if ($c>'0000000000000000000000000000000001111111111111111111111111111111')
{
for ($i=63;$i>=0;$i--)
{
$c[$i]=((int)$c[$i]^1); //^1;
}
$c=base_convert(substr($c,32), 2, 10);
$c=-1*($c+1);
} else {
$c=bindec($c);
}
return $c;
}
function cn_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] +(shl($url[$k+1],8)) +(shl($url[$k+2],16)) +(shl($url[$k+3],24)));
$b += ($url[$k+4] +(shl($url[$k+5],8)) +(shl($url[$k+6],16)) +(shl($url[$k+7],24)));
$c += ($url[$k+8] +(shl($url[$k+9],8)) +(shl($url[$k+10],16))+(shl($url[$k+11],24)));
$cn_mix = cn_mix($a,$b,$c);
$a = $cn_mix[0]; $b = $cn_mix[1]; $c = $cn_mix[2];
$k += 12;
$len -= 12;
}
$c += $length;
switch($len)
{
case 11: $c+=(shl($url[$k+10],24));
case 10: $c+=(shl($url[$k+9],16));
case 9 : $c+=(shl($url[$k+8],8));
case 8 : $b+=(shl($url[$k+7],24));
case 7 : $b+=(shl($url[$k+6],16));
case 6 : $b+=(shl($url[$k+5],8));
case 5 : $b+=($url[$k+4]);
case 4 : $a+=(shl($url[$k+3],24));
case 3 : $a+=(shl($url[$k+2],16));
case 2 : $a+=(shl($url[$k+1],8));
case 1 : $a+=($url[$k+0]);
}
$cn_mix = cn_mix($a,$b,$c);
return $cn_mix[2];
}
//converts a string into an array of integers containing the numeric value of the char
function cn_strord($string)
{
for($i=0;$i<strlen($string);$i++)
{
$result[$i] = ord($string{$i});
}
return $result;
}
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;
}
/**
* Получаем хеш URL-а
* @param string $string
* @return integer
*/
function hashUrl($string) {
$check1 = strToNum($string, 0x1505, 0x21);
$check2 = strToNum($string, 0, 0x1003F);
$check1 >>= 2;
$check1 = (($check1 >> 4) & 0x3FFFFC0 ) | ($check1 & 0x3F);
$check1 = (($check1 >> 4)
Вы думаете кто-то будет сидеть разбираться в этой простыне кода из малоизвестной системы?
Цитата: RussianSpy
Вы думаете кто-то будет сидеть разбираться в этой простыне кода из малоизвестной системы?
Система довольно попупярная даже на этом сайте установлен каталог http://cat.codenet.ru/
Может быть лучше задать этот вопрос на оф. сайте системы? Там гораздо выше шанс что вам ответят.
Цитата: RussianSpy
Может быть лучше задать этот вопрос на оф. сайте системы? Там гораздо выше шанс что вам ответят.
Форума нет уже на оф сайте он закрылся и поддержка молчит.
Цитата: RussianSpy
Может быть лучше задать этот вопрос на оф. сайте системы? Там гораздо выше шанс что вам ответят.
Форума нет уже на оф сайте он закрылся и поддержка молчит.
шпион прав - разбираться что конкретно не работает у вас, за вас никто не будет. Локализуйте ошибку. Как минимум - у вас ошибка в гугловском адресе. Например.
Тем более что, насколько известно мне, гугль не только изменил сервер для запросов но и алгоритм расчета checksum для урла. Может быть причина в этом?
Ога скорей всего из-за алгоритма подсчёта, пытаюсь простой внедрить алгоритм готовый. Пока не выходит.........
покажите что именно не выходит. Сам алгоритм есть?
Код:
<?php
// показывает PR 7 в браузере значит верно вычисляет
$url="http://mail.ru";
class PR
{
private 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;
}
private function HashURL($String)
{
$Check1 = PR::StrToNum($String, 0x1505, 0x21);
$Check2 = PR::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);
}
private 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;
}
public function check_pr($url)
{
$ch = curl_init("http://toolbarqueries.google.com/tbr?features=Rank&sourceid=navclient-ff&client=navclient-auto-ff&ch="
."&ch=".$this->CheckHash($this->HashURL($url))."&q=info:$url");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$result = curl_exec($ch);
if(curl_errno($ch) != 0)
die("curl_errno(".curl_errno($ch)."), curl_error(".curl_error($ch).")");
curl_close($ch);
return substr($result, 9);
}
}
$pr = new PR();
$pr = $pr->check_pr($url);
if ($pr == "") {$pr="0";}
echo "$pr";
?>
// показывает PR 7 в браузере значит верно вычисляет
$url="http://mail.ru";
class PR
{
private 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;
}
private function HashURL($String)
{
$Check1 = PR::StrToNum($String, 0x1505, 0x21);
$Check2 = PR::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);
}
private 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;
}
public function check_pr($url)
{
$ch = curl_init("http://toolbarqueries.google.com/tbr?features=Rank&sourceid=navclient-ff&client=navclient-auto-ff&ch="
."&ch=".$this->CheckHash($this->HashURL($url))."&q=info:$url");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$result = curl_exec($ch);
if(curl_errno($ch) != 0)
die("curl_errno(".curl_errno($ch)."), curl_error(".curl_error($ch).")");
curl_close($ch);
return substr($result, 9);
}
}
$pr = new PR();
$pr = $pr->check_pr($url);
if ($pr == "") {$pr="0";}
echo "$pr";
?>
эту строку можно закомментировать и вызывать так любой сайт
http://site.org/CHECK_PR.php?url=mail.org
Код:
Цитата: kot_
У вас же все написано
Код:
<?php
function cn_calcRankPR($url, &$comment)
{
$pr = new PR();
$pr = $pr->check_pr($url);
if ($pr == "") {$pr="0";}
return($pr);
}
?>
function cn_calcRankPR($url, &$comment)
{
$pr = new PR();
$pr = $pr->check_pr($url);
if ($pr == "") {$pr="0";}
return($pr);
}
?>
-------------------
Спасибо за наводку поменял в функции код + подключил class PR в самом начале файла check.php и всё получилось =)