首页 > php代码 > php google pr 值代码

php google pr 值代码

下面的代码是一段获取 google pr值,并且还支持js调用显示哦。


<?php
// require dirname(__FILE__) . '/MooPHP/MooPHP.php';
define('GMAG', 0xE6359A60);
//note 获取和处理可能要取得的变量
//$site = MooGetGPC('site', 'string');
$host = '';
$style = isset($_GET['style']) ? $_GET['style'] : 1;
$host = $_SERVER['HTTP_HOST'];
$site = str_replace('http://', '', $host);
if ($site) {
    $pr = getPR($site);
    switch ($style) {
        case 3:
            echo 'document.write("<a href=http://tool.phprm.com/pr/pr.php target=_blank><img src=http://tool.phprm.com/pr/primg/a' . $pr . '.png border=0 /></a>");';
            break;
        case 2:
            echo 'document.write("<a href=http://tool.phprm.com/pr/pr.php target=_blank><img src=http://tool.phprm.com/pr/primg/b' . $pr . '.png border=0 /></a>");';
            break;
        case 1:
            echo 'document.write("<a href=http://tool.phprm.com/pr/pr.php target=_blank><img src=http://tool.phprm.com/pr/primg/c' . $pr . '.png border=0 /></a>");';
            break;
        default:
            echo 'document.write("<a href=http://tool.phprm.com/pr/pr.php target=_blank><img src=http://tool.phprm.com/pr/primg/a' . $pr . '.png border=0 /></a>");';
            break;
    }
} else {
    echo '有问题';
}
// include MooTemplate("pr_index");
//note 处理获得pr值的函数
// url get method macro.
define('G_PR_GET_TYPE_FILE', 1); // use fopen() function
define('G_PR_GET_TYPE_SOCKET', 2); // use standard fsocketopen function
// main function to be called
function getPR($_url, $gettype = G_PR_GET_TYPE_SOCKET) {
    $url = 'info:' . $_url;
    $ch = GCH(strord($url));
    $ch = NewGCH($ch);
    $url = str_replace("_", "%5F", 'info:' . urlencode($_url));
    $googlePRUrl = "http://64.233.161.104/search?client=navclient-auto&ch=6" . $ch . "&ie=UTF-8&oe=UTF-8&features=Rank&q=" . $url;
    $pr_str = retrieveURLContent($googlePRUrl, $gettype);
    return intval(substr($pr_str, strrpos($pr_str, ":") + 1));
}
//unsigned shift right
function zeroFill($a, $b) {
    $z = hexdec('8' . implode('', array_fill(0, PHP_INT_SIZE * 2 - 1, '0')));
    if ($z & $a) {
        $a = ($a >> 1);
        $a&= (~$z);
        $a|= hexdec('4' . implode('', array_fill(0, PHP_INT_SIZE * 2 - 1, '0')));
        $a = ($a >> ($b - 1));
    } else {
        $a = ($a >> $b);
    }
    return $a;
}
// discard bits beyonds 32 bit.
function trunkbitForce32bit($n) {
    if (PHP_INT_SIZE <= 4) {
        settype($n, 'float');
        if ($n < 0) $n+= 4294967296;
        return $n;
    } else {
        $clearbit = '';
        for ($i = 0; $i < PHP_INT_SIZE - 4; $i++) {
            $clearbit.= '00';
        }
        for ($i = 0; $i < 4; $i++) {
            $clearbit.= 'ff';
        }
        return ($n & hexdec($clearbit));
    }
}
function bigxor($m, $n) {
    //if(function_exists('gmp_init')){
    //  return floatval(gmp_strval(gmp_xor($m,$n)));
    //}
    //else{
    return $m ^ $n;
    //}
    
}
function mix($a, $b, $c) {
    $a = trunkbitForce32bit($a);
    $b = trunkbitForce32bit($b);
    $c = trunkbitForce32bit($c);
    $a-= $b;
    $a = trunkbitForce32bit($a);
    $a-= $c;
    $a = trunkbitForce32bit($a);
    $a = bigxor($a, (zeroFill($c, 13)));
    $a = trunkbitForce32bit($a);
    $b-= $c;
    $b = trunkbitForce32bit($b);
    $b-= $a;
    $b = trunkbitForce32bit($b);
    $b = bigxor($b, trunkbitForce32bit($a << 8));
    $b = trunkbitForce32bit($b);
    $c-= $a;
    $c = trunkbitForce32bit($c);
    $c-= $b;
    $c = trunkbitForce32bit($c);
    $c = bigxor($c, (zeroFill($b, 13)));
    $c = trunkbitForce32bit($c);
    $a-= $b;
    $a = trunkbitForce32bit($a);
    $a-= $c;
    $a = trunkbitForce32bit($a);
    $a = bigxor($a, (zeroFill($c, 12)));
    $a = trunkbitForce32bit($a);
    $b-= $c;
    $b = trunkbitForce32bit($b);
    $b-= $a;
    $b = trunkbitForce32bit($b);
    $b = bigxor($b, trunkbitForce32bit($a << 16));
    $c-= $a;
    $c = trunkbitForce32bit($c);
    $c-= $b;
    $c = trunkbitForce32bit($c);
    $c = bigxor($c, (zeroFill($b, 5)));
    $c = trunkbitForce32bit($c);
    $a-= $b;
    $a = trunkbitForce32bit($a);
    $a-= $c;
    $a = trunkbitForce32bit($a);
    $a = bigxor($a, (zeroFill($c, 3)));
    $a = trunkbitForce32bit($a);
    $b-= $c;
    $b = trunkbitForce32bit($b);
    $b-= $a;
    $b = trunkbitForce32bit($b);
    $b = bigxor($b, trunkbitForce32bit($a << 10));
    $c-= $a;
    $c = trunkbitForce32bit($c);
    $c-= $b;
    $c = trunkbitForce32bit($c);
    $c = bigxor($c, (zeroFill($b, 15)));
    $c = trunkbitForce32bit($c);
    return array(
        $a,
        $b,
        $c
    );
}
function NewGCH($ch) {
    $ch = (trunkbitForce32bit(($ch / 7) << 2) | ((myfmod($ch, 13)) & 7));
    $prbuf = array();
    $prbuf[0] = $ch;
    for ($i = 1; $i < 20; $i++) {
        $prbuf[$i] = $prbuf[$i - 1] - 9;
    }
    $ch = GCH(c32to8bit($prbuf));
    return $ch;
}
function myfmod($x, $y) {
    $i = floor($x / $y);
    return ($x - $i * $y);
}
function c32to8bit($arr32) {
    $arr8 = array();
    for ($i = 0; $i < count($arr32); $i++) {
        for ($bitOrder = $i * 4; $bitOrder <= $i * 4 + 3; $bitOrder++) {
            $arr8[$bitOrder] = $arr32[$i] & 255;
            $arr32[$i] = zeroFill($arr32[$i], 8);
        }
    }
    return $arr8;
}
function GCH($url, $length = null) {
    if (is_null($length)) {
        $length = sizeof($url);
    }
    $init = 0xE6359A60;
    $a = 0x9E3779B9;
    $b = 0x9E3779B9;
    $c = 0xE6359A60;
    $k = 0;
    $len = $length;
    $mixo = array();
    while ($len >= 12) {
        $a+= ($url[$k + 0] + trunkbitForce32bit($url[$k + 1] << 8) + trunkbitForce32bit($url[$k + 2] << 16) + trunkbitForce32bit($url[$k + 3] << 24));
        $b+= ($url[$k + 4] + trunkbitForce32bit($url[$k + 5] << 8) + trunkbitForce32bit($url[$k + 6] << 16) + trunkbitForce32bit($url[$k + 7] << 24));
        $c+= ($url[$k + 8] + trunkbitForce32bit($url[$k + 9] << 8) + trunkbitForce32bit($url[$k + 10] << 16) + trunkbitForce32bit($url[$k + 11] << 24));
        $mixo = mix($a, $b, $c);
        $a = $mixo[0];
        $b = $mixo[1];
        $c = $mixo[2];
        $k+= 12;
        $len-= 12;
    }
    $c+= $length;
    switch ($len) {
        case 11:
            $c+= trunkbitForce32bit($url[$k + 10] << 24);
        case 10:
            $c+= trunkbitForce32bit($url[$k + 9] << 16);
        case 9:
            $c+= trunkbitForce32bit($url[$k + 8] << 8);
        case 8:
            $b+= trunkbitForce32bit($url[$k + 7] << 24);
        case 7:
            $b+= trunkbitForce32bit($url[$k + 6] << 16);
        case 6:
            $b+= trunkbitForce32bit($url[$k + 5] << 8);
        case 5:
            $b+= trunkbitForce32bit($url[$k + 4]);
        case 4:
            $a+= trunkbitForce32bit($url[$k + 3] << 24);
        case 3:
            $a+= trunkbitForce32bit($url[$k + 2] << 16);
        case 2:
            $a+= trunkbitForce32bit($url[$k + 1] << 8);
        case 1:
            $a+= trunkbitForce32bit($url[$k + 0]);
    }
    $mixo = mix($a, $b, $c);
    $mixo[2] = trunkbitForce32bit($mixo[2]);
    if ($mixo[2] < 0) {
        return (hexdec('1' . implode('', array_fill(0, PHP_INT_SIZE * 2, '0'))) + $mixo[2]);
    } else {
        return $mixo[2];
    }
}
// converts a string into an array of integers
// containing the numeric value of the char
function strord($string) {
    for ($i = 0; $i < strlen($string); $i++) {
        $result[$i] = ord($string{$i});
    }
    return $result;
}
function retrieveURLContent($url, $gettype) {
    switch ($gettype) {
        case G_PR_GET_TYPE_FILE:
            return retrieveURLContentByFile($url);
            break;
        default:
            return retrieveURLContentBySocket($url);
            break;
    }
}
function retrieveURLContentByFile($url) {
    $fd = @fopen($url, "r");
    if (!$fd) {
        return false;
    }
    $result = "";
    while ($buffer = fgets($fd, 4096)) {
        $result.= $buffer;
    }
    fclose($fd);
    return $result;
}
function retrieveURLContentBySocket($url, $host = "", $port = 80, $timeout = 30) {
    if ($host == "") {
        if (!($pos = strpos($url, '://'))) {
            return false;
        }
        $host = substr($url, $pos + 3, strpos($url, '/', $pos + 3) - $pos - 3);
        $uri = substr($url, strpos($url, '/', $pos + 3));
    } else {
        $uri = $url;
    }
    $request = "GET " . $uri . " HTTP/1.0rn" . "Host: " . $host . "rn" . "Accept: */*rn" . "User-Agent: ZealGetrn" . "rn";
    $sHnd = @fsockopen($host, $port, $errno, $errstr, $timeout);
    if (!$sHnd) {
        return false;
    }
    @fputs($sHnd, $request);
    // Get source
    $result = "";
    while (!feof($sHnd)) {
        $result.= fgets($sHnd, 4096);
    }
    fclose($sHnd);
    $headerend = strpos($result, "rnrn");
    if (is_bool($headerend)) {
        return $result;
    } else {
        return substr($result, $headerend + 4);
    }
}

可以查询你网站的pr值并且还可以调用pr在你网站显示哦。


教程地址:http://www.phprm.com/code/e947d67b0dbf6168b3804e1adbceeb56.html

欢迎转载!但请带上文章地址^^

标签:none

发表留言