Показать сообщение отдельно

  #4  
Старый 19.02.2010, 17:31
Nosfer
Новичок
Регистрация: 10.01.2007
Сообщений: 16
С нами: 10174902

Репутация: 2
По умолчанию

Есть код определения ПР:

PHP код:
<?php 

error_reporting 
(E_ALL & ~E_NOTICE);
/** 
 * Google Page rank data grabber. 
 * Based on Google toolbar data. 
 *  
 * Working with data like that: 
 * "Rank_1:1:6". Without XML/HTML parsing. 
 *  
 * @important: 
 *  This code is for cognitive purposes only. 
 *  Usage of this code is against Google's terms of service. 
 *  No support is provided for this code. 
 *  Can be used "as is" for your own risk. 
 *  
 * @requirements: 
 *  - PHP version 5 (can easily be downgraded to PHP4) 
 *  - cURL library (but you can replace curl functions with 
 *  PHP standard fopen/fread or other) 
 *  
 * @version 1.1 
 * @author exstabler // PHP version 
 * @author snoopy    // JS version 
 *  
 * @changelog: 
 *  - 2007-01-18: 
 *  1. [exstabler] Deprecated method intToHex deleted. 
 *  2. [exstabler] Method toHex8 corrected. 
 *  
 * @sample usage: 
 *  $obj = new PageRankGrabber(); 
 *  $rank = $obj->getRank('http://dir.org.ru'); 
 */ 
class PageRankGrabber 
     
    
/** 
     * Returns PageRank for specified page 
     * @param string $url  
     * @return integer PageRank value 
     */ 
    
public function getRank($url) { 
        
$pageUrl $this->getRankUrlStingByPageUrl($url); 
        
$content $this->getContentCurl($pageUrl); 
        echo 
$pageUrl;
        
$parts   explode(":"$content); 
        return 
intval(@$parts[count($parts)-1]); 
    } 
     
    
/** 
     * Returns content by URL with using 
     * cURL library. 
     * 
     * @param string $url  
     * @return string Site content 
     */ 
    
public function getContentCurl($url) { 
       
$ch curl_init(); 
       
curl_setopt($chCURLOPT_URL$url); 
       
curl_setopt($chCURLOPT_HEADER0); 
       
curl_setopt($chCURLOPT_RETURNTRANSFER1); 
       
curl_setopt($chCURLOPT_FOLLOWLOCATION0); 
       
$result curl_exec($ch); 
       
curl_close($ch); 
       return 
$result;         
    } 
     
    
/** 
     * Returning URL where PR can be grabbed. 
     * 
     * @param string $page - Page URL 
     * @return string  
     */ 
    
public function getRankUrlStingByPageUrl($page) { 
        
$this->awesomeHash($page); 
        
$hash "8" $this->awesomeHash($page); 
        
$url  "http://toolbarqueries.google.com/search?sourceid=" 
                
"navclient-ff&features=Rank&client=navclient-auto-ff&"
        
$url .= "ch=" $hash "&q=info:" urlencode($page); 
        return 
str_replace(' '''$url);         
    } 
         
    
/** 
     * Transforms integer into hexademical 
     * 
     * @param int $num  
     * @return string  
     */ 
    
private function toHex8($num) { 
        
$vector "0123456789abcdef"
        return 
$vector[($num 256) / 16] . $vector[$num 16]; 
    } 
     
    
/** 
     * Service function: encoder 
     */ 
    
private function hexEncodeU32($num) { 
        
$result  $this->toHex8($this->zerofillShift($num24)); 
        
$result .= $this->toHex8($this->zerofillShift($num16) & 255); 
        
$result .= $this->toHex8($this->zerofillShift($num8) & 255); 
        return 
$result $this->toHex8($num 255); 
    } 
  
    
/** 
     * Service function: hashing 
     */ 
    
private function awesomeHash($value)  { 
  
        
$hashSeed "Mining PageRank is AGAINST GOOGLE'S TERMS OF SERVICE." 
                    
"Yes, I'm talking to you, scammer."
        
$intValue 16909125
        for(
$i 0$i strlen($value); $i++ ){ 
            
$intValue ^= 
                
$this->charCodeAt($hashSeed$i strlen($hashSeed)) ^ 
                
$this->charCodeAt($value$i); 
            
$intValue 
                
$this->zerofillShift($intValue,  23) | $intValue << 9
        } 
        return 
$this->hexEncodeU32($intValue); 
    } 
     
    
/** 
     * The charCodeAt() method returns the Unicode 
     * of the character at a specified position. 
     * 
     * @param int $value  
     */ 
    
private function charCodeAt($value$position) { 
        
$symbol $value[$position]; 
        
// ord() is for ASCII! 
        // Original function should work with UTF-8. 
        
return ord($symbol); 
    } 
  
    
/** 
     * Service function: zerofil with shifing 
     * (unsigned shift right). 
     */ 
    
private function zerofillShift($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
    }    



$obj = new PageRankGrabber(); 
$rank $obj->getRank('http://google.com');
echo 
" hello ".$rank."<br>";
phpinfo();
?>
Один и тот же код на разных серверах.

На всех серверах кроме одного выполняется корректно, хеш считает: http://toolbarqueries.google.com/search?sourceid=navclient-ff&features=Rank&client=navclient-auto-ff&ch=8183b0d79&q=info:http%3A%2F%2Fgoogle.com

А на нужном выдает ошибку:
Код:
PHP Notice: Uninitialized string offset: -1 in /var/www/html/prcheck/index3.php on line 89
и ничего не считает: http://toolbarqueries.google.com/search?sourceid=navclient-ff&features=Rank&client=navclient-auto-ff&ch=80ffffff&q=info:http%3A%2F%2Fgoogle.com

Уже несколько раз пересобирал пхп, включал-отключал модули. Хоть убейся не могу найти зависимость.
Огромная просьба помочь, может у кого есть идеи.
 
Ответить с цитированием