Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Banowanie Ip
Forum PHP.pl > Forum > Przedszkole
batat
Chcialem zebyscie sprawdzili, czy skrypt ktory napisalem do banowania IP jest poprawnie napisany tongue.gif

oto on:

  1. <?
  2.  
  3. $ip=$_SERVER[&#092;"REMOTE_ADDR\"];
  4. $host=gethostbyaddr($ip);
  5.  
  6.  
  7. mysql_connect (&#092;"localhost\",\"root\",\"krasnal\") or die (\"Nie można połączyć się z MySQL\");
  8. mysql_select_db (devil_devil) or die (&#092;"Nie można połączyć się z bazą\");
  9.  
  10. $query = &#092;"SELECT * FROM ban_ip\"; $query2 = mysql_query($query) or die(mysql_error());
  11.  
  12. while($wiersz=mysql_fetch_array ($query2)) 
  13. {
  14. echo &#092;" \".$wiersz['ip'].\" \";
  15. }
  16.  
  17.  
  18. if ( $ip == $wiersz['ip'] ) { echo &#092;"zostałes zbanowany snitch.gif przez admina\"; }
  19. elseif ( $ip != $wiersz['ip'] ) { echo &#092;"Tutaj normalna tresc strony\"; }
  20. ?>


w bazie mam zapisane ip zbanowanych ludzi i nie eim czy dobrze napisalem warunek, zeby porownywalo ip goscia z ip w bazie smile.gif prosze o sprawdzenie tongue.gif czekam na odpowiedzi exclamation.gif


-----
do kogu php mamy znacznik [php] a nie [sql]
hwao
ph34r.gif
fido20
Hmm

Po co dodajesz na poczatku i koncu ip spacje ?
  1. <?php
  2.  
  3. while($wiersz=mysql_fetch_array ($query2)) 
  4. {
  5. echo &#092;" \".$wiersz['ip'].\" \";
  6. }
  7.  
  8. ?>


Pyta z ciekawosci smile.gif
ActivePlayer
jak dla mnie to to nie bedzie działało bo:

  1. <?php
  2.  
  3. if ( $ip == $wiersz['ip'] ) { echo &#092;"zostałes zbanowany snitch.gif przez admina\"; }
  4. ?>

sprawdza tylko ostatnie IP zwrócone przez mysqla... to powinno byc raczej w pętli...
sf
zamiast elseif daj po if pierwszym exit; winksmiley.jpg

hm, no i z tym ip to w zapytaniu daj szukanie tego ip, ktory wchdzi na strone i jesli znalazl to <?php echo "masz bana"; exit; ?>, jesli nie znalazl to nic nie robisz... czyli potem sie wyswietli reszta strony
batat
troche nie mialem czasy, ale teraz mam cos takiego:

  1. <?
  2.  
  3. $ip2=$_SERVER[&#092;"REMOTE_ADDR\"];
  4. $host=gethostbyaddr($ip);
  5.  
  6.  
  7. mysql_connect (&#092;"localhost\",\"root\",\"krasnal\") or die (\"Nie można połączyć się z MySQL\");
  8. mysql_select_db (devil_devil) or die (&#092;"Nie można połączyć się z bazą\");
  9.  
  10.  
  11. $query=&#092;"SELECT * FROM ban_ip WHERE ip=\"$ip2\"\";
  12. $query2=mysql_query($query) or die (&#092;"zapytanie zakończone niepowodzeniem\");
  13.  
  14. while($wiersz = mysql_fetch_array($query2))
  15. {
  16.  if ($ip==$wiersz['ip']) { echo &#092;"jest zle snitch.gif\"; }
  17.  else { echo &#092;"jest ok\"; } //tutaj takie cos, albo proponowany exit
  18. }
  19.  
  20. ?>


teraz to cos pomoze questionmark.gif
matid
Tylko że teraz jeśli jesteś zbanowany, wyświetli ci:
Cytat
jest zle snitch.gif
jest ok
jest ok
jest ok
jest ok
jest ok
jest ok
...

i tak tyle razy ile masz wpisów w bazie.
Natomiast jak nie jesteś zbanowany to będziesz miał 'jest ok', tyle razy, ile wpisów w bazie - 1.
Guest
no to ja juz nie wiem sadsmiley02.gif jakby kto mogl to niech mi ten warunek sprawdzajacy napisze ... please.... worriedsmiley.gif
batat
to ja tylko zapomnialem sie zalogowac ;p
bela
  1. <?
  2. mysql_connect (&#092;"localhost\",\"root\",\"krasnal\") or die (\"Nie można połączyć się z MySQL\");
  3. mysql_select_db (&#092;"devil_devil\") or die (\"Nie można połączyć się z bazą\");
  4. ?>


czemu w select_db nie było cudzysłowiów?
Guest
Moze ma zdefiniowaną stałą devil_devil.
batat
nie wiem czego nie ma pazurkow, ale wszystko chodzi. prosze tylko o sformulowanie mi tego warunku porownujacego ip usera z ip wpisanymi w bazie worriedsmiley.gif
matid
  1. <?php
  2.  
  3. while( $wiersz = mysql_fetch_array( $query2 ) )
  4. {
  5. if ( $ip == $wiersz['ip'] )
  6. {
  7. die( &#092;"Nie masz dostępu do tej strony\" );
  8. }
  9. }
  10.  
  11. // Tutaj dalsza część strony
  12.  
  13. ?>
batat
wszystko ladnie, pieknie chodzi, tylko mam jeszcze taki mankament. jak funkcja die() zostaje uzyta, w przypadku bana, to wtedy nie czyta sie reszta strony, czyli w moim przypadku prawa ramka strony. i w rezultacie strona wyglada jakby sie nie zaladowala :/ wnioskuje wiec ze po die() nic juz sie nie wyswietla. probowalem roznych kombinacji z petlami warunkowymi, oraz z exit; ale nic mi sie nie udalo zrobic. ma ktos jakis pomysl questionmark.gif smile.gif

daje dla pewnosci kod ( z baza laczy sie wyzej ;p ):

  1. <?php
  2. //BANOWANIE IP I HOSTOW
  3.  
  4. $ip2=$_SERVER[&#092;"REMOTE_ADDR\"];
  5. $host2=gethostbyaddr($ip2);
  6.  
  7.  
  8. $query=&#092;"SELECT * FROM ban_ip WHERE ip=\"$ip2\"\";
  9. $query2=mysql_query($query) or die (&#092;"zapytanie zakończone niepowodzeniem\");
  10.  
  11. $q=&#092;"SELECT * FROM ban_host WHERE host=\"$host2\"\";
  12. $q2=mysql_query($q) or die (&#092;"zapytanie zakończone niepowodzeniem....\");
  13.  
  14. while( $wiersz = mysql_fetch_array( $query2 ) )
  15. { if ( $ip2 == $wiersz['ip'] ) {
  16. die( &#092;"<BR><B><div align=center>Nie masz możliwości komentowania newsów - twoje IP zostało zbanowane. Jeżeli uważasz, że to jakieś nieporozumienie, 
  17.  
  18. koniecznie skontaktuj się z administratorem: <a href=mailto:*****>*****</a> !</div></b><BR>&#092;" );}
  19. }
  20.  
  21. while( $wiersz = mysql_fetch_array( $q2 ) )
  22. { if ( $host2 == $wiersz['host'] ) {
  23. die( &#092;"<BR><B><div align=center>Nie masz możliwości komentowania newsów - twój HOST został zbanowany. Jeżeli uważasz, że to jakieś nieporozumienie, 
  24.  
  25. koniecznie skontaktuj się z administratorem: <a href=mailto:*****>*****</a> !</div></b><BR>&#092;" );}
  26. }
  27.  
  28. // JEZELI NIE JEST KTOS ZBANOWANY, TO WYSWIETLA MU SIE NORMALNIE FORMULARZ DO KOME
  29. TARZY
  30.  
  31. echo&#092;" TUTAJ FORMULARZ DO COMMENTOW\";
  32. ?>
NIKU
a nie możesz zastosować ruskiej metody i zbanować z cepanelu jest tam taka opcja ban przez ip
ogolnie nie polecam banu przez ip czy cos w tym rodzaju czytalem gdzies ze przez ban ip mozna zbanowac niechcacy nie tylko tego znienawidzonego usera ale i tez caly szereg
innych userow ktorzy korzystaja z podobnego chosta. tak wiec ostroznie POZDRAWIAM
powiedzialem co wiedzialem i nie sklamalem smile.gif
Ociu
Ulala, gdyby ten kod miałby sprawdzać te if'y w pętli to koniec.

  1. <?php
  2. # tu kod wczesniejszy
  3. $query = mysql_query(&#092;"SELECT * FROM ban WHERE ip = '\".$ip.\"' AND host = '\".$host.\"'\");
  4.  
  5. if(mysql_num_rows($query) != 0)
  6. {
  7. print 'Uuuu... Administrator se Ciebie zbanowal';
  8. }
  9.  
  10. /* jeżeli masz dwa zapytania to tak:
  11. if(mysql_num_rows($query) != 0 && mysql_num_rows($query2) != 0)
  12. {
  13. print 'Ban.';
  14. }
  15. */
  16. ?>


Funckją:
  1. <?php
  2. function is_ban($ip, $host)
  3. {
  4. mysql_connect(&#092;"host\", \"root\", \"\") or die(mysql_error());
  5. mysql_select_db(&#092;"\") or die(mysql_error());
  6.  
  7. $query = mysql_query(&#092;"SELECT * FROM ban WHERE ip = '\".$ip.\"'\");
  8. $query2 = mysql_query(&#092;"SELECT * FROM ban WHERE host = '\".$host.\"'\");
  9.  
  10. if(mysql_num_rows($query) != 0 || mysql_num_rows($query2) != 0)
  11. {
  12. print 'Uuuu... Administrator Ciebie zbanowal';
  13. }
  14.  
  15. }
  16. ?>
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.