Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Banowanie IP
Forum PHP.pl > Forum > Przedszkole
Lirdoner
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?
webdice
file, in_array
Kshyhoo
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ę.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.