Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Banowanie z "maskami" ? i *, Funkcja, PHP 4 i 5
hwao
post 16.03.2005, 20:10:42
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
Caw
post 30.03.2005, 10:45:46
Post #2





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 13.03.2005

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


CZY NIKT MI NIE PODPOWIE JAK SIE UMEISZCA TEN SKRYPT NA STRONIE WWW ? worriedsmiley.gif


Świetnie bo to jest to czego szukam tylko mam pytanie bo nie wiele wiem o php wiec czy moze ktoś pomóc i opisać czy ten kod wstawia sie w jakies pliki .txt a któro wstawia się do samego index.php dla was to jest trywialne dla mnie jednak nie tiredsmiley.gif

i czy ten skrypt blokuje ip na wszytskich przegladarkach tzn jak ktos wchodzi z IE czy z FireFoxa ? bo ja mialem taki co blokuje ale tylko pod firefoxa tiredsmiley.gif

Ten post edytował Caw 30.03.2005, 20:44:05
Go to the top of the page
+Quote Post
Dex1987
post 1.04.2005, 18:48:19
Post #3





Grupa: Zarejestrowani
Postów: 246
Pomógł: 0
Dołączył: 28.09.2004

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


Ad 1. poprostu wstawiasz na poczatku strony

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


Plik do ktorego to wstawiasz musi byc plikiem php, jak masz plik html to wstaw to na poaczatku strony i zmien rozszerzenie na np index.php. pozniej zrob plik block.php i wstaw tam kod

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


i potem w tablicy

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


Wpisujesz ip ktore chcesz banowac

Ten post edytował Dex1987 1.04.2005, 18:49:14
Go to the top of the page
+Quote Post
Caw
post 2.04.2005, 15:00:01
Post #4





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 13.03.2005

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


Sory ale to nie działa blink.gif pierwszy kod wstawiłem do pliku gora.php nad znaczinikem html tak jak poniżej:


Kod
<?php

include ("block.php");

  $array = array(
     '83.12.23.35',
  );
 
  $ip = '83.12.23.35';
  //$ip = $_SERVER['REMOTE_ADDR'];
 
  if( ban( $array, $ip ) ) {
     echo 'Zbanowany';
  }
  else {
     echo 'NieBan';
  }
?>

<HTML>
<HEAD>



moj index.php wygląda tak

Kod
<? include "gora.php" ?><? include "pliki/start.php" ?><? include "dol.php" ?>
<? include "prawa.php" ?>


plik góra.php to poczatek strony tam sa znaczniki <HTML><HEAD><BODY>

przykładowo wpisałem swoje IP aby sprawdzić czy banuje i co widze :| wchodze na strone a tam pojawia się tylko napis na samej gorze zbanowany :| a strona działa normlanie więc nie wiem o co chodzi.

Jak wstawiłem ten skrypt do pliku index.php to całkiem strona nie chciała się wyświetlić sadsmiley02.gif

nie wiem o co chodzi :/

plikowi block.php nadałem atrybuty 777 na serwerze.


Ktoś wie o co chodzi ?:/ Aha sprawdzałem to pod IE 6
-----------------------------------------------------------------------------

A gdzie mam wsadzic te piec linijek blink.gif questionmark.gif

Kod
<?php
  if( !ban( file( 'plik.bany.txt' ), $_SERVER['REMOTE_ADDR'] ) ) {
  die( 'Aaa... Twoje ip jest zbanowane...' );
   }
?>


Ten post edytował Caw 2.04.2005, 21:08:34
Go to the top of the page
+Quote Post
brachu
post 13.04.2005, 13:29:20
Post #5





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 13.04.2005

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


To jest dosyc proste wstawiasz kod strony tam gdzie ma przechodzic warunek i tyle!!! robisz includa po ifie zbanowane czy tam nie zbanowane... i wszystko hula biggrin.gif


--------------------
www.tanieprogramy.edu.pl
www.zamkor.pl
Go to the top of the page
+Quote Post
hwao
post 14.04.2005, 13:53:27
Post #6


Developer


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




Strona.php (gdzie kolwiek)
  1. <?php
  2. <php
  3. //.. zalacz funkcje alob wklej :-)
  4. if( !ban( array_map( 'trim', file( 'plik.bany.txt' ) ), $_SERVER['REMOTE_ADDR'] ) ) {
  5.  die( 'Aaa... Twoje ip jest zbanowane... ' . $_SERVER['REMOTE_ADDR'] );
  6. }
  7.  
  8. ?>


plik.bany.txt
Kod
83.12.23.35
83.12.*.?32


Na ten kod nie ma wplywu przegladarka... jak os nie dziala dalej daj znac:)
Go to the top of the page
+Quote Post
Caw
post 15.04.2005, 15:07:16
Post #7





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 13.03.2005

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


sory ale jestem chyba jakiś inny blink.gif chciałbym podkreslić że nie mam zupełnie pojęcia o php potrafie wkleić tylko gotowy kod.
Zrobiłem takl jak hwao napisałeś stowrzyłem plik.bany.txt wkleiłem ten kod tak jak tu pisze:

Kod
<?php
<php
//.. zalacz funkcje alob wklej :-)
if( !ban( array_map( 'trim', file( 'plik.bany.txt' ) ), $_SERVER['REMOTE_ADDR'] ) ) {
die( 'Aaa... Twoje ip jest zbanowane... ' . $_SERVER['REMOTE_ADDR'] );
}

?>


i nie dzieje się nic pozatym że strona rozwaliła się wszystkei tabelki się rozsypały :| kod wkleiłem zaraz pod znacznikiem <BODY>
jedna sprawa jest napisane takie coś:

//.. zalacz funkcje alob wklej :-)

czy to ma znaczyć że mam tu cos wkleić ? blink.gif ?



BARDZO BEDE WDZIECZNY JESLI KTOS NAPISZE MI DOKŁADNY KOD JAKI MAM WKLEIĆ DO PLIKU.php NIC WIECEJ NIE CHCE JEDYNIE ZEBY TO RUSZYŁO sadsmiley02.gif
Go to the top of the page
+Quote Post
hwao
post 15.04.2005, 15:14:48
Post #8


Developer


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




  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.  
  24.  if( !ban( array_map( 'trim', file( 'plik.bany.txt' ) ), $_SERVER['REMOTE_ADDR'] ) ) {
  25. die( 'Aaa... Twoje ip jest zbanowane... ' . $_SERVER['REMOTE_ADDR'] );
  26.  }
  27.  
  28. ?>


W pliku plik.bany.txt umiesc liste.. jak cos nie dziala daj znac (jak bedzie dzialac to tez daj znac bo calosc z glowy)
Go to the top of the page
+Quote Post
Caw
post 15.04.2005, 20:46:30
Post #9





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 13.03.2005

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


chyba trafił ci sie natretny pechowiec tiredsmiley.gif już myślałem że się udało bo strona jest cała nie wywala zadnego błedu php ale co z tego skoro mnie nie banuje sadsmiley02.gif wpisałem swoje IP i strona otwiera się bez problemu blink.gif

Nie wiem moze testowałeś to na jakiejś www czy to działa na 100% questionmark.gif

Nie wiem co mogłem zrobić źle bo wkleiłem zaraz pod <BODY> dokładnie to co tu napisałes w osttanim poscie zrobiłem plik.bany.txt napisałem w nim swoje IP zapodałem to na serwer i kicha :/
Go to the top of the page
+Quote Post
Bakus
post 16.04.2005, 06:15:44
Post #10


Administrator serwera


Grupa: Przyjaciele php.pl
Postów: 909
Pomógł: 0
Dołączył: 12.08.2003
Skąd: /var/www/wroclaw.php

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


Może dogadajcie sie przez PW...
To forum ma być archiwum dobrych i użytecznych klas, a jak widać przenosimy tu "php Początkujący"...
Hwao: Bądź tak miły po dogadaniu się o co chodzi jakoś uporządkować ten wątek...
Krok po kroku jak ma wyglądać instalacja i co ma być w jakim pliku... bo jak widać niedostatecznie to opisałeś... z góry dzięki... będę miał mniej pracy w moim dziale tongue.gif


--------------------
Powrót do przeszłości :)
Go to the top of the page
+Quote Post
Caw
post 16.04.2005, 11:24:18
Post #11





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 13.03.2005

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


hwao jeszcze jedno tongue.gif ten skrypt banuje teraz wszystkich blink.gif kto nie wejdzie obojetnie jakie ma ip ma napis "Aaa... Twoje ip jest zbanowane... TUTAJ NUMER IP"

Lol mozesz powiedziec o co chodzi ?tongue.gif do pliku txt wpisałem tylko swoje ip z neostardy przeniosłem wczoraj na serwer nic sie nie stało dzisiaj rano wstaje a tu mam 12 info na gg dlaczego mnie zbanowałes tongue.gif wiec jeszcze raz zapytam czy ten skrypt testowales gdzies biggrin.gif
Go to the top of the page
+Quote Post
hwao
post 17.04.2005, 12:25:58
Post #12


Developer


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




Ok no to wersja testowana przezemnie i dziala winksmiley.jpg wiec...

ban.lib.php
  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. ?>



ban.db
Kod
127.0.0.2
*.?.?.?1
11.33.24.54
127.0.*.1


test.php
  1. <?php
  2.  
  3.  // Kod pozyzej widoczny dla kazdego :)
  4.  
  5.  include( 'ban.lib.php' );
  6.  if( ban( file( 'ban.db' ), $_SERVER['REMOTE_ADDR'] ) ) {
  7. die( 'Aaa... Twoje ip jest zbanowane... <b>'.$_SERVER['REMOTE_ADDR'].'</b>' );
  8.  }
  9.  
  10.  // Kod ponizej jest dostepny tylko dla nie zdanowanych :)
  11. ?>
  12.  
  13. <p>Strona do ktorej nie maja dostep zbanowani :)</p>
  14.  
  15. <?php
  16. echo '<p><b>Ip: '. $_SERVER['REMOTE_ADDR'] .'</b></p>';
  17. ?>


Wszytko dziala sprawdzalem ;P smile.gif
Go to the top of the page
+Quote Post
Bojakki
post 24.12.2005, 13:24:09
Post #13





Grupa: Zarejestrowani
Postów: 379
Pomógł: 0
Dołączył: 18.08.2004

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


A jak zrobic by dostep do strony byl tylko dla osob, ktorych IP jest w spisie, a dla calej reszty nie ma.


--------------------
Go to the top of the page
+Quote Post
mike
post 24.12.2005, 13:30:09
Post #14





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Cytat(Bojakki @ 2005-12-24 13:24:09)
A jak zrobic by dostep do strony byl tylko dla osob, ktorych IP jest w spisie, a dla calej reszty nie ma.

Ok, to jak sam nie potrafisz mysleć to ja pomyslę za Ciebie laugh.gif

Skoro to banuje wszystkich na liście:
  1. <?php
  2. if( ban( $array, $ip ) )
  3. {
  4. echo 'Zbanowany';
  5. }
  6. else
  7. {
  8. echo 'Nie zbanowany';
  9. }
  10. ?>


To znaczy że to zbanuje tych których na liście nie ma:
  1. <?php
  2. if( ban( $array, $ip ) )
  3. {
  4. echo 'Nie zbanowany';
  5. }
  6. else
  7. {
  8. echo 'Zbanowany';
  9. }
  10. ?>


Przecież wystarczy warunki odrwócić
LOL laugh.gif
Go to the top of the page
+Quote Post
qbejs
post 27.02.2006, 22:12:01
Post #15





Grupa: Zarejestrowani
Postów: 48
Pomógł: 1
Dołączył: 9.02.2006

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


Ja dziś z nudów napisałem prostą funkcję obsługi banów....jedynie trzeba sobie do niej stworzyć forma...zastosowałem metodę banowania przez host....IP się często zmienia i łatwo je zmienić a host już nie...przykład do Neostrada TP gdzie IP sie dynamiczne ale host masz ten sam...

Oto kod:
  1. <?php
  2. function ban();
  3. {
  4. $host = gethostbyaddr($_SERVER['REMOTE_ADDR']]);
  5. $ban_query = mysql_query("SELECT host FROM `ban` WHERE host='".$host."'") or die(mysql_error());
  6. $ban_array = mysql_fetch_array($ban_query);
  7. if ($ban_array['host'] == $host)
  8. {
  9. include ('ban.php');
  10. }else
  11. include ('index.php');
  12. }
  13. ?>
Go to the top of the page
+Quote Post
Spirit86
post 17.03.2006, 10:53:21
Post #16





Grupa: Zarejestrowani
Postów: 607
Pomógł: 23
Dołączył: 8.09.2004
Skąd: Wrocław

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


no, ale to co Ty napisałeś nie ma masek ;]
Banicja jest niemożliwa, jak jakiś upierdliwy użytkownik zna się choć trochę na internecie :/.


--------------------
Audio: Metallica, Soil, RHCP, OffSpring, Green Day, "Retro", Gorillaz, Disturbed, Coma
DB: MySQL 4.1 | php: 4.4.3 Pomogłem Ci? Wciśnij przycisk POMÓGŁ.
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 Wersja Lo-Fi Aktualny czas: 12.06.2025 - 20:22