Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Banowanie IP
Lirdoner
post 24.12.2009, 11:22:37
Post #1





Grupa: Zarejestrowani
Postów: 500
Pomógł: 1
Dołączył: 29.09.2009

Ostrzeżenie: (0%)
-----


Witam, w jakis sposób mogę sprawdzić czy adres IP jest zbanowany

Np. w pliku index.php będzie plik includowany z adresami zbanowanymi i jaki później dać warunek?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
webdice
post 24.12.2009, 11:30:59
Post #2


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




file, in_array
Go to the top of the page
+Quote Post
Kshyhoo
post 24.12.2009, 11:32:40
Post #3





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Możesz zapisywać adresy w bazie lub pliku i sprawdzać:
  1. if (ereg("213.32.22.6",$_SERVER["REMOTE_ADDR"])) {exit;}
  2. if (ereg("213.32.22.7",$_SERVER["REMOTE_ADDR"])) {exit;}
  3. if (ereg("^211.32.",$_SERVER["REMOTE_ADDR"])) {exit;}

Zmienna $_SERVER["REMOTE_ADDR"] przechowuje numer IP osoby łączącej się, więc za pomocą funkcji ereg() wystarczy sprawdzić czy w numerze IP pobranym z $_SERVER["REMOTE_ADDR"] występuje IP wpisane przez Ciebie.

Jeżeli tak, wtedy wykonywane jest polecenie exit, co jest jednoznaczne z zakończeniem wyświetlania strony. Użytkownik w przeglądarce nic nie zobaczy, strona będzie pusta, bo reszta kodu strony się nie wyświetli. Przed exit możesz ewentualnie wpisać jakiś komunikat, który ukaże się blokowanemu człowiekowi...

Stosując wyrażenia regularne można definiować całe zakresy IP. Trzecia linijka zablokuje wszystkich, których numery zaczynają się od 211.32.

Jeżeli chcesz w ten sposób zabezpieczyć większą ilość stron, warto reguły wypisać do osobnego pliku, np. blokada.php i dołączyć ten plik na samym początku każdej strony stosując polecenie include:
  1. include("sciezka/blokada.php");

W ten sposób będzisz modyfikować tylko jeden plik, który dołączy się do wielu stron i zablokuje niepowołanmym osobom dostęp do stron.

Inny sposób to zapisanie numerów IP w pliku ip.txt (każdy numer w osobnej linii) i umieszczenie kodu na początku strony:
  1. $plik = file_get_contents("ip.txt");
  2. $ips = preg_split('/[\s,]+/', $plik, -1, PREG_SPLIT_NO_EMPTY);
  3. if ((in_array($_SERVER['REMOTE_ADDR'], $ips))) exit;

Dane z pliku zostaną rozbite do tablicy $ips, a warunek przetestuje, czy IP użytkownika znajduje się w tablicy. Jeżeli tak, skrypt zakończy pracę.


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 29.06.2025 - 17:28