CAPTCHA для форума phpBB версии 2.0.x

Этот патч (мод) предназначен для защиты форума phpBB от спама ботами посредством улучшения
captcha используемой в форуме. Точнее говоря полная замена captcha используемой в phpBB.

Патч основан на использование кода с http://www.captcha.ru/kcaptcha/. Системные требования смотрите на том же сайте.

Для установки модификации просто скопируйте прилагающиеся файлы в корневую
директорию Вашего форума (замените старые версии файлов).

После этого нужно подправить файл includes/usercp_register.php
следующим образом:
#
#-----[ OPEN ]------------------------------------------
#
includes/usercp_register.php

#
#-----[ FIND ]------------------------------------------
#
$error = FALSE;

#
#-----[ BEFORE, ADD ]------------------------------------------
#
// [begin] KCAPTCHA phpBB 1.0.0
function kcaptcha_code($plength=6)
{
require(dirname(__FILE__).'/kcaptcha_config.php');

if (is_numeric($plength) && $plength)
$length = $plength;

while (true) {
$keystring = '';

for($i = 0; $i < $length; $i++) {
$keystring .= $allowed_symbols{mt_rand(0, strlen($allowed_symbols) - 1)};
}

if (!preg_match('/cp|cb|ck|c6|c9|rn|rm|mm|co|do|cl|db|qp|qb|dp/', $keystring))
break;
}

return $keystring;
}
// [end] KCAPTCHA phpBB 1.0.0

#
#-----[ FIND ]------------------------------------------
#
$code = dss_rand();
$code = substr(str_replace('0', 'Z', strtoupper(base_convert($code, 16, 35))), 2, 6);

#
#-----[ REPLACE WITH ]----------------------------------
#
// [begin] KCAPTCHA phpBB 1.0.0
$code = kcaptcha_code(6);
// [end] KCAPTCHA phpBB 1.0.0

смысл этих исправлений в следующем:
1. функция kcaptcha_code генерирует более трудно определяемую последовательность символов.
2. мы вместо кода генерируемого стандартными средствами phpBB используем свою функцию
$code = kcaptcha_code(6);
3. ну а usercp_confirm.php с помощью класса KCAPTCHA (http://www.captcha.ru/)
генерирует картинку

Класс KCAPTCHA я подверг небольшоу исправлению для работы в phpBB
1. это передача параметра в функцию function KCAPTCHA($code=''){
2. назначения переданных данных внутренней переменной класса $this->keystring = $code;
3. пропускаем генерацию кода если был передан код параметром при создании класса if ($this->keystring == '')

Патч для этих исправлений находится в файле kcaptcha.php.diff

ВНИМАНИЕ: обязательно посетите http://www.captcha.ru/kcaptcha/ это дамашняя страница класса KCAPTCHA
И выкачайте архив, как я понял в нем есть скрипт на php который создает новые шрифты, которые помогут вам
усложнить процесс разбора картинки.
Ну и потом крутите настройки в kcaptcha_config.php

Скачать KCAPTCHA_phpBB-1.0.0.tar.gz