Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Blokowanie dostępu do strony, sprawdzenie poprawności kodu...
Forgoot
post
Post #1





Grupa: Zarejestrowani
Postów: 98
Pomógł: 0
Dołączył: 17.03.2004
Skąd: Suwałki

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


Witam!
Jako że jestem początkujący proszę Was, abyście powiedzieli czy ten skrypt jest poprawnie napisany, jeśli nie to proszę o ewentualną poprawkę i komentarz "co źle" zrobilem... Może da się ten skrypt rozbudować, dodać "coś", jeśli tak to proszę o podpowiedzi...

  1. <?php
  2. /**************************************************************************
  3.  *  Prosty skrypt zabraniający dostępu do strony określonemu adresowi IP  *
  4.  *  zapisanego w pliku ban.txt.                                           *
  5.  **************************************************************************/
  6.  
  7. $adres = strval($_SERVER['REMOTE_ADDR']); 
  8. $ip_zbanowane = @file("ban.txt"); 
  9.     if($_SERVER['REMOTE_ADDR'] == "$ip_zbanowane")
  10.   {
  11.           /*Kod strony*/ 
  12.     }else{
  13. echo("<b>ERROR!</b> Nie masz uprawnień do oglądania tej strony.<br /> Twój IP: $adres został zbanowany.");
  14.   }
  15.  
  16. ?>


Plik ban.txt wygląda (przykładowo) tak:
Kod
127.0.0.1
127.0.0.2
127.0.0.3
127.0.0.4


Pozdrawiam.

(IMG:http://forum.php.pl/uwaga.gif)
~mike_mech

Ten post edytował Forgoot 27.10.2005, 10:11:57
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
mike
post
Post #2





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

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


Funkcja file() zwraca tablicę, co oznacza, że ta linia:
  1. <?php
  2.  
  3. //...
  4. if($_SERVER['REMOTE_ADDR'] == "$ip_zbanowane")
  5. //...
  6.  
  7. ?>

Jest błędna bo porównujesz stringa do tablicy i to jeszcze źle to robisz (po co Ci znaki cudzysłowiu ).
Lepiej będzie:
  1. <?php
  2.  
  3. //...
  4. if( in_array( $_SERVER['REMOTE_ADDR'], $ip_zbanowane ) )
  5. //...
  6.  
  7. ?>

Teraz php sprawdzi czy adres usera jest w tablicy IP zbanowanych userów.

P.S. $_SERVER może zawierać mało wiarygodny adres IP, aby mieć większą pewnośc co do adresu, użyj funkcji:
  1. <?php
  2. function GetClientIP()
  3. {
  4. $ip = 0;
  5.  
  6. if( ! empty( $_SERVER[ 'HTTP_CLIENT_IP' ] ) )
  7. {
  8. $ip = $_SERVER[ 'HTTP_CLIENT_IP' ];
  9. }
  10.  
  11. if( ! empty( $_SERVER[ 'HTTP_X_FORWARDED_FOR' ] ) )
  12. {
  13. $ipList = explode( ", ", $_SERVER[ 'HTTP_X_FORWARDED_FOR' ] );
  14. if( $ip )
  15. {
  16. array_unshift( $ipList, $ip );
  17. $ip = 0;
  18. }
  19. foreach( $ipList as $v )
  20. {
  21. if( ! eregi( "^(192.168|172.16|10|224|240|127|0.", $v ) )
  22. {
  23. return $v;
  24. }
  25. }
  26. }
  27.  
  28. return $ip ? $ip : $_SERVER[ 'REMOTE_ADR' ];
  29. }
  30.  
  31. ?>
Go to the top of the page
+Quote Post

Posty w temacie


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 - 23:50