Защита от спама сейчас — просто необходимый элемент любого сайта, где присутствует возможность заполнения каки-либо форм (будь то форма для обратной связи с автором, либо форма добавления ссылки в каталог ссылок или еще что-то подобное). Одним из наиболее эффективных способов противодействия появлению спама на веб-страницах является CAPTCHA (расшифровывается как Completely Automated Public Turing test to tell Computers and Humans Apart) т.е. одна из разновидностей . Пример такого теста в достаточно жеcтком для пользователя варианте :) приведен на картинке слева.
Порядок установки CAPTCHA в новостной скрипт CuteNews.
- Добавляем в файл data/Default.tpl в код формы ввода комментария $template_form (примерно 62-ая строка):
data/Default.tpl
-
Текст на картинке: <input type='text' name='captcha' />
-
<img src='captcha.php' alt='picture with code' /><br />
Полная версия кода формы у меня получилась такая:
-
$template_form = <<<HTML
-
<table border="0" width="500" cellspacing="0" cellpadding="2" style="margin-bottom: 20px">
-
<thead style="background: rgb(239,244,11); text-align: center">
-
<tr><td colspan="2"><span style="font-size: 12pt">Оставить комментарий</span></td></tr>
-
</thead>
-
<tr><td height="5" colspan="2"></td></tr>
-
<tr><td width="20%">Имя:</td><td><input type="text" name="name" tabindex="1"></td></tr>
-
<tr><td>E-mail:</td><td><input type="text" name="mail" tabindex="2"></td></tr>
-
<tr><td colspan="2"> <textarea style="width: 100%" rows="8" name="comments" tabindex="3"></textarea><br /></td></tr>
-
<tr><td colspan="2"><div style="margin-top: 10px; float: left">Введите цифры с картинки: <input tabindex="4" type="text" name="captcha" size="10" /></div>
-
<img src="captcha.php" alt="picture with code" valign="middle" /></td></tr>
-
<tr><td colspan="2" align="center"><input tabindex="5" type="submit" name="submit" value="Добавить комментарий" accesskey="s"></td></tr></table>
-
HTML;
-
- Положить в корень сайта файлы captcha.php и Comic_Sans_MS.ttf. Взять их можно .
- Поправить файл inc/shows.inc.php, добавив в него начиная примерно со 172-ой строки следующее:
inc/shows.inc.php
-
@session_start();
-
if (! (isset($_SESSION["captcha"]) && $_SESSION["captcha"]===$_POST["captcha"]) ) {
-
echo "<div align=\"center\" style=\"font-size: 16px; color: red\">
-
Текст с картинки введен НЕВЕРНО<br/><br/>
-
<a href=\"javascript:history.go(-1)\">Вернуться назад</a></div>";
-
$CN_HALT = TRUE;
-
break 1;
-
}
-
unset($_SESSION["captcha"]);
-
- Поудалять из файла site/data/comments.txt спам-комментарии, которые попали туда до того, как была прикручена captcha :)
Чтобы эта версия captcha работала, PHP должен быть сконфигурирован со следующими опциями (актуально для версии 5.3.0):
−−with-gd=/usr
−−enable-gd-native-ttf
−−with-freetype-dir=/usr
−−with-zlib
−−with-zlib-dir=/usr
Путь к библиотекам (/usr), естественно, следует заменить так, чтобы он был актуален для Вашей системы.
Популярность: 1%

Комментариев: 7
Чтобы быть всегда в курсе здесь происходящего, Вы можете подписаться на RSS feed для комментариев на эту заметку.
Все сделал как тут написано, работает. но есть косяк. вот что пишет после нажатия кнопки Добавить.
Warning: fopen(/home/matri177/domains/progressdk.ru/public_html/index_news/data/flood.db.php) [function.fopen]: failed to open stream: Permission denied in /home/matri177/domains/progressdk.ru/public_html/index_news/inc/functions.inc.php on line 334
Warning: fclose(): supplied argument is not a valid stream resource in /home/matri177/domains/progressdk.ru/public_html/index_news/inc/functions.inc.php on line 345
Warning: fopen(/home/matri177/domains/progressdk.ru/public_html/index_news/data/ipban.db.php) [function.fopen]: failed to open stream: Permission denied in /home/matri177/domains/progressdk.ru/public_html/index_news/inc/shows.inc.php on line 145
Warning: fwrite(): supplied argument is not a valid stream resource in /home/matri177/domains/progressdk.ru/public_html/index_news/inc/shows.inc.php on line 167
Значит в functions.inc.php в строке 334 идет попытка обращения к какому-то ресурсу, доступ к которому для скрипта ограничен. Более подробно сказать не могу, так как доступа к Вашему хостингу не имею — надо смотреть код.
Огромное вам спасибо! Все сделал, все работает!
Спасибо большое, очень выручили)
День добрый! А можно хотя бы пример самого файла shows.inc.php. Понятно что вроде все разжевано, но как то не клеится… СПасибо
Можно, вот: http://avz.org.ua/wp/wp-content/uploads/2011/02/shows_inc_php.txt
не отображается картинка капи(