Skocz do zawartości

nowy kod do zliczania PR


Rekomendowane odpowiedzi

Witam.

Od dłuższego już czasu mam zainstalowany katalog na skrypcie otwarty.mini i od samego początku mam problemy z wyświetlaniem poprawnej wartości PR, a właściwie z brakiem jej wyświetlania a co za tym idzie wszystkie strony w katalogu mają PR= -9.

Dostałem inny skrypt obliczający PR ale niestety nie wiem jak go "wsadzić" do katalogu aby zaczął poprawnie pokazywać wartość PR.

Oto kod:

    
   /*
     Google PageRank Checksum Algorithm (Toolbar V3.x/4.x) V1.3
     compatible with PHP 4.4.x/PHP 5.x, supported X86_64 CPU

     Author's webpage:
         [url="https://pagerank.gamesaga.net/"]https://pagerank.gamesaga.net/[/url]
     ChangeLog:
         2005-09-13  V0.1 first release
         2005-10-21  V1.1 fix a bug for the final character
         2006-09-21  V1.2 compatible with PHP 4.4/PHP 5.x
         2006-09-29  V1.3 X86_64 CPU supported
   */

   error_reporting(E_ALL);

   /*
   * convert a string to a 32-bit integer
   */
   function StrToNum($Str, $Check, $Magic)
   {
       $Int32Unit = 4294967296;  // 2^32

       $length = strlen($Str);
       for ($i = 0; $i < $length; $i++) {
           $Check *= $Magic;    
           //If the float is beyond the boundaries of integer (usually +/- 2.15e+9 = 2^31),
           //  the result of converting to integer is undefined
           //  refer to [url="https://www.php.net/manual/en/language.types.integer.php"]https://www.php.net/manual/en/language.types.integer.php[/url]
           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;
   }

   /*
   * Genearate a hash for a url
   */
   function HashURL($String)
   {
       $Check1 = StrToNum($String, 0x1505, 0x21);
       $Check2 = 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);
   }

   /*
   * genearate a checksum for the hash string
   */
   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;
   }



   if (isset($_GET['url'])) {
     $url = "https://www.google.com/search?client=navclient-auto&features=Rank:";
     $url .= "&q=info:{$_GET['url']}&ch=".CheckHash(HashURL($_GET['url']));
     $pr = @file_get_contents($url);
     $pr = (int) array_pop(explode(':', $pr));
     echo $pr;
   }

   ?>

Czy był by ktoś tak miły i wyjaśnił co i gdzie trzeba zmodyfikować. Był bym bardzo wdzięczny.

Darmowe pozycjonowanie dla każdego.

Zapraszam także na mój blog - wszystko o PSP

Odnośnik do komentarza
Udostępnij na innych stronach

Nie wiem jak Ci pomóc ale widzę, ze masz 4 linki w podpisie. A można miec tylko 3. Więc lepiej jeden usuń zanim zrobią to moderatorzy egzekutorzy :)

Program do nauki na uprawnienia budowlane i przygotowujący do egzaminu na uprawnienia budowlane.

Okulary przeciwsłoneczne polaryzacyjne oraz okulary antyrefleksyjne zerówki do pracy przy komputerze.

Największy wymarzony kamper barbie fbr34 firmy mattel.

Odnośnik do komentarza
Udostępnij na innych stronach

Nie znam się na katalogach, ale jeśli chodzi o ten skrypt to musisz go odpalić z parametrem, np. url=https://adres-strony.pl

Dzięki temu zostanie wypisana wartość PR. Jeśli chcesz go wstawić do katalogu, aby zawsze pokazywał PageRank każdej wypisywanej strony, to musisz wprowadzić pewne modyfikacje, a konkretnie, zamiast opcji $_GET['url'] dać wpis odpowiedzialny za wypisywanie rekordu z url'em strony, np.

Jeżeli katalog używa MySQL, a zmienna $url_strony wyświetla adres url to:

$url = "https://www.google.com/search?client=navclient-auto&features=Rank:";
 $url .= "&q=info:$url_strony&ch=".CheckHash(HashURL($url_strony));
 $pr = @file_get_contents($url);
 $pr = (int) array_pop(explode(':', $pr));
 echo 'PR=' .  $pr;

