ExBB Community » Файловый ExBB » Модификации и дополнения » Мод: Антиспам для гостей при создании тем и сообщений

Страниц (2): [1] 2 »
 

1. yura3d - 30 июля 2009 — 18:38 - перейти к сообщению
В продолжение начинания пользователя altjo решил выложить доработанный вариант модуля антиспама для гостей, который требует от гостей ввода защитного кода с картинки (каптчи) при создании тем или написании сообщений. Для установки необходимо проделать следующие изменения
Откройте файл post.php, найдите строки:
CODE:
function addnewthread() {
global $fm;

И под ними вставьте строку:
CODE:
check_captcha();

Далее в этом же файле найдите строки:
CODE:
function addreply() {
global $fm;

И под ними вставьте строку:
CODE:
check_captcha();

Затем в этом же файле найдите последнюю строку:
CODE:
?>

И над ней вставьте строки:
CODE:
function check_captcha() {
global $fm;

if ($fm->exbb['anti_bot'] && !$fm->user['id'] && (!isset($_SESSION['captcha']) || $fm->_String('captcha') !== $_SESSION['captcha']))
$fm->_Message($fm->LANG['Captcha'], $fm->LANG['CaptchaMes']);
}

Теперь откройте файл language/russian/lang_front_forums.php, найдите строку:
CODE:
$this->LANG['MoveInExistsOk'] = 'Выбранные сообщения успешно выделены в тему "%s"!';

И под ней вставьте строки:
CODE:
/*
captcha
*/
$this->LANG['Captcha'] = 'Защитный код';
$this->LANG['CaptchaDesc'] = 'Введите код, изображённый на картинке<br /><br />Зарегистрируйтесь, чтобы избавиться от необходимости ввода защитного кода';
$this->LANG['CaptchaReload'] = 'Если Вы не видите код на картинке, попробуйте <a href="#" onClick="reload_captcha(); return false;"><b>обновить картинку</b></a>';
$this->LANG['CaptchaMes'] = 'Введён неверный защитный код!<br />Зарегистрируйтесь, чтобы избавиться от необходимости ввода защитного кода.';

Далее откройте файлы post_addnew.tpl и post_reply.tpl (они располагаются в папке templates/InvisionExBB), в каждом из них найдите строки:
CODE:
if ($upload !== 0) {
echo <<<DATA
<tr valign="top">
<td class="pformleft">
{$fm->LANG['FileUpload']}
</td>
<td class="pformright">
{$fm->LANG['FileUploadMax']}{$upload}
<br />
{$fm->LANG['UploadExts']} {$fm->exbb['file_type']}
<br />
<input type="hidden" name="MAX_FILE_SIZE" value="{$upload}">
<input class="input" type="file" size="30" name="FILE_UPLOAD">
</td>
</tr>\n
DATA;
}

И под ними вставьте строки:
CODE:
if ($fm->exbb['anti_bot'] && !$fm->user['id'])
echo <<<DATA
<tr>
<td class="pformleft" valign="top"><b>{$fm->LANG['Captcha']}</b><br />{$fm->LANG['CaptchaDesc']}</td>
<td class="pformright" valign="top">{$fm->LANG['CaptchaReload']}<br /><br />
<img id="captcha" src="regimage.php" alt="Captcha" /><br /><br />
<input type="text" name="captcha" size="20" maxlength="10" />
<script language="JavaScript" src="javascript/reload_captcha.js"></script></td>
</tr>
DATA;

Затем откройте файл templates/InvisionExBB/post_form.tpl, найдите строки:
CODE:
if ($upload !== 0) {
$post_form .= <<<DATA
<tr valign="top">
<td class="pformleft">
{$fm->LANG['FileUpload']}
</td>
<td class="pformright">
{$fm->LANG['FileUploadMax']}{$upload}
<br />
{$fm->LANG['UploadExts']} {$fm->exbb['file_type']}
<br />
<input type="hidden" name="MAX_FILE_SIZE" value="{$upload}">
<input class="input" type="file" size="30" name="FILE_UPLOAD">
</td>
</tr>
DATA;
}

И под ними вставьте строки:
CODE:
if ($fm->exbb['anti_bot'] && !$fm->user['id'])
$post_form .= <<<DATA
<tr>
<td class="pformleft" valign="top"><b>{$fm->LANG['Captcha']}</b><br />{$fm->LANG['CaptchaDesc']}</td>
<td class="pformright" valign="top">{$fm->LANG['CaptchaReload']}<br /><br />
<img id="captcha" src="regimage.php" alt="Captcha" /><br /><br />
<input type="text" name="captcha" size="20" maxlength="10" />
<script language="JavaScript" src="javascript/reload_captcha.js"></script></td>
</tr>
DATA;


Осталось только скачать из прикреплённого архива файл reload_captcha.js и закачать его в папку javascript

На этом всё. Данный мод работает в том случае, если в админке включена защита от регистрации ботов (Админцентр -> Общие настройки -> Безопасность -> Активировать защиту от регистрации ботов? -> да). Все Ваши пожелания и предложения по этому моду оставляйте в данной теме Улыбка
2. luigi - 31 июля 2009 — 10:39 - перейти к сообщению
with this code:

CODE:

<script language="javascript">
function reloadimage() {
var currentTime = new Date()
document.getElementById('captcha').src='regimage.php?ss='+currentTime.getTime();
}
</script>


and

CODE:

<div style="float:left;"><img id="captcha" src="regimage.php" border="0" alt="captcha"></div><div style="vertical-align:middle;" class="button"><input type="button" value="{$fm->LANG['CaptchaReload']}" onClick="reloadimage()" /></div>
<br><br><br><input type="text" name="captcha" size="13" maxlength="10">



it's possible to reload only the Captcha image and not all page
3. yura3d - 31 июля 2009 — 11:42 - перейти к сообщению
luigi
That's good idea Улыбка

Предложенный luigi вариант позволяет перезагружать картинку с кодом (каптчу) без необходимости перезагрузки всей страницы, а это особенно актуально, если картинка сформировалась таким образом, что некоторые символы плохо видны. В первом сообщении уже выложена усовершенствованная версия этого мода, для тех же, кто уже устанавливал данный мод необходимо проделать следующие изменения
Откройте файл language/russian/lang_front_forums.php, найдите строку:
CODE:
$this->LANG['CaptchaDesc'] = 'Введите код, изображённый на картинке<br /><br />Зарегистрируйтесь, чтобы избавиться от необходимости ввода защитного кода';

И под ней разместите строку:
CODE:
$this->LANG['CaptchaReload'] = 'Если Вы не видите код на картинке, попробуйте <a href="#" onClick="reload_captcha(); return false;"><b>обновить картинку</b></a>';

Далее откройте файлы post_addnew.tpl, post_reply.tpl и post_form.tpl (все они находятся в папке templates/InvisionExBB), в каждом из них найдите строки:
CODE:
<tr>
<td class="pformleft" valign="top"><b>{$fm->LANG['Captcha']}</b><br />{$fm->LANG['CaptchaDesc']}</td>
<td class="pformright" valign="top"><img src="regimage.php" alt="Captcha" /><br /><br />
<input type="text" name="captcha" size="20" maxlength="10" /></td>
</tr>

И замените их строками:
CODE:
<tr>
<td class="pformleft" valign="top"><b>{$fm->LANG['Captcha']}</b><br />{$fm->LANG['CaptchaDesc']}</td>
<td class="pformright" valign="top">{$fm->LANG['CaptchaReload']}<br /><br />
<img id="captcha" src="regimage.php" alt="Captcha" /><br /><br />
<input type="text" name="captcha" size="20" maxlength="10" />
<script language="JavaScript" src="javascript/reload_captcha.js"></script></td>
</tr>

Останется только разместить файл reload_captcha.js (скачать его можно здесь) в папке javascript

Как выглядит вариант мода с обновлением картинки, Вы можете видеть на скриншоте ниже
4. electron - 31 июля 2009 — 14:18 - перейти к сообщению
а можно нечто подобное и в окне регистрации сделать? я понимаю, что это не очень сложно и попробовал бы сам, но не соображу куда лезть... Закатив глазки
5. yura3d - 31 июля 2009 — 18:08 - перейти к сообщению
electron пишет:
а можно нечто подобное и в окне регистрации сделать? я понимаю, что это не очень сложно и попробовал бы сам, но не соображу куда лезть... Закатив глазки

Можно. В файле language/russian/lang_front_register.php нужно найти строку:
CODE:
$this->LANG['CaptchaBroken'] = 'Если Вы не видете код на картинке, то перегрузите окно браузера (Ctrl+R)';

И заменить её строкой:
CODE:
$this->LANG['CaptchaBroken'] = 'Если Вы не видете код на картинке, то <a href="#" onClick="reload_captcha(); return false;"><b>обновите картинку с кодом</b></a>';

Далее в файле templates/InvisionExBB/agreed.tpl найти строку:
CODE:
<td class="profilright"><img src="regimage.php" border="0" alt="captcha"></td>

И заменит её строкой:
CODE:
<td class="profilright"><img src="regimage.php" id="captcha" border="0" alt="captcha"></td>

И, наконец, в этом же файле чуть ниже ищем строку:
CODE:
<td class="profilright"><input type="text" style="width: 130px" name="captcha" size="13" maxlength="10"></td>

И заменяем её строками:
CODE:
<td class="profilright"><input type="text" style="width: 130px" name="captcha" size="13" maxlength="10">
<script language="JavaScript" src="javascript/reload_captcha.js"></script></td>

Чтобы обновление каптчи работало, в папке javascript должен размещаться скрипт reload_captcha.js, выложенный в первом сообщении темы
6. electron - 31 июля 2009 — 18:33 - перейти к сообщению
теперь регилка - то что надо. супер! Круто спасибо!
7. Zeg - 31 июля 2009 — 23:21 - перейти к сообщению
За последний вариант (капча при регистрации) - спасибо!
8. altjo - 1 августа 2009 — 15:53 - перейти к сообщению
спс за мод и luigi за идейку, все отлишно работает, пока капча не пробиваема...

ps. интересно, у кого-то еще гости могут отписыватся на форуме, сколько форумов понаходил.. или это у меня только так ))...
9. Borman - 1 августа 2009 — 16:24 - перейти к сообщению

altjo пишет:
у кого-то еще гости могут отписыватся на форуме,
Отписывание гостями не благодарное дело и плохо для развития и статистики форума. Надо народ приучать к культуре общения, где каждый юзвер должен быть представлен хотябы ником, или я не прав!? При имении дела с гостями на форуме он просто превращается в помойку, но это мое мнение Растерялся
10. electron - 1 августа 2009 — 17:01 - перейти к сообщению
altjo пишет:
интересно, у кого-то еще гости могут отписыватся на форуме, сколько форумов понаходил.. или это у меня только так ))..

у меня все форумы для гостей - только рид-онли. раньше была открыта тема "предложения по улучшению форума", но когда ее начали засирать рекламой спамеры - и ее закрыл.
11. mastersound - 1 августа 2009 — 22:50 - перейти к сообщению
я оставил "курилку", но с цензурой на www и http (не помню - кто это отметил... electron or vipraskrutka?...) и всякие секасы. Всё.. За месяц пара постов, и то... как бы информативно незлых, полезных...
12. chex01 - 22 октября 2009 — 10:40 - перейти к сообщению
Большое спасибо! Всё работает на ура!
13. altjo - 18 февраля 2010 — 16:28 - перейти к сообщению
*пожалуй, поделюсь своими маразмами=)
Упрощённая текстовая альтернатива мода "Антиспам для гостей при создании тем и сообщений" (возможно кого-то заинтересует)



