A
download pagerank.php
Language: PHP
License: GPL
Copyright: copyright 2004-2005 NetCreated, Inc. (http://www.netcreated.com/)
LOC: 106
Project Info
NukeEvent - Event Portal System(nukeevent)
Server: Savannah NonGNU
Type: cvs
...t\nukeevent\modules\webdir\
   config.inc.dist
   index.php
   pagerank.php
   webdir_admin.php
   webdir_category.php
   webdir_functions.php
   webdir_index.php
   webdir_latestlinks.php
   webdir_setup.php
   webdir_submit.php
   webdir_tophits.php

<?php 
/**
 * Project:     PHPLinkDirectory: Link exchange directory
 *
 * License: GNU GPL (http://www.opensource.org/licenses/gpl-license.html)
 * 
 * This program is free software;
 * 
 * you can redistribute it and/or modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2 of the License,
 * or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License along with this program;
 * if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 *
 * For questions, help, comments, discussion, etc., please join the
 * PHP Link Directory Forum http://www.phplinkdirectory.com/forum/

 *
 * @link http://www.phplinkdirectory.com/
 * @copyright 2004-2005 NetCreated, Inc. (http://www.netcreated.com/)
 * @projectManager David DuVal <david@david-duval.com>
 * @author Bogdan Dumitru <dcb@insomniacsoft.com>
 * @package PHPLinkDirectory
 * @version 2.0.0 RC3
 **/


/* 
        Written and contributed by 
        Alex Stapleton, 
        Andy Doctorow, 
        Tarakan, 
        Bill Zeller, 
        Vijay "Cyberax" Bhatter 
        traB 
    This code is released into the public domain 
*/ 
define('GOOGLE_MAGIC', 0xE6359A60); 
define('URL_RESPONSE', 0);
define('URL_HEADERS', 1);
define('URL_CONTENT', 2);
function get_url($url, $what = 0, $referer = "", $cookies = array (), $useragent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)") {
	static $redirect_count = 0;
	$ret = array ();
	$ret['status'] = false;
	$timeout = 10;
	$urlArray = parse_url($url);
	if (!isset($urlArray['port'])) {
		if ($urlArray['scheme'] == 'http') {
			$urlArray['port'] = 80;
		}
		elseif ($urlArray['scheme'] == 'https') {
			$urlArray['port'] = 443;
		}
		elseif ($urlArray['scheme'] == 'ftp') {
			$urlArray['port'] = 21;
		}
	}
	if (!$urlArray['path']) {
		$urlArray['path'] = '/';
	}
	$errno = "";
	$errstr = "";
	$fp = @fsockopen($urlArray['host'].'.', $urlArray['port'], $errno, $errstr, $timeout);
	if ($fp) {
		$request = "GET {$urlArray['path']}";
		if (!empty ($urlArray['path'])) {
			$request .= "?".$urlArray['query'];
		}
		$request .= " HTTP/1.1\r\n".
			"Host: {$urlArray['host']}\r\n".
					"User-Agent: $useragent\r\n";
		if (!empty ($referer)) {
			$request .= "Referer: $referer\r\n";
		}
		$request .= "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,video/x-mng,image/png,image/jpeg,image/gif;q=0.2,text/css,*/*;q=0.1\r\n"."Accept-Language: en-us, en;q=0.50\r\n".
		#"Accept-Encoding: gzip, deflate, compress;q=0.9\r\n".
		//"Accept-Charset: ISO-8859-1, utf-8;q=0.66, *;q=0.66\r\n".
		#"Keep-Alive: 300\r\n".
		"Connection: close\r\n"."Cache-Control: max-age=0\r\n";
		foreach ($cookies as $k => $v) {
			$request .= "Cookie: $k=$v\r\n";
		}
		$request .= "\r\n";
		fputs($fp, $request);
		$ret['response'] = fgets($fp);
		if (preg_match("`HTTP/1\.. (.*) (.*)`U", $ret['response'], $parts)) {
			$ret['status'] = $parts[1][0] == '2' || $parts[1][0] == '3';
			$ret['code'] = $parts[1];
			if ($what == URL_RESPONSE || !$ret['status']) {
				fclose($fp);
				return $ret;
			}
			$ret['headers'] = array ();
			$ret['cookies'] = array ();
			while (!feof($fp)) {
				$header = fgets($fp, 2048);
				if ($header == "\r\n" || $header == "\n" || $header == "\n\l")
					break;
				list ($key, $value) = split(':', $header, 2);
				if (trim($key) == 'Set-Cookie') {
					$value = trim($value);
					$p1 = strpos($value, '=');
					$p2 = strpos($value, ';');
					$key = substr($value, 0, $p1);
					$val = substr($value, $p1 +1, $p2 - $p1 -1);
					$ret['cookies'][$key] = $val;
				} else {
					$ret['headers'][trim($key)] = trim($value);
				}
			}
			if (($ret['code'] == '301' || $ret['code'] == '302') && !empty ($ret['headers']['Location']) && $redirect_count < 20) {
				$redirect_count ++;
				fclose($fp);
				if (strpos($ret['headers']['Location'], 'http://') === 0 || strpos($ret['headers']['Location'], 'http://')) {
					$redir_url = $ret['headers']['Location'];
				}
				elseif (strpos($ret['headers']['Location'], '/') === 0) {
					$redir_url = $urlArray['scheme']."://".$urlArray[host].$ret['headers']['Location'];
				} else {
					$redir_url = $urlArray['scheme']."://".$urlArray[host].$urlArray[path].$ret['headers']['Location'];
				}
				return get_url($redir_url, $what, $url, $ret['cookies']);
			}
			$redirect_count = 0;
			if ($what == URL_HEADERS) {
				fclose($fp);
				return $ret;
			}
			$chunked = isset($ret['headers']['Transfer-Encoding']) && ('chunked' == $ret['headers']['Transfer-Encoding']);
			$ret['content'] = '';
			while (!feof($fp)) {
				$data = '';
				if($chunked){
					$line = fgets($fp, 128);
					if(preg_match('/^([0-9a-f]+)/i', $line, $matches)){
						$len = hexdec($matches[1]);
						if(0 == $len){
							while(!feof($fp))
								fread($fp, 4096);
						}else{
							$data = fread($fp, $len);
						}
					}
				}else{
					$data = fread($fp, 4096);
				}
				$ret['content'] .= $data;
			}
		} else {
			$errstr = "Bad Communication";
		}
		fclose($fp);
	} else { // Occurs when if ($fp) returns false
	}
	$ret['error'] = $errstr;
	return $ret;

}
//unsigned shift right 
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; 
} 


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)              /* all the case statements fall through */ 
    { 
        case 11: $c+=($url[$k+10]<<24); 
        case 10: $c+=($url[$k+9]<<16); 
        case 9 : $c+=($url[$k+8]<<8); 
          /* the first byte of c is reserved for the length */ 
        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]); 
         /* case 0: nothing left to add */ 
    } 
    $mix = mix($a,$b,$c); 
    /*-------------------------------------------- report the result */ 
    return $mix[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; 
} 


