Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Ban IP (dostep tylko dla Polski)
ewelinac18
post
Post #1





Grupa: Zarejestrowani
Postów: 99
Pomógł: 0
Dołączył: 11.07.2007

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


Witam jak zrobić Ban IP tak aby użytkownicy TYLKO z Polski mogli odwiedzać daną strone?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
atomek4
post
Post #2





Grupa: Zarejestrowani
Postów: 179
Pomógł: 1
Dołączył: 8.03.2007
Skąd: Łódź

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


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!

Ten post edytował atomek4 22.09.2007, 23:57:02
Go to the top of the page
+Quote Post
ewelinac18
post
Post #3





Grupa: Zarejestrowani
Postów: 99
Pomógł: 0
Dołączył: 11.07.2007

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


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. ?>
Go to the top of the page
+Quote Post
Prph
post
Post #4





Grupa: Zarejestrowani
Postów: 338
Pomógł: 2
Dołączył: 4.03.2006
Skąd: Łódź

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


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.

Ten post edytował Prph 23.09.2007, 07:42:18
Go to the top of the page
+Quote Post
atomek4
post
Post #5





Grupa: Zarejestrowani
Postów: 179
Pomógł: 1
Dołączył: 8.03.2007
Skąd: Łódź

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


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.
Go to the top of the page
+Quote Post
bmL
post
Post #6





Grupa: Zarejestrowani
Postów: 301
Pomógł: 25
Dołączył: 15.07.2007
Skąd: Olsztyn

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


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...


--------------------
Tutaj miał być jakiś mądry tekst. Miał być... No ale jest głupi tekst.
Go to the top of the page
+Quote Post
tadeoooo
post
Post #7





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 8.02.2010
Skąd: Bruksela

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


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ę.


--------------------
DJ WitB
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 Aktualny czas: 19.08.2025 - 17:57