Главная > CMS > ruBook (com_rubook) на Joomla 1.0 — защита от спама

ruBook (com_rubook) на Joomla 1.0 — защита от спама

Интеграция kcaptcha.
Отключаем в настройках ruBook стандартную защиту. Далее правятся файлы. (Проверялось на версии 0.4.3.)
1. /components/com_rubook/rubook.html.php
после:

<?php
    if ( is_imgcode() ) {
?>
  <tr>
    <td><?php echo _COM_RUBOOK_LANG_FIELD_ENTER_CODE; ?></td>
    <td><input type="text" class="inputbox" name="info[imgcodetext]" maxlength="7" style="width: 130px" /></td>
    <td colspan="2"><img src="<?php echo $GLOBALS['mosConfig_live_site']; ?>/components/com_rubook/imgcode.php"></td>
  </tr>
<?php
    }
?>

дописываем:

  <tr>
    <td><?php echo _COM_RUBOOK_LANG_FIELD_ENTER_CODE; ?></td>
    <td><input type="text" class="inputbox" name="info[keystring]" maxlength="7" style="width: 130px" /></td>
    <td colspan="2"><img src="<?php echo $GLOBALS['mosConfig_live_site']; ?>/imgcode/?<?php echo session_name()?>=<?php echo session_id()?>" /></td>
  </tr>

<?php echo $GLOBALS['mosConfig_live_site']; ?>/imgcode/ — путь к файлам kcaptcha, т.е. в примере распаковываем содержимое архива в папку imgcode в корне сайта.
2. components/com_rubook/rubook.class.php
после

        /** Проверка кода защиты */
        if ( ( $GLOBALS['mosRuBookConfig_imgcode'] == 1 ) and ( $GLOBALS['mosRuBookUser_admin'] != 1 ) ) {
            if ( ! ( $_SESSION['img_code'] == md5( $object->imgcodetext ) ) ) {
                $object->_error = _COM_RUBOOK_LANG_CODE_BAD;
                return false;
            }
        }

дописываем:

        if (isset($_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] != $object->keystring) {
                $object->_error = _COM_RUBOOK_LANG_CODE_BAD;
                return false;
        }

после:

$object->imgcodetext = ( isset( $info['imgcodetext'] ) ) ? $info['imgcodetext'] : '';

дописываем:

$object->keystring = ( isset( $info['keystring'] ) ) ? $info['keystring'] : '';

после:

$this->imgcodetext = ( isset( $info['imgcodetext'] ) ) ? $info['imgcodetext'] : '';

дописываем:

$this->keystring = ( isset( $info['keystring'] ) ) ? $info['keystring'] : '';

Проверка значения параметра REFERER.
Т.е. адреса страницы, откуда выполнен переход. Если этот параметр пустой значит запрос к форме выполняется напрямую.

        if ($_SERVER["HTTP_REFERER"] == '') {
            $object->_error = "Spam Detected!";
            return false;
        }

Проверка, не содержит ли коммент ссылку
Лучше наверное добавить какую-то регулярку для проверки на наличие ссылок, но сейчас поступим более параноидально:

        if (preg_match("/http/i", $object->text)) {
            $object->_error = "Links in the comments are not allowed!";
            return false;
        }
Categories: CMS Tags:
  1. Ден
    3 июля,2013 в 07:05 | #1

    чтото не вижу архива с каптчей

  2. Макс
    3 ноября,2012 в 22:13 | #2

    Спасибо, очень помогла ваша статья!

Похожие публикации