Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: blokada auto ip
Forum PHP.pl > Forum > PHP
maxserwer
Siemka, czy ktoś zna taki skrypt który zapisuje po wejściu na stronę ip w notatniku w rządku, a po ponownym wejściu na tą samą stronę blokuje te ip co jest w notatniku. Potrzebuje taki skrypt do okienka wyskakującego na mojej stronie.
Z góry wielkie THX!!!
php programmer
Chyba nie potrzebnie chcesz sobie narobić pracy,
a przy tym każesz za każdym odświeżeniem strony
pisać lub czytać z pliku.

jak dla mnie to wystarczy sesja albo cookie,

przy czym sesja zazwyczaj będzie działała trochę którcej
(do zamknięcia przeglądarki)
niż sesja podłaczenia do interenu np w neostradzie,
(zazwyczaj do wyłaczenia komputera)

cookie natomiast tak długo jak sobie ustawisz,
bo ludzie raczej nie kasują cookie, gdyż
nie chcą kasować pozapamiętywanych haseł
maxserwer
no tak, ale ten skrypt chcę jeszcze trochę przemienić, tak żeby nie wpisywał ip tylko użytkowników i taki sam użyje do czegoś jeszcze. On mi jest bardzo potrzebny, wiedź jak ktoś ma to niech napisze mi go.
pojas
Nie wiem czy dobrze zrozumiałem, ale takie rozwiązanie ma wiele wad.

  1. <?php
  2.  
  3. $ip = $_SERVER['REMOTE_ADDR']; // IP użytkownika
  4. $file_name = 'file.txt'; // nazwa pliku
  5.  
  6. if( $file = @fopen( $file_name, 'a+' ) ) // otwiera lub tworzy plik
  7. {
  8. // jeśli plik jest otwarty
  9. $file_string = fread( $file, filesize( $file_name ) ); // pobierz zawartość pliku
  10. $ip_adresses = explode( '|', $file_string ); // pobierz adresy IP do tablicy
  11. if( in_array( $ip, $ip_adresses ) )
  12. {
  13. // IP zostało już zapisane
  14. // blokuj dostęp
  15. } else
  16. {
  17. // nie ma takiego IP
  18. fwrite( $file, '|'.$ip ); // dopisz nowy adres IP
  19. }
  20. }
  21.  
  22. ?>
