Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Banowanie IP
terreska
post
Post #1





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 23.07.2006

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


Mam taki kod, co należy zrobić żeby można było banować kilka adresów IP, a nie tylko 1? Bardzo proszę o pomoc.

  1. <?php
  2. $userip = $HTTP_SERVER_VARS['REMOTE_ADDR']; 
  3. $banip = "11.11.11.11"; 
  4. if ($userip==$banip) 
  5. { 
  6. echo 'Twoje IP zostało zablokowane'; 
  7. exit; 
  8. }
  9. ?>
Go to the top of the page
+Quote Post
kriqs
post
Post #2





Grupa: Zarejestrowani
Postów: 148
Pomógł: 0
Dołączył: 31.05.2006

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


  1. <?php
  2. $userip = $_SERVER['REMOTE_ADDR']; 
  3. $banip =array('11.11.11.11','27.27.27.27'); 
  4.  
  5. foreach( $banip as $ip )
  6. {
  7. if ($userip==$ip) 
  8. { 
  9. echo 'Twoje IP zostało zablokowane'; 
  10. exit; 
  11. }
  12. }
  13. ?>


moze nie dzialac smile.gif z pamieci napisalem to smile.gif.

pozdrawiam

ps.
odpowiedz na twoje pytanie to : "przerobic skrypt" smile.gif


--------------------
Pozdrawiam
kriqs

mam nadzieje ze pomoglem :)
Go to the top of the page
+Quote Post
wipo
post
Post #3





Grupa: Zarejestrowani
Postów: 856
Pomógł: 19
Dołączył: 30.08.2005
Skąd: 100lica

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


Zrób tablicę ban_ip=array('127.0.0.1','192.168.1.1'); itd....
a potem sprawdzaj
if (in_array($userip,$ip) ){
//jest w tablicy czyli zabanowany
} else {
//nie ma go w tablicy
}


--------------------
Go to the top of the page
+Quote Post
terreska
post
Post #4





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 23.07.2006

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


Dziękuję snitch.gif
Mam teraz tak:

  1. <?php
  2. $userip = $HTTP_SERVER_VARS['REMOTE_ADDR']; 
  3. $banip=array('11.11.11.11', '123.132.123');
  4. if (in_array($userip,$banip))
  5. { 
  6. echo 'Twoje IP zostało zablokowane'; 
  7. exit; 
  8. }
  9. ?>


Działa smile.gif

A teraz kolejna rzecz...
Jak zrobić, aby adresy ip były pobierane z pliku lub z bazy danych?

Ten post edytował terreska 13.01.2007, 12:13:29
Go to the top of the page
+Quote Post
wipo
post
Post #5





Grupa: Zarejestrowani
Postów: 856
Pomógł: 19
Dołączył: 30.08.2005
Skąd: 100lica

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


A zrób tak jak napisałem. Będzie o wiele szybciej i będzie mniej kodu


--------------------
Go to the top of the page
+Quote Post
terreska
post
Post #6





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 23.07.2006

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


Już właśnie tak zrobiłam snitch.gif i liczę na dalszą pomoc smile.gif
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #7





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Plik ipeki.txt (każdy IP w oddzielnej lini)
Kod
213.432.43.212
243.42.324.21
23.445.12.34


Zmiany w kodzie to
  1. <?php
  2. //zamiana
  3. $banip=array('11.11.11.11', '123.132.123');
  4. //na
  5. $banip=file("ipeki.txt");
  6. ?>


Pozdrawiam.


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
terreska
post
Post #8





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 23.07.2006

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


Ta sama zmiana chyba nie wystarczy.
Co jeszcze oprócz tego zmienić?
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #9





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Owszem, wystarczy, chyba, że inne rzeczy zepsułaś : ) (do funkcji file() musisz podać nazwę pliku razem ze ścieżką)

Pozdrawiam.


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
terreska
post
Post #10





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 23.07.2006

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


A co z tym:
  1. <?php
  2. if (in_array($userip,$banip))
  3. ?>

?

... no bo mi nie działa, tzn. żaden błąd nie wyskakuje, ale i nie banuje.
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #11





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Tzn jak nie banuje?
Zamiast HTTP_SERVER_VARS uzywaj $_SERVER["REMOTE_ADDR"];.
Zresztą - odrobina samodzielności nie zawadzi prawda?

Pozdrawiam.


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
terreska
post
Post #12





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 23.07.2006

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


No nie banuje, jak może banować jak tutaj:
if (in_array($userip,$banip))
sprawdza się tablice a nie plik...?
Go to the top of the page
+Quote Post
Sabistik
post
Post #13


Administrator wortalu


Grupa: Przyjaciele php.pl
Postów: 960
Pomógł: 39
Dołączył: 21.10.2003
Skąd: Kraków

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


Zacznij używać manuala bo ta rozmowa do niczego nie prowadzi. Zobacz co zwraca file()" title="Zobacz w manualu php" target="_manual
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #14





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




questionmark.gif? Poczytaj sobie o funkcji file()


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
terreska
post
Post #15





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 23.07.2006

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


No ok, sory, ale zrobiłam wszystko tak jak napisaliście i nic... ani komunikatu o błędzie ani bana.
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #16





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Problem leży w tzw. whitespaces.
Normalnie należy przeiterować całą tablicę i usunąć białe znaki za pomocą funkcji rtrim(). Jednak można tez "na lewo" - dodać znak końca lini.
  1. <?php
  2. if (in_array($userip."n", $banip)) {
  3. ?>


Pozdrawiam.


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
terreska
post
Post #17





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 23.07.2006

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


Wielkie dzięki, działa smile.gif

Teraz jeszcze chciałabym dodać do tego to:
  1. <?php
  2. $replace = array( '*' => '([0-9]{1,3})', '?' => '([0-9]{1})', '.' => '.' );
  3. ?>


Tylko za bardzo nie wiem gdzie to wstawić i czy ta zmienna jest dobrze zadeklarowana w mojej sytuacji?
Go to the top of the page
+Quote Post
Sabistik
post
Post #18


Administrator wortalu


Grupa: Przyjaciele php.pl
Postów: 960
Pomógł: 39
Dołączył: 21.10.2003
Skąd: Kraków

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


Człowieku zastosuj lepiej jakieś gotowe rozwiązanie Temat: Banowanie z maskami i
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: 21.08.2025 - 11:02