Clases para personalizar Pagerank en tu sitio web

  • Autor Autor heyfranks
  • Fecha de inicio Fecha de inicio
H

heyfranks

Gamma
Programador
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Mirando sitios de algunos me he percatado que utilizan servicios externos para mostrar su pagerank y por si a alguien le interesa aquí tienen una clases para ponerlo en su sitio.

pagerank.php
PHP:
<?php
class pr
{
	protected $url = '';
	protected $method = '';
	protected $width = '';
	public function __construct($url,$method,$width)
	{
		$this->url = $url;
		$this->method = $method;
		$this->width = $width;
	}	
	public function pagerank() 
	{
		if (!preg_match('/^(http:\/\/)?([^\/]+)/i', $this->url)) { $this->url='http://'.$this->url;}
		$page_rank = $this->getPageRank();		
		$pagerank = "PageRank : $page_rank/10";

		 if($this->method == "css") {		
				$prpercent = 100 * $page_rank / 10;
				$html='Dirección: '.$this->url.'<br><br><a href="javascript: void(0)" title="'.$pagerank.'"><div style="position: relative; width: '.$this->width.'px; padding: 0; background: #D9D9D9;"><strong style="width: '.$prpercent.'%; display: block; position: relative; background: #5EAA5E; text-align: center; color: #333; height: 40px; line-height: 40px;"><span></span></strong></div></a><p>' .$pagerank.'</p>';
				return $html;
		}
	}	
	public function getPageRank() 
	{
		$ch = $this->getCheckSum();
		$google_toolbar = 'toolbarqueries.google.com';
		$referrer = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.6) Gecko/20060728 Firefox/1.5';
		$fp = fsockopen($google_toolbar, 80, $errno, $errstr, 30);
		if ($fp) {
		   $out = "GET /tbr?client=navclient-auto&ch=$ch&features=Rank&q=info:$this->url HTTP/1.1\r\n";
		   $out .= "User-Agent: $referrer\r\n";
		   $out .= "Host: $google_toolbar\r\n";
		   $out .= "Connection: Close\r\n\r\n";
		
		   fwrite($fp, $out);
		   
		   while (!feof($fp)) {
				$data = fgets($fp, 128);
				$pos = strpos($data, "Rank_");
				if($pos === false){} else{
					$pr=substr($data, $pos + 9);
					$pr=trim($pr);
					$pr=str_replace("\n",'',$pr);
					return $pr;
				}
		   }
		   fclose($fp);
		}
	}	
	public function getCheckSum()
	{
		$hash = $this->hashURL();
		return $this->checkHash($hash);
	}
		
	public 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));
				$Check = ($Check < -2147483648) ? ($Check + $Int32Unit) : $Check;
			}
			$Check += ord($Str{$i}); 
		}
		return $Check;
	}
	function hashURL() {
		$Check1 = $this->StrToNum($this->url, 0x1505, 0x21);
		$Check2 = $this->StrToNum($this->url, 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);
	}
	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;
	}
}
?>

index.php

PHP:
<?php 
	include_once("pagerank.php");	
	$url = "http://www.google.com";
	$width = "400";
	$method = "css"; 
	$obj = new pr($url,$method,$width);
	echo "<p>".$obj->pagerank()."</p>";	
?>

Para cambiar el estilo solo deben modificar el metodo del objeto o simplemente modificar las lineas

PHP:
 if($this->method == "css") {		
				$prpercent = 100 * $page_rank / 10;
				$html='Dirección: '.$this->url.'<br><br><a href="javascript: void(0)" title="'.$pagerank.'"><div style="position: relative; width: '.$this->width.'px; padding: 0; background: #D9D9D9;"><strong style="width: '.$prpercent.'%; display: block; position: relative; background: #5EAA5E; text-align: center; color: #333; height: 40px; line-height: 40px;"><span></span></strong></div></a><p>' .$pagerank.'</p>';
				return $html;
		}

línea 19 del archivo pagerank.php

Ahora bien... también pueden crear un formulario y meterle el $url por método post o get por si quieres hacer un sitio para revisarlo...

Enlace eliminado

Como mencione, le cambian el estilo y ya (lo importante es la funcionalidad propia)
Saludos
 
Última edición:
Gracias, me ha servido :encouragement:
 
Muy bueno, diseñare un form para insertar web y averiguar su PR
 
Atrás
Arriba