// converts an array of 32 bit integers into an array with 8 bit values. Equivalent to (BYTE *)arr32 

function c32to8bit($arr32) { 
    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 GoogleCHNew($ch){
	$ch=sprintf("%u", $ch); 
	$ch = ((($ch/7) << 2) | (((int)fmod($ch,13))&7)); 
	$prbuf = array(); 
	$prbuf[0] = $ch; 
	for($i = 1; $i < 20; $i++) { 
      $prbuf[$i] = $prbuf[$i-1]-9; 
	} 
	$ch = GoogleCH(c32to8bit($prbuf), 80); 
	return sprintf("%u", $ch);
}

function get_page_rank($url){
	$url = preg_replace('/\?.*$/','?',$url);
	$reqgr = "info:".$url;
    $reqgre = "info:".urlencode($url);
    $gch = GoogleCH(strord($reqgr));
    $gch = "6".GoogleCHNew($gch);
    $querystring = "http://toolbarqueries.google.com/search?client=navclient-auto&ch=".$gch."&ie=UTF-8&oe=UTF-8&features=Rank:FVN&q=".$reqgre;
    $patern = '/^http:/';
    $patern2 = '/^http:\/\/.*google\..*\/(search|images|groups|news).*/';
    $patern3 = '/^http:\/\/localhost.*/';
    $patern4 = '/^http:\/\/(127\.|10\.|172\.16|192\.168).*/'; //local ip
    if(!preg_match($patern, $url) || preg_match($patern2, $url) ||
       preg_match($patern3, $url) || preg_match($patern4, $url)){
       	return -1;
    }else{
    	//$ch = curl_init($querystring);
    	//curl_setopt($ch, CURLOPT_URL, $querystring);
    	//curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; GoogleToolbar 2.0.114-big; Windows XP 5.1)");
    	//curl_exec($ch);
    	
    	$res = get_url($querystring, URL_CONTENT, "", array(), "Mozilla/4.0 (compatible; GoogleToolbar 2.0.114-big; Windows XP 5.1)");
    	if(preg_match('/Rank_.*?:.*?:(\d+)/i', $res['content'], $m)){
    		return $m[1];
    	}else{
    		return -1;
    	}
    	
    }
} 
?>

About Koders | Resources | Downloads | Support | Black Duck | Terms of Service | DMCA | Privacy Policy | Contact Us