Просмотр Captcha в SAEF
Есть случаи, когда необходимо сделать ввод captcha обязательным, чтобы избежать спама. Например, при использовании плагина logmein, который позволяет добавлять материалы на сайт незарегистрированным пользователям.
Приступим.
Метод 1
Где-то на строке 803-830 (увидите там “Check Captcha”) в файле /system/modules/email/mod.email.php. Скопируйте код и подставьте его в mod.weblog_standalone.php примерно строка 62. Все должно выглядеть следующим образом:
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
Приступим.
Метод 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