Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Blokowanie IP
urbizdw
post
Post #1





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

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


Witam!
Chcialem napisac skrypt w php ktory czyta z pliku adresy IP (adresy umieszczone sa linijka pod linijka) i jesli jest taki adres w pliku to zeby wyswietlilo tekst zablokowane a jesli niema adresu to jestes. Co jest nie tak z moim skryptem (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)


  1. <?php
  2. function ip_prawdziwe() {
  3. if ($_SERVER['HTTP_X_FORWARDED']) {
  4. $ip_prawdziwe= $_SERVER['HTTP_X_FORWARDED_FOR'];
  5. }
  6. else {
  7. $ip_prawdziwe = $_SERVER['REMOTE_ADDR'];
  8. }
  9.  
  10. return $ip_prawdziwe;
  11. }
  12.  
  13. $ip= IP_prawdziwe();
  14.  
  15. $plik= file("blockip.dat");
  16. $n= 0;
  17. while($n < count($plik)){
  18. if($plik[$n] == $ip){
  19. echo 'zablokowane';
  20. }
  21. else{ echo 'jestes';
  22. $n++;
  23. }
  24. }
  25. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
Jojo
post
Post #2





Grupa: Zarejestrowani
Postów: 405
Pomógł: 1
Dołączył: 19.09.2003
Skąd: Lublin

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


W pliku jest coś takiego jak znaki końca linii. Jeśli rozbijesz plik na tablicę przy pomocy funkcji file(), to te znaczki nadal tam są i porównanie zmiennej $ip z linijką pliku nigdy nie da Ci poprawnego rezultatu. Musisz przed porównaniem pozbyć się znaków końca linii z elementów tablicy $plik.
Go to the top of the page
+Quote Post
nospor
post
Post #3





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Ano to jest nie tak, ze nie zajrzales do manuala:
http://pl.php.net/manual/pl/function.file.php
Cytat
Notatka: Każda linia w wynikowej tabeli będzie zawierać znak(i) końca linii, jeśli nie chcesz ich musisz uzyć rtrim().

Co oznacza ze te twoje IP z pliku nigdy sie nie bedzie rownalo z tym co koles aktualnie wszedl, bo to z pliku bedzie mialo jeszcze znak konca linii na koncu. Co nalezy zrobic w tej sytuacji masz napisane (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

pozatym zwiekszanie tego $n w warunku to baaaaaardzo zly pomysl. Jak ci trafi na zbanowane IP to z tej petli nigdy nie wyjdziesz (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
urbizdw
post
Post #4





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

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


Probowalem:
  1. <?php
  2. function ip_prawdziwe() {
  3. if ($_SERVER['HTTP_X_FORWARDED']) {
  4. $ip_prawdziwe= $_SERVER['HTTP_X_FORWARDED_FOR'];
  5. }
  6. else {
  7. $ip_prawdziwe = $_SERVER['REMOTE_ADDR'];
  8. }
  9.  
  10. return $ip_prawdziwe;
  11. }
  12.  
  13. $ip= IP_prawdziwe();
  14.  
  15. $plik= file("blockip.dat");
  16. $n= 0;
  17. while($n < count($plik)){
  18. rtrim($plik, 't');
  19. if($plik[$n] == $ip){
  20. echo 'jestes';
  21. }
  22. else{ echo 'nie jestes';
  23. }
  24. }
  25. ?>



tez nic (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) wiec co jest jeszcze nie tak??

Ten post edytował urbizdw 8.09.2006, 14:11:25
Go to the top of the page
+Quote Post
cinekz
post
Post #5





Grupa: Zarejestrowani
Postów: 50
Pomógł: 6
Dołączył: 15.06.2006

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


  1. <?php
  2. function ip_prawdziwe() {
  3. if ($_SERVER['HTTP_X_FORWARDED']) {
  4. $ip_prawdziwe= $_SERVER['HTTP_X_FORWARDED_FOR'];
  5. }
  6. else {
  7. $ip_prawdziwe = $_SERVER['REMOTE_ADDR'];
  8. }
  9.  
  10. return $ip_prawdziwe;
  11. }
  12.  
  13. $ip= IP_prawdziwe();
  14.  
  15. $plik= file("blockip.dat");
  16. $n= 0;
  17. while($n < count($plik)){
  18. if( rtrim( $plik[$n] ) == $ip){
  19. echo 'zablokowane';
  20. }
  21. else{ echo 'jestes';
  22. $n++;
  23. }
  24. }
  25. ?>
Go to the top of the page
+Quote Post
urbizdw
post
Post #6





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

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


To tez nie dziala bo az petla krazy caly czas w kolko i nie przestaje dzialac (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) az przegladarka pada (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




NO ale czytaj chlopie cosie do ciebie pisze:
Cytat
pozatym zwiekszanie tego $n w warunku to baaaaaardzo zly pomysl. Jak ci trafi na zbanowane IP to z tej petli nigdy nie wyjdziesz

Masz te zwiekszanie $n dac niezaleznie od warunku...
Go to the top of the page
+Quote Post
urbizdw
post
Post #8





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

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


A wiec dalem :
  1. <?php
  2. function ip_prawdziwe() {
  3. if ($_SERVER['HTTP_X_FORWARDED']) {
  4. $ip_prawdziwe= $_SERVER['HTTP_X_FORWARDED_FOR'];
  5. }
  6. else {
  7. $ip_prawdziwe = $_SERVER['REMOTE_ADDR'];
  8. }
  9. return $ip_prawdziwe;
  10. }
  11. $ip= IP_prawdziwe();
  12. $plik= file("blockip.dat");
  13. $n= 0;
  14. while($n < count($plik)){
  15. if( rtrim( $plik[$n] ) == $ip){
  16. echo 'zablokowane';
  17. }
  18. else{ echo 'jestes';
  19. }
  20. $n++;
  21. }
  22. ?>



Dałem $n++ poza warunek ale nadal cos nie tak. Powinno wyswietlac jedna z informacji ze albo zablokowane albo ze jestes. a mi wyswietla zablokowanejestes. co jest nie tak??

Ten post edytował urbizdw 8.09.2006, 15:13:53
Go to the top of the page
+Quote Post
tiraeth
post
Post #9





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

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


Panowie, mamy do czynienia z "użytkownikiem"...

Przeanalizuj jeszcze raz działanie programu czyli napisz sobie graficzny algorytm....

  1. <?php
  2. $ip = ( $_SERVER['HTTP_X_FORWARDED'] ) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR'];
  3.  
  4. $plik = file('blockip.dat');
  5. $n = 0;
  6.  
  7. $banned = false;
  8. while ( $n < count($plik) )
  9. {
  10. if ( rtrim( $plik[$n] ) == $ip )
  11. {
  12. $banned = true;
  13. break;
  14. }
  15. }
  16.  
  17. if ( $banned )
  18. {
  19. echo '<span style="color:#ff0000">Wstęp zablokowany</span>';
  20. }
  21. else
  22. {
  23. echo '<span style="color:#00ff00">Wstęp dozwolony</span>';
  24. }
  25. ?>
Go to the top of the page
+Quote Post
Mystic007
post
Post #10





Grupa: Zarejestrowani
Postów: 106
Pomógł: 1
Dołączył: 22.04.2006
Skąd: Będzin

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


Ja bym w pętlę wywalił, i dał w if'ie funkcję in_array" title="Zobacz w manualu php" target="_manual. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Powodzenia
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 11:42