Включение/Отключение мода возможно в Админцентре, в разделе "Управление" Модулями

*****
Недостатки:
- пользователи с выключенным JavaScript не смогут оставлять сообщения/создавать темы
- пока не тестировалось в боевых условиях (собственно остановит ли это спам-бота неизвестно=)) *в процессе тестирования

*****
Обновление от 26.02.2010 (только для тех, кто ранее устанавливал этот текстовый мод)
Спойлер (Отобразить)

*****

УСТАНОВКА:
- перенесите папку /txtcode/ из архива, в каталог /modules/ форума.
- следуйте инструкциям, описанным ниже.

Спойлер (Отобразить)
14. altjo - 27 февраля 2010 — 10:08 - перейти к сообщению
Для тех, кто устанавливал оригинальный мод "Антиспам для гостей при создании тем и сообщений" (с графическим защитным кодом)
т.к. отключить этот мод возможно только выключив защиту от регистрации ботов (чего делать не желательно), то можно вынести управление этим модом в "Админцентр"

Спойлер (Отобразить)


-----
В результате если установить оба эти варианта мода (текстовый и графический), то получим такое :'-)


Собственно можно оставить любой один вариант или отключить/включить всё %)
15. Rutir123 - 10 марта 2010 — 19:16 - перейти к сообщению
Полезная вещь! спасибо

Яндекс.Метрика   

Powered by ExBB
[Script Execution time: 0.0257]     [ ]