Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Ban IP (dostep tylko dla Polski)
Forum PHP.pl > Forum > Przedszkole
ewelinac18
Witam jak zrobić Ban IP tak aby użytkownicy TYLKO z Polski mogli odwiedzać daną strone?
atomek4
Cześć,

Można by to zrobić tak:
1) znaleźć zakres adresów IP dla Polski. Nie jest to takie łatwe, chociażby dlatego, że adresy zaczynają się w Polsce od różnych liczb. Udało mi się jednak znaleźć stronę udostępniającą listę adresów dla wszystkich krajów świata, link tutaj
2) IP użytkownika uzyskamy za pomocą
  1. <?php
  2. $_SERVER['REMOTE_ADDR']
  3. ?>

3) potem za pomocą odpowiedniego wyrażenia regularnego sprawdzać, czy IP użytkownika znajduje się w którymś z zakresów.

Jednak wydało mi się to dość skomplikowane. Znalazłem stronę http://www.geoiptool.com/ służącą do lokalizacji użytkownika za pomocą IP i postanowiłem ją wykorzystać.

Napisałem prosty skrypt:

  1. <?php
  2. $ip = $_SERVER['REMOTE_ADDR'];
  3. echo "Twoje IP: $ip <br/>";
  4. $data = file_get_contents('http://www.geoiptool.com/en/?IP='.$ip);
  5. if(strstr($data,'Poland')) echo 'POLSKIE IP';
  6. else echo "Inny kraj!";
  7. ?>


Nie jest to może optymalne w działaniu, ale wygląda na to, że działa. Spróbuj może Cię jakoś nakieruje. Oczywiście zawsze pozostaje temat proxy, ale to już chyba osobna sprawa.

Pozdrowienia!
ewelinac18
dzięki Ci bardzo zrobiłam to w taki sposób

nie wiem czy dobrze ale działa
  1. <?php
  2. $ip = $_SERVER['REMOTE_ADDR'];
  3. $data = file_get_contents('http://www.geoiptool.com/en/?IP='.$ip);
  4. $ziom = strstr($data,'Poland');
  5. $ziom2 = substr($ziom, 0, 6);
  6. $st = 'http://www.google.com';
  7.  
  8. if ( $ziom2 != 'Poland'){
  9. echo "<meta http-equiv=refresh content=0;url=http://www.google.com>";
  10. exit();
  11. }
  12. ?>
Prph
Mozesz niechcacy pozbawic dostepu osob takze z Polski... Do sprawdzanie zakresow IP uzyj http://pl.php.net/manual/en/function.ip2long.php - liczbe latwiej porownac, niz IP.

I sprawdzanie za kazdym razem odpada. Nawet nie masz pojecia, jak zwolni Ci to strone. Sprawdz, jezeli jest z Polski - utworz zesje i dlej nie sprawdzaj. Albo chociaz ciastko.
atomek4
Co do sesji, to na pewno dobry pomysł. Ja podałem tylko przykład jak można takie sprawdzenie zrobić. Ta strona korzysta bodajże z widgetu Google'a więc myślę, że jest bardziej wiarygodna niż jakieś podane zakresy. Nie oszukujmy się, nie ma 100% skutecznej metody, bo zawsze jest chociażby proxy.
bmL
A do ominięcia proxy:
  1. <?php
  2. if ($_SERVER['HTTP_X_FORWARDED_FOR'])
  3. $user_ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
  4. else
  5. $user_ip = $_SERVER['REMOTE_ADDR'];
  6. ?>

Chociaż też nie zawsze działa...
tadeoooo
A czy ktoś wie może jak zrobić żeby działało z phpbb by przemo? Próbowałem przez include ale wtedy mam białą stronę.
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.