maxserwer
siemka, wspaniały kod, tylko że on miał nie tylko zapisywać i nie dopisywać drugi raz tej samej osoby, tylko jeszcze ją blokować, czyli blokować dalsze wczytywanie strony (wyświetlając wiadomość smile.gif
John
  1. <?php
  2. if( in_array( $ip, $ip_adresses ) )
  3. {
  4. // IP zostało już zapisane
  5. // blokuj dostęp
  6. } else
  7. ?>


zostało, jeśli umieścisz kod w dobrym miejscu to zwyczajnie gościowi wyświetli się strona z wiadomością - tu autor skryptu pozostawił Ci pole do popisu.
maxserwer
no tak, ale testuje ten scrypt na takim polu, i nic...

  1. <? 
  2. require_once 'config.php';
  3. ?>
  4. <? include("zbior_liter.php")?>
  5. <html>
  6. <head>
  7. <title>Max Serwer- twoje wirtualne miejsce...</title>
  8. <meta name="Keywords" content="ego, Komputery, Forum, Czat, Serwery, Pliki, Bramka, SMS, e-mail, GGTlen, MP 3, Mapy, 
  9.  
  10. Dowcipy, Pogoda, Dodatki, Html, PHP, nauka, wiedza, społeczęstwo, max, serwer, s
    erwery, domen,y załoguj, blog, blok,i 
  11.  
  12. informacje, serwer, wirtualny, info">
  13. <meta name="Description" content="ego.yoyo.pl- największy w Polsce portal o bogatej tematyce, menu jest bardzo 
  14.  
  15. rozbudowane i posiada: komputery, sprzęt, gadżety, gry, forum, telewizja interne
    towa, cyfrowy świat, wirtualny świat, cyber, 
  16.  
  17. świat czatów...">
  18. <LINK href="style.css" type="text/css" rel="stylesheet">
  19. <? include("dane_strony.php")?>
  20. <? include("powitanie_w_wierszu_php.php")?>
  21. <? include("script_glowne.php")?>
  22. <link href="images/icona/ms.ico" rel="shortcut icon" />
  23. <link href="images/icona/ms.ico" rel="bookmark icon" />
  24. </head>
  25.  
  26. <?php
  27.  
  28. $ip = $_SERVER['REMOTE_ADDR']; // IP użytkownika
  29. $file_name = 'forum/data/glosy/maxserwer.php'; // nazwa pliku
  30.  
  31. if( $file = @fopen( $file_name, 'a+' ) ) // otwiera lub tworzy plik
  32. {
  33. // jeśli plik jest otwarty
  34. $file_string = fread( $file, filesize( $file_name ) ); // pobierz zawartość pliku
  35. $ip_adresses = explode( '|', $file_string ); // pobierz adresy IP do tablicy
  36. if( in_array( $ip, $ip_adresses ) )
  37. {
  38. // IP zostało już zapisane
  39. // blokuj dostęp
  40. } else
  41. {
  42. // nie ma takiego IP
  43. fwrite( $file, '|'.$ip ); // dopisz nowy adres IP
  44. }
  45. }
  46.  
  47. ?>
  48.  
  49.  
  50. vnvbnvbvnvbnvbvnvbnvbvnvbnvbvnvbnvbvnvbnvbvnvbnvbvnvbnvbvnvbnvbvnvbnvbvnvbnvbvnv
    bnvbvnvbnvbvnvbnv
  51.  
  52. bvnvbnvbvnvbnvbvnvbnvbvnvbnvbvnvbnvbvnvbnvbvnvbnvbvnvbnvbvnvbnvbvnvbnvbvnvbnvbvn
    vbnvbvnvbnvbvnvbn
  53.  
  54. vb
  55. </html>
Cienki1980
A co ma się niby pojawiać, skoro w przypadku gdy adres IP jest zapisany już do pliku nic się nie dzieje. Chociaż jakieś echo przydałoby się w tym ifie gdzie sprawdzasz czy adres IP jest w tablicy.

A tak przy okazji nie łatwiej byłoby odczytywać zawartość pliku za pomocą file" title="Zobacz w manualu PHP" target="_manual. W wyniku od razu byś miał tablicę i nie musiałbyś tego obrabiać.

Do tego zapis linijka pod linijką wystarczy, jak otworzysz plik w odpowiednim trybie ( kursor ustawiony na końcu pliku ) i dopiszesz kolejny adres.
maxserwer
sorki, ale nie zrozumiałeś mnie, chodzi mi o to że gdyby się zapisuje za pierwszym razem stronka, to ona się ma wyświetlać, a z drugim ma się pokazywać informacja np. ta strona została już wyświetlona i drugi raz już nie zostanie!!! <<< zrozumiałeś, ja robi własny system głosowania i takie gówienko mi się też przyda ( a do czego to już moja sprawa, bo proszę nie zapominać że jeżeli podstawie za ip np. nick usera, to uzyskam blokadę userów... bardzo to potrzebuje, bo bez tego można glosować do bólu u mnie...
Cienki1980
Ależ bardzo dobrze Ciebie zrozumiałem ....
Ja po prostu komentuje ten skrypt który pokazałeś i który niby testujesz.

I powtarzam. W przypadku, gdy adres będzie już w bazie adresów blokowanych nic się nie pokaże, bo w ifie, który to sprawdza nie ma żadnych poleceń do wykonania, nie licząc dwóch linijek komentarza.

Schemat sprawdzania/dopisywania/pokazywania/niepokazywania powinien wyglądać jakoś tak:
  1. <?php
  2. //wchodzi user na strone:
  3.  
  4. //odczytujesz jego IP czy też nick
  5. $ip=$_SERVER['REMOTE_ADDR'];
  6.  
  7. //otwierasz plik i odczytujesz
  8.  
  9. if($ip znajduje sie w bazie adresow)
  10.  echo "You shall not pass: jakby to Gandalf powiedział";
  11. else
  12. {
  13.  echo "to jest magiczna strona która możesz zobaczyć tylko raz";
  14.  //dopisujemy adres do pliku
  15. }
  16. ?>


Teraz wystarczy tylko dostosować to co masz do takiego schematu i masz to czego potrzebujesz.
maxserwer
dzięki, już gitarka gra smile.gif wielkie THX!!! guitar.gif guitar.gif guitar.gif
pojas
Cytat
nie łatwiej byłoby odczytywać zawartość pliku za pomocą file
Zasugerowałem się tym:
Cytat
zapisuje po wejściu na stronę ip w notatniku w rządku
Chyba masz rację, że lepiej zapisywać dane ( adresy IP ) nie w rządku, a linijka pod linijką. guitar.gif

Całe zamieszanie ze skryptem wyszło z tego, że napisałem tylko zarys, nie gotowy i ekstra elestyczny kod, który wystarczy gdzieś wkleić smile.gif

Jednak coś napisałem innego - wystarczy, że wstawisz to przed kodem "tajnej" strony.
  1. <?php
  2.  
  3. $ip = $_SERVER['REMOTE_ADDR']; // IP użytkownika
  4. $file_name = 'ip.txt'; // nazwa pliku np. TXT
  5.  
  6. function add_ip( $ip, $file_name )
  7. {
  8. $file = @fopen( $file_name, 'a+' ); // otwórz plik
  9. if( @fwrite( $file, $ip ) ) // dopisz nowy adres IP
  10. {
  11. return true;
  12. }
  13. @fclose( $file ); // zamknij plik
  14. return false;
  15. }
  16.  
  17. if( $ip_addresses = @file( $file_name ) ) // pobierz plik do tablicy
  18. {
  19. // plik istnieje
  20. if( $key = array_search( $ip, $ip_addresses ) !== false )
  21. {
  22. // IP zostało znalezione
  23. exit( 'Blokada ponownego dostępu dla IP: '.$ip );
  24.  
  25. } else
  26. {
  27. // IP nie zostało znalezione
  28. if( ! add_ip( $ip, $file_name ) )
  29. {
  30. // ktoś nabroi z $file_name, np. tylko-do-odczytu
  31. exit( 'Nie możesz oglądać tej strony, brak dostępu do pliku bezpieczeństwa: ' );
  32. }
  33. }
  34. } else
  35. {
  36. // plik nie istnieje
  37. if( ! add_ip( $ip, $file_name ) )
  38. {
  39. // ktoś nabroi z $file_name, np. tylko-do-odczytu
  40. exit( 'Nie możesz oglądać tej strony, brak dostępu do pliku bezpieczeństwa: ' );
  41. }
  42. }
  43. ?>
  44. <html>
  45. <body>
  46. <p>
  47. Strona jednorazowego użytku <b>: )</b>
  48. </p>
  49. </body>
  50. </html>

Pamiętaj, że wiele osób ma zmienne - dynammiczne IP, moża dodatkowo zapisać jakieś ciacho u użyszkodnika ( cookie ) informujące, że z tego komputera ( raczej przeglądarki ) dodonano głosowania.
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.