RSS

zapisz się: RSS Artykuły

szukaj

Dodatkowa ochrona przed spamowaniem komentarzy w sNews 1.7

Komentarze 4

Aktualizacja z dnia 25 sierpnia 2010 roku. Przeczytaj ten wpis, aby poznać nową wersję modu antyspamowego dla sNews.

Znak stop spamowiOd jakiegoś czasu zdarza się, że na blogu w komentarzach pojawia się spam. Roboty spamerskie atakują bloga. Za pierwszym razem miałem po jednym spamerskim komentarzu w każdym wpisie. Musiałem je usunąć ręcznie. Na szczęście jeszcze nie mam tak dużo wpisów, więc nie zeszło mi długo. Jednak w późniejszym czasie zdarza się, że czasem jakiś spamerski komentarz się pojawi.

Aby formularz komentarzy miał lepsze zabezpieczenie wykorzystam dodatek stworzony przez Matt'a Jones'a. Już tłumacze na czym on polega. Domyślnie równanie w formularzu wyświetlone jest za pomocą tekstu. Dlatego roboty są w stanie go odczytać. Dodatek, który zaraz przedstawię sprawia, że równanie jest wyświetlane za pomocą obrazka - jest to utrudnienie dla botów. Człowiek bez problemu widzi równanie.

Zatem do rzeczy. Najpierw tworzymy plik "capgen.php" oraz umieszczamy w nim następujący kod:

<?php
$mathkey = "6485009"; // zmień tę wartość na dowolny ciąg cyfr
$key     = strip_tags($_GET['key']);
$decode = base64_decode($key);
$keys    = explode($mathkey, $decode);

$x = $keys[0];
$y = $keys[1];

$my_img = imagecreate(80, 20);
imagesavealpha($my_img, true); 
$trans_color = imagecolorallocatealpha($my_img, 0, 0, 0, 127); 
imagefill($my_img, 0, 0, $trans_color);
$text_color = imagecolorallocate($my_img, 0, 0, 0);
imagestring( $my_img, 5, 10, 3, "$x + $y =",
  $text_color);
imagesetthickness ($my_img, 5);

header("Content-type: image/png");
imagepng($my_img);
imagedestroy($my_img);
?>

Należy pamiętać, aby w powyższym kodzie zmienić ciąg cyfr na inny - jaki Ci się podoba. Następnie wysyłamy ten plik do folderu, w którym mamy zainstalowane naszego CMSa. Następnie robimy kopię zapasową pliku "snews.php". Zmieniamy w nim funkcję "mathCaptcha" na poniższą:

// MATH CAPTCHA
 function mathCaptcha() {
 $mathkey = "6485009";// upewnij się, że ta liczba zgadza się z tą podaną w pliku capgen.php
 $x = rand(1, 9);
 $y = rand(1, 9);
 $_SESSION[_SITE.'mathCaptcha-digit'] = $x + $y;
 $math = '
 <p><label for="calc">
 * '.l('math_captcha').':
 </label><br />';
 //$math .= $x.' + '.$y.' = ';
 $key = base64_encode($x.$mathkey.$y);
 $math .= '<img src="'._SITE.'capgen.php?key='.urlencode($key).'" alt="" />';
 $math .= '
 <input type="text" name="calc" id="calc" />
 </p>';
 return $math;
 }

Należy pamiętać, aby wyżej podświetlony ciąg cyfr był taki sam jak w pliku "capgen.php". Wysyłamy plik "snews.php" na serwer i gotowe. Powinniśmy mieć obrazek z równaniem zamiast zwykłego tekstu równania.

Podziel się

Bookmark and Share

  1. Kaito
    Kaito napisał(a):

    Super. To jest bardzo przydatne na takich stronach jak ta, gdzie odpowiedź pojawia się od razu. Mi na razie wystarcza mod akceptacji komentarza przez administratora.

    Z automatu nic się nie dziej. Ale na jednej ze stron luknę jak to śmiga...

  2. Matt
    Matt napisał(a):

    Hi there, just a note, but this version is old and inefficient, please use this one, it is much better;

    http://www.mdj.us/snews-cms/hacks-mods/image-math-hybrid-captcha-version-2-vastly-improved/

  3. Paweł Landzberg
    Paweł Landzberg napisał(a):

    Thanks for advice. I have noticed that there is a newer version but first I wanted to try this one and for now it's working. But in near future I'll add new wersion of comments antispam.

  4. Dominik
    Dominik napisał(a):

    A wie ktoś może po co sNews ma ukryte pole IP w komentarzach i formularzu kontaktowym? Nie zauważyłem, żeby zapisywał IP w bazie danych, w emailach też ich nie wysyła.

Komentowanie zostało zablokowane