Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Banowanie z "maskami" ? i *, Funkcja, PHP 4 i 5
hwao
post
Post #1


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




Na dole podalem przyklad pelnego sprawdzonego uzycia z banami w pliku txt
Niezmiernie sie nudzilem :-) wiec napisalem cos takiego moze komus sie przyda :-P
Co prawda nie ma cache itp (banow na hosty) ale powino wystarczyc dla mniej wymagajacych ;-) (zawsze mozna rozbudowac)

  1. <?php
  2.  function ban( $arrList, $ip ) {
  3. if( in_array( $ip, $arrList ) ) {
  4.  // Ma bana
  5.  return TRUE;
  6. }
  7.  
  8. // Jezeli dane jedziesz z pliku to proponuje dopisac do tej tablicy jeszcze
  9. // \"n\" => '', \"r\" => ''
  10. // :-)
  11.  
  12. $replace = array( '*' => '([0-9]{1,3})', '?' => '([0-9]{1})', '.' => '.' );
  13.  
  14. foreach( $arrList AS $key => $value ) {
  15. if( preg_match( '#^'.strtr( $value, $replace ).'$#', $ip ) ) {
  16.  return TRUE;
  17. }
  18.  
  19. }
  20.  
  21. return FALSE; 
  22.  }
  23. ?>

To cala funkcja nastepnie...


Proste uzycie
  1. <?php
  2.  $array = array(
  3. '10.1.1.1',
  4. '*.212.0.1',
  5. '1?2.3.4.2',
  6. '*.1?2.3.*'
  7.  );
  8.  
  9.  $ip = '10.1.1.1';
  10.  //$ip = $_SERVER['REMOTE_ADDR'];
  11.  
  12.  if( ban( $array, $ip ) ) {
  13. echo 'Zbanowany';
  14.  }
  15.  else {
  16. echo 'NieBan';
  17.  }
  18. ?>


a to chyba najbardziej wygodne
  1. <?php
  2.  if( !ban( file( 'plik.bany.txt' ), $_SERVER['REMOTE_ADDR'] ) ) {
  3. die( 'Aaa... Twoje ip jest zbanowane...' );
  4.  }
  5. ?>


Chyba glowny plus to maski wiec dzialaja one tak
* dowolna liczba z zakresu 0-255 czyli np 10.0.0.*
Banuje
10.1.1.0
10.1.1.1
...
10.1.1.255

? dowolna liczba z zarkesu od 9-0 czyli
10.?.0.0
Banuje
10.1.0.0
10.2.0.0
10.3.0.0
...
10.9.0.0
Ale juz nie
10.10.0.0 :-) (jakby bylo zamias ? * to by byl ban)
Mozna oczywsice z ? kozystac w polaczeniu np
10.12?.1.1
Banuje
10.120.1.1
10.121.1.1
...
10.129.1.1

Jak i laczyc wszytko np
*.23?.*.*
Go to the top of the page
+Quote Post

Posty w temacie


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 - 01:51