Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]modyfikacja skryptu
Forum PHP.pl > Forum > Przedszkole
gokugo
Jestem zupełnie zielony z PHP i liczę na Waszą pomoc. Mam skrypt na stronie <a href="http://www.skps.wroclaw.pl">koła przewodników sudeckich</a> umożliwiający dodawanie komentarzy pod systemem newsów. Mam kilku "upierdliwców" którzy psują całą zabawę jednakże ich ban jest niemożliwy ponieważ korzystają z neostrady. Czy istnieje jakiś sposób na zbanowanie użytkowników neo?? Fragment mojego kodu:

Kod
   /* DODAWANIE KOMENTARZA */
       case add_kom:
           $_GET['no']=intval($_GET['no']);
           $banfile = file("$newspath/ban.txt");
           $ip = $_SERVER["REMOTE_ADDR"];
           $ban = "false";
           foreach($banfile as $linia){
               $linia = explode("||", $linia);
               if($linia[0] == $ip){ $ban = "true"; }
           }
           if($ban == "true"){
               $print_center = news_wiadomosc("Przepraszamy, ale nie masz zezwolenia na dodanie komentarza, ponieważ twoje IP ($ip) zostało zablokowane przez administratora.
   [<a href=\"".$config["adres"]."\">wróć do newsów</a>]");
           }
           else{
               if($_GET["do"] == "save"){
                   if($_POST['kom_autor']=="" || $_POST['komentarz']==""){
                       $print_center = news_wiadomosc("Wypełnij wszystkie wymagane pola!
   [<a href=\"java script:history.back()\">wróć</a>]");
                   }
                   else{
                       $filename = "$newspath/komentarze/".$_GET["no"];
                       if(file_exists($filename)){
                           $kom_autor = $_POST["kom_autor"];
                           $kom_email = $_POST["kom_email"];
                           $komentarz = $_POST["komentarz"];
                           $kom_autor = strip_tags($kom_autor);
                           $kom_email = strip_tags($kom_email);
                           $komentarz = strip_tags($komentarz);
                           $kom_autor = str_replace("|", "\\|", $kom_autor);
                           $kom_email = str_replace("|", "\\|", $kom_email);
                           $komentarz = str_replace("|", "\\|", $komentarz);
                           $kom_autor = preg_replace("'\n|\r\n|\r'si", "", $kom_autor);
                           $kom_email = preg_replace("'\n|\r\n|\r'si", "", $kom_email);
                           $komentarz = preg_replace("'\n|\r\n|\r'si", "
   ", $komentarz);
                           $numer = max_l_plik(0, "||", $filename)+1;
  
                           $file = fopen($filename, "a+");
                           flock($file, 2);
                           $puts = "$numer||$komentarz||$kom_autor||$kom_email||".time()."||$ip||\n";
                           fputs($file, $puts);
                           flock($file, 3);
                           fclose($file);
                           $print_center = news_wiadomosc("Twój komentarz został dodany.
   [<a href=".$config["adres"].">wróć do newsów</a>]");
                       }
                       else{
                           $print_center = news_wiadomosc("Nie można dodać komentarza - brak pliku z baz± danych do tego newsa.
   [<a href=".$config["adres"].">wróć do newsów</a>]");
                       }
                   }
               }
               else{
                   $print_center.= "
                   <form action=\"". $config["adres"]."function=add_kom&no=".$_GET["no"]."&do=save\" method=post name=formularz>
                   *Autor:
   <input type=text name=\"kom_autor\">
  
                   Email:
   <input type=text name=\"kom_email\">
  
                   *Komentarz:
   ";
                   if($config["emoty_kom"] == "tak"){ $print_center.= list_emots($newspath,"komentarz")."
   "; }
                   $print_center.= "<textarea style=\"width:300; height:150\" name=\"komentarz\"></textarea>
                  
   * - pola wymagane
  
  
                   <input type=submit value=\"dodaj\">
                  
   <a href=\"".$config["adres"]."\">[rezygnuj]</a>
                   </form>
                   ";
               }
           }            
       break;
   }


Na forum znalazłem coś takiego: http://forum.php.pl/lofiversion/index.php/t27026.html ale nie wiem jak wpleść ten kod w zasadniczy przedstawiony wyżej aby się to zamknęło w całość
Pilsener
Ban na IP generalnie jest prosty do obejścia. Próbuj różnych metod, np. ciastka. Niestety na idiotów nie ma dobrego lekarstwa, pocieszające jest to, że wpisy łatwo się usuwa a dodanie ich zajmuje dzieciom trochę czasu, więc kasujesz aż im się znudzi smile.gif

Inna sprawa to boty - może to one powodują problemy? Warto zadbać o filtry antyspamowe. Wygląda mi to na kawałek PS NEws, na początek poczytaj o filtrach antyspamowych.
Fifi209
Dodaj np. captcha + ograniczenie czasowe, przykładowo jeden komentarz co 10 minut dla jednego ip.
Spawnm
captcha + aktywacja wpisów przez moda ;]
i w panelu input shoutbox do zatwierdzania masowego, co nie zatwierdzone to wylatuje.
I niech sobie spamuje, szybko mu się znudzi jak zobaczy że brak efektów jego pracy.
gokugo
Cytat
Niestety na idiotów nie ma dobrego lekarstwa, pocieszające jest to, że wpisy łatwo się usuwa a dodanie ich zajmuje dzieciom trochę czasu


jest to kilku starych emerytów (dosłownie) którzy potrafią wyskrobać coś obraźliwego i ten sam tekst wklejać jako komentarze pod newsami przez pół nocy... a administratorzy każdego poranka tracą po 30-50 min na ich usuwanie sad.gif Tak to jest PS NEws smile.gif

Cytat
Dodaj np. captcha + ograniczenie czasowe, przykładowo jeden komentarz co 10 minut dla jednego ip.


wygląda rozwiązanie na naprawdę sensowne smile.gif Jesteś mi w stanie powiedzieć jak taki skrypt (zapis) miałby wyglądać i gdzie go wkleić questionmark.gif
ucho
Użyj $_SERVER['REMOTE_HOST'] lub gethostbyaddr($ip) i zbanuj po domenie wszystkich z neo. A później ewentualnie dodawaj wyjątki np. dla zalogowanych użytkowników. Na pewno są też jakieś RBL które blokują wszystkie zmienne ip.

darko
https://admin.recaptcha.net/accounts/signup/?next= <- rejestrujesz się, później określasz adresy stron, na których ma być aktywna usługa recaptcha, generujesz dwa klucze: publiczny i prywatny i czytasz api/helpa, jak z tego skorzystać. Ja akurat wykorzystuję gotowe klasy w Zendzie: Zend_Service_ReCaptcha oraz Zend_Form_Element_Captcha <-- całość zajmuje jakieś 4 linijki kodu i problem z głowy.
gokugo
Cytat
https://admin.recaptcha.net/accounts/signup/?next= <- rejestrujesz się, później określasz adresy stron, na których ma być aktywna usługa recaptcha, generujesz dwa klucze: publiczny i prywatny i czytasz api/helpa, jak z tego skorzystać. Ja akurat wykorzystuję gotowe klasy w Zendzie: Zend_Service_ReCaptcha oraz Zend_Form_Element_Captcha <-- całość zajmuje jakieś 4 linijki kodu i problem z głowy.


z tego co wiem recaptcha generuje kody obrazkowe i jest skuteczna w odniesieniu do bootów. A tu tak jak wcześniej wspominałem jest problem kilku upierdliwych mocherów, którzy tak naprawdę mają niewielkie pojęcie o tym jak to wszystko działa, i których przez to że są podłączeni do neo nie da się zbanować.

Cytat
Użyj $_SERVER['REMOTE_HOST'] lub gethostbyaddr($ip) i zbanuj po domenie wszystkich z neo. A później ewentualnie dodawaj wyjątki np. dla zalogowanych użytkowników. Na pewno są też jakieś RBL które blokują wszystkie zmienne ip.


To też jest doskonałe rozwiązanie gdyż ze stałych bywalców nikt poza nimi z neo nie korzysta smile.gif Jesteś mi w stanie powiedzieć tylko gdzie ten kod powinienem dokładnie wkleić i jaką on powinien mieć treść.
darko
To jak są tacy starsi to może nie dowidzą, ja sam mam problemy z odczytaniem napisów które generuje recaptcha, a młody jestem i wzrok mam dobry winksmiley.jpg
Fifi209
Cytat(gokugo @ 6.01.2010, 12:49:28 ) *
wygląda rozwiązanie na naprawdę sensowne smile.gif Jesteś mi w stanie powiedzieć jak taki skrypt (zapis) miałby wyglądać i gdzie go wkleić questionmark.gif


Miałem na myśli, bardziej takie prościutkie captcha wyraźne i w ogóle, niech boty czytają w końcu to ludzie spamują.
Ograniczenie czasowe - zapisujesz sobie np. do sesji, lecz bym polecał bazę danych i po ip rozpoznawać. Komu będzie się chciało non stop resetować neo?
gokugo
Cytat
Użyj $_SERVER['REMOTE_HOST'] lub gethostbyaddr($ip) i zbanuj po domenie wszystkich z neo. A później ewentualnie dodawaj wyjątki np. dla zalogowanych użytkowników. Na pewno są też jakieś RBL które blokują wszystkie zmienne ip.


to jak Panowie?? Powie mi ktoś jakiego kodu mam użyć i gdzie wkleić aby zbanować neo questionmark.gif
Pilsener
1. Musisz się dowiedzieć, z jakiej puli pochodzą adresy IP, jeżeli pula to np. 11.22.X.X gdzie x i x to dowolne liczby to niestety - zbanujesz zbyt dużą liczbę osób.
2. Potem pozostaje wyrażenie regularne, lub rozbić adres explodem po "." i sprawdzać każdą część.

Powinno też pomóc:
- ograniczenie dodawania wpisu do np. jednego co godzinę
- ograniczenie długości wpisu
- ograniczenie możliwych do wpisania znaków czy tagów html
- cenzor
- ograniczenie liczby nowych linijek (popularny spam znakami nowej linii)
- ciastka

By zmienić IP trzeba się przelogować, usunięcie/modyfikacja ciacha też nie każdemu jest znana, więc zawsze paru rencistów mniej.
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.