Замена стандартной каптчи в форуме phpBB3
Создав форум на популярном движе phpBB3 я столкнулся с проблемой регистрации роботов на форуме, которые просто оставляли в профиле свои ссылки и ничего не делали. Так или иначе нужно было защитится. Для этого я решил заменить стандартную каптчу на каптчу kCaptcha с сайта captcha.ru
Итак инструкция по интеграции:
- Скачиваем архив с кодом каптчи с сайта.
- Копируем папки util, fonts, kcaptcha_config.php, kcaptcha.php в папку includes/captcha/ от корня папки с форумом.
- Открываем файл kcaptcha_config.php и вносим изменения в такие строки:
- $length = mt_rand(5,6); заменяем на $length = mt_rand(4,6);
- $credits = ‘www.captcha.ru'; заменяем на $credits = ‘домен Вашего сайта';
- Открываем файл includes/ucp/ucp_confirm.php и заменяем в нем код
// Try and grab code for this id and session $sql = 'SELECT code, seed FROM ' . CONFIRM_TABLE . " WHERE session_id = '" . $db->sql_escape($user->session_id) . "' AND confirm_id = '" . $db->sql_escape($confirm_id) . "' AND confirm_type = $type"; $result = $db->sql_query($sql); $row = $db->sql_fetchrow($result); $db->sql_freeresult($result); // If we have a row then grab data else create a new id if (!$row) { exit; } if ($config['captcha_gd']) { include($phpbb_root_path . 'includes/captcha/captcha_gd.' . $phpEx); } else { include($phpbb_root_path . 'includes/captcha/captcha_non_gd.' . $phpEx); } $captcha = new captcha(); $captcha->execute($row['code'], $row['seed']);
на такой:
include($phpbb_root_path . 'includes/captcha/kcaptcha.' . $phpEx); $captcha = new KCAPTCHA(); $sql = 'UPDATE `' . CONFIRM_TABLE . "` SET `code`='".$db->sql_escape($captcha->getKeyString())."' WHERE `session_id` = '" . $db->sql_escape($user->session_id) . "' AND `confirm_id` = '" . $db->sql_escape($confirm_id) . "' AND `confirm_type` = '$type'"; $db->sql_query( $sql );
Все сделано. Можете проверять.