Навигация

Активные участники:

Поиск:

 

Создать или найти статью:

 

Просмотр Captcha в SAEF

Есть случаи, когда необходимо сделать ввод captcha обязательным, чтобы избежать спама. Например, при использовании плагина logmein, который позволяет добавлять материалы на сайт незарегистрированным пользователям.

Приступим.

Метод 1
Где-то на строке 803-830 (увидите там “Check Captcha”) в файле /system/modules/email/mod.email.php. Скопируйте код и подставьте его в mod.weblog_standalone.php примерно строка 62. Все должно выглядеть следующим образом:

// Ya gotta be logged-in billy bob...

        
if ($SESS->userdata('member_id') == 0)
          
{
            
return $OUT->show_user_error('general'$LANG->line('weblog_must_be_logged_in'));        
          
}

        
/** ----------------------------------------
        /**  Check Captcha
        /** ----------------------------------------*/
        
        
global $DB# <-- ADD THIS
        
if ($_POST['weblog_id'== 11# <-- ADD WEBLOG_ID WHERE YOU WANT CAPTCHAS ENABLED
        
{
            
if ( ! isset($_POST['captcha']) || $_POST['captcha'== '')
            
{
                
return $OUT->show_user_error('general', array($LANG->line('captcha_required')));
            
}
            
            $query 
$DB->query("SELECT COUNT(*) AS count FROM exp_captcha
                                 WHERE word='"
.$DB->escape_str($_POST['captcha'])."'
                                 AND ip_address = '"
.$IN->IP."'
                                 AND date > UNIX_TIMESTAMP()-7200"
);
        
            if (
$query->row['count'== 0)
            
{
                
return $OUT->show_user_error('submission', array($LANG->line('captcha_incorrect')));
            
}
        
            $DB
->query("DELETE FROM exp_captcha
                        WHERE (word='"
.$DB->escape_str($_POST['captcha'])."'
                        AND ip_address = '"
.$IN->IP."')
                        OR date < UNIX_TIMESTAMP()-7200"
);
        
}

        
/** ----------------------------------------
        /**  Prep data for insertion
        /** ----------------------------------------*/ 


1. Обратите внимание, что здесь

if ($_POST['weblog_id'] == 11)

там, где 11 должен быть номер веблога

Если веблогов много, то поступаем так
if ($_POST['weblog_id'] == 11 || $_POST['weblog_id'] == 12 || $_POST['weblog_id'] == 13)

(по материалам http://boliev.com/archives/395)

2. В настройках Admin › System Preferences › Captcha Preferences

Поставьте Require captcha with logged-in members? Yes

Источник: http://eeclub.ru/forum/viewreply/1107/

Метод 2
Попробовать использовать расширение SAEF Captcha от Denik

Раздел:SAEF

Категории: