Домашние Картинки разработка веб-сайтов в Челябинске
(351) 777-94-64info@homepictures.ru
/Полезное/Статьи для веб-мастера/Защита форума phpBB от роботов-спамеров

Защита форума phpBB

Форум phpBB один из самых старых и самых распространенных бесплатных форумов в интернете. Он достаточно прост в настройках и легок в освоении как модераторами форума, так и посетителями. Форум достаточно малотребователен к ресурсам веб-сервера и покрывает потребности 99% всех сайтов.

Бесплатность и распространненость форума сыграла с ним злую шутку, сделав его одной из основных целей спамеров и различного рода "оптимизаторов", стремящихся "пропиарить" свои сайты на немодерируемых форумах и заставляющих модераторов тоннами выгребать аккаунты, созданные роботами. Разработчики форума вроде предусмотрели эту возможность и ввели в последних версиях форума регистрацию с подтверждением графическим кодом (каптчей, captcha). К сожалению и этот графический код достаточно простой и легко распознается специальными программами. Изменение этого графического кода (изменение шрифта, фона и т.п.) в движке форума не предусмотрено, т.к. он фактически зашит в скрипт. И все же есть выход, позволяющих затруднить спамерам жизнь (сейчас мы подразумеваем полностью автоматическую регистрацию, когда заполнение поля кода проводит программа, а не вводит человек). Надо подменить код, выдаваемый движком форума, на наш код.

Сделать свою каптчу очень просто, если в php установлена графическая библиотека GD. К счастью она очень широко распространена. Для этого вставляем в файл includes/usercp_confirm.php после строк

// If we have a row then grab data else create a new id
if ($row = $db->sql_fetchrow($result))
{
	$db->sql_freeresult($result);
	$code = $row['code'];
}
else
{
	exit;
}

следующий код

header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header ("Cache-Control: no-cache, must-revalidate");
header ("Pragma: no-cache");
srand(time());
$im = @ImageCreateFromPng (dirname(__FILE__).'/rnumberfon.png');
$text_color = ImageColorAllocate ($im, 255, 255, 64);
$font = imageloadfont(dirname(__FILE__).'/AllegroBT.phpfont');
$W = imagesx($im);
$H = imagesy($im);
$h = imagefontheight($font);
$w = imagefontwidth ($font);
$l = strlen($code);
$x = ($W/$l-$w)/2;
for($i=0; $i<$l; $i++){
  $y = rand(0, $H-$h-1);
  $n = $code{$i};
  ImageString ($im, $font, $x, $y, $n, $text_color);
  $x += ($W/$l);
}
ImagePng ($im);
exit;

Что нам нужно еще? Нам нужны

Имена файлов естественно могут быть названы, как вам удобно. Загрузить их нужно в каталог форума includes.

Все – ваша каптча для форума phpBB готова!

Что можно еще изменить? Немного поколдовав над кодом, можно

Надеемся, что наши рекомендации помогут вам с борьбе со спамерами.

Ссылки по теме:

Модифицированная капча (продолжение статьи)

Защищаем PHPBB от спама и ботов или как изменить стандартное визуальное подтверждение (captcha) в PHPBB

Обсуждение на официальном форуме phpBB. Preventing SPAM - Bots and Humans (на английском языке)