Instrukcję If(isset(...) ) - możesz pominąć...

Btw. dzięki za skrypt, takiego miałem niedługo szukać :)

Portal komputerowy

-
webmastering, biznes

Forum IT - informatyka, komputery, technologie

Odnośnik do komentarza
Udostępnij na innych stronach

A ja się nie znam na php więc jak możesz tak łopatologicznie wyjaśnić co i gdzie zmienić żeby to działało.....

A tu są pliki do edycji:

Plik z katalogu -> https://ioks.info/moje_pliki/home.php.txt

plik wyświetlający PR -> https://ioks.info/moje_pliki/pr.php.txt

Darmowe pozycjonowanie dla każdego.

Zapraszam także na mój blog - wszystko o PSP

Odnośnik do komentarza
Udostępnij na innych stronach

Po pierwsze, w pliku, który podałeś wyświetla się (o ile udało mi się zorientować) lista stron w danej kategorii. Niestety linki podawane są tam w formie pośredniej (nie ma adresu https://strona1.pl, tylko link wewnętrzny do katalogu, np. nazwapliku.php?id=cost&cost=cos) i masz np. coś takiego:

<a href=\"$pod_link\" class=\"in_link_home_sub\">$li_pod[nazwa]</a>, ";

Nie znam jednak tego skryptu, i nie wiem w jakiej kolumnie i tabeli (w bazie MySQL) znajduje się wpis odpowiedzialny za sam URL. Wywnioskowałem jedynie, że w pliku, który podałeś w ogóle nie ma takiej informacji.

W każdym razie.

Musisz inkludować plik z pr.php na górze pliku home.php poprzez include_once('pr.php');

Następnie w pliku pr.php masz takie coś:

if (isset($_GET['url'])) {
 $url = "https://www.google.com/search?client=navclient-auto&features=Rank:";
 $url .= "&q=info:{$_GET['url']}&ch=".CheckHash(HashURL($_GET['url']));
 $pr = @file_get_contents($url);
 $pr = (int) array_pop(explode(':', $pr));
 echo $pr;
}

Usuwasz z tego wpisu pierwszą i ostatnią linijkę. Następnie wycinasz to, co Ci pozostało i wklejasz w

miejsce wyświetlenia się danego wpisu, np. obok linku.

Portal komputerowy

-
webmastering, biznes

Forum IT - informatyka, komputery, technologie

Odnośnik do komentarza
Udostępnij na innych stronach

Niestety podany przez Ciebie sposób nie działa. Wywołanie pliku poprzez include_once('pr.php'); powoduje wysypanie się "krzeków" na stronie oraz dodatkowo wywala error o braku funkci CheckHash(); ..... już powoli zaczynam mieć tego dość.

A dane zapisują się w tebeli prefix_wpisy a dokładniej:

adres url w kolumnie url

dane o pr w kolumnie pr

Jeśli zajdzie potrzeba to moge dać dumpa tej tabeli.

PS: plik home.php odpowiada za wyświetlanie wpisów na pierwszej stronie katalogu. Podejrzewam że taka sama zasada jest stosowana w reszcie katalogu więc jak się uda zmodyfikować te parę linijek to i w reszcie plików pójdzie już łatwiej.

[edit]

problem rozwiązany. Wystarczyła tylko mała edycja oryginalnego kodu i wszystko działa.

Wystarczy zastąpić funkcję getrank tym:

<?php
function getrank ( $url ) {
 $content = file_get_contents('https://pagerank.4free.pl/pr.php?url=' . $url);
 @preg_match('#src="(https://pagerank.4free.pl/img/1/pr[0-9]+.png)"#', $content, $pr);
 if (is_numeric( $pr[1]{33} )) return $pr[1]{33};
 else return -1;
}
?>

albo jeszcze prościej:

<?php
function getrank ( $url ) {
 $pr = file_get_contents('https://pagerank.4free.pl/pr.php?url=' . $url);
 return $pr{95};
}
?>

Darmowe pozycjonowanie dla każdego.

Zapraszam także na mój blog - wszystko o PSP

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności