Dziś jest poniedziałek, 13 października 2008 roku (z kalendarza...)

Blokowanie IP w stat.pl

Icon

17.04.2005, 11:36

Webmaster

Komentarze (0)

Powrót

Stat.pl oferuje trzy rodzaje znakomitego systemu statystyk. Dwa z nich są płatne, natomiast jeden, wykorzystywany na tej stronie - nie. Tradycyjnie wersja darmowa ma najmniej opcji, aczkolwiek do codziennych zastosowań najczęściej wystarcza. Przeszkadzać może jedna rzecz - brak blokowania niektórych adresów IP. Może to prowadzić do zafałszowania wyników, jeśli sami odwiedzamy naszą stronę dość często. W Dziennikach ominąłem jednak ten kłopot poprzez PHP.

Zakładając statystyki, dostajemy dwie rzeczy do umieszczenia na stronie. Pierwsza to button Stat.pl, a druga - kod zliczający wywołania. Cała sztuczka polega na tym, aby nie wysyłać go, gdy wchodzimy my, a wysyłać - gdy ktokolwiek inny. W ten oto sposób nasze odwiedziny nie zostaną zliczone. Jest jeden mały szkopuł... najlepiej jest mieć stały adres IP. Nie jest to niezbędny warunek, ale z pewnością najefektywniejszy. W pozostałych wypadkach możemy postąpić następująco:

  • Jeżeli zmianie ulega np. tylko ostatni człon adresu, napiszmy wyrażenie regularne, które zablokuje wyświetlanie statystyk, gdy pasować będą jedynie pierwsze trzy człony.
  • Sprawdźmy nazwę naszego serwera. W PHP możemy to zrobić funkcją gethostbyaddr(). Porównajmy, jakie nazwy zwraca nam przy kolejnych połączeniach z siecią. Często jest tak, że zmianie ulega tylko początek nazwy, natomiast cała reszta (identyfikująca sieć naszego providera) jest stała. I znowu możemy wyrażeniem regularnym sprawdzić (nie)zmienność pewnej tylko części nazwy, uzyskując blokowanie swych wejść.

Zacznijmy od napisania prostego skryptu PHP, który pobierze parametry naszych wejść na stronę. Może on wyglądać tak: code'REMOTE_ADDR'.'
'; echo gethostbyaddr($_SERVER'REMOTE_ADDR').'
'; ?>/code Uruchamiamy go w przeglądarce i spisujemy wyniki. Następnie bierzemy w obróbkę fragment właściwego skryptu wysyłającego kod statystyk. Umieszczamy tam instrukcję IF z warunkiem sprawdzającym IP/maskę. Przypominam, że adres IP, z którego nadchodzi do serwera WWW żądanie, przechowywany jest w zmiennej $_SERVER'REMOTE_ADDR'. Dla pewności, że wszystko działa, dodajemy warunek ELSE, który powiadomi nas, że wizyta nie jest liczona. Będziemy wtedy mogli własnoocznie przekonać się, że wszystko działa.

Jako ż najczęściej stronę przed wysłaniem w sieć testujemy na lokalnym serwerze, wypadałoby także zabezpieczyć przed niepotrzebnym zliczaniem lokalne adresy IP: 127.0.0.1 i 192.168.*.*. Zresztą stat.pl prawdopodobnie i tak tego nie zliczy (zły host), ale po co obciążać łącze zbędnymi żądaniami?

Powrót

Skomentuj

NickInformacja
E-mailTylko do użytku wewnętrznego.
WWWNie zapomnij o http://
LayoutNapisz tu, czy widzisz dzienny czy nocny layout.
WpisFormatowanie wiki
Internauto, pamiętaj! Wolność to nie samowola - dbaj o kulturę wypowiedzi oraz dyskusji w sieci.

Na Zyxist.com panuje swoboda wyrażania opinii oraz krytyki pod dowolnym adresem. Jedyny warunek: musi być ona kulturalna i rzeczowa. Na chamstwo, prostactwo lub jawne obrażanie kogokolwiek nie ma tu miejsca i takie komentarze są bardzo szybko usuwane. Jeśli zamierzasz polemizować z treścią wpisu, wpierw uważnie ją przeczytaj.

© Tomasz "Zyx" Jędrzejewski 2005 - 2008 | Wykonanych zapytań: 1 | Serwer wirtualny zapewnia