ExBB Community » Файловый ExBB » Модификации и дополнения » Мод: Текстовое подтверждение при регистрации

Страниц (7): [1] 2 3 4 5 6 7 »
 

1. Александр Михалицын - 20 мая 2009 — 14:54 - перейти к сообщению
Назначение мода : Добавляет текстовое подтверждение при регистрации (для защиты от спам-ботов), в админке можно задавать, как вопросы, так и ответы.
Автор мода : Александр Михалицын < admin@systemnik.net.ru > http://systemnik.net.ru
Версия : 1.0.0
Версия ExBB : RC1 , RC1.01, Final

Установка : (Отобразить)


ToDo: сделать нормальный модуль для управления в админке
2. yura3d - 20 мая 2009 — 20:16 - перейти к сообщению
Мод действительно полезный, несколько его переделал, убрал возможность вывода нескольких вопросов (т.к. на мой взгляд это уже излишне), зато добавил вывод случайного вопроса из базы вопросов. Также (и это очень важно) сделал регистро-независимую проверку ответов на вопросы (ведь человек заранее не знает, в каком регистре набирать ответ).

Для модификации открываем файл agreed.tpl, находим строки:
CODE:
if ($fm->exbb['text_confirmation'] === TRUE)
{
require('modules/text_confirmation/config.php');
foreach ($text_confirmation_config as $key=>$value)
{
echo <<<DATA
<tr>
<td class="profilleft"><b>{$value['title']}</b><br /><span class="desc">{$value['description']}</span></td>
<td class="profilright"><input type="text" style="width: 130px" name="confirm_question_{$key}" size="13" maxlength="10"></td>
</tr>
DATA;
}
}

Заменяем их этими строками:
CODE:
if ($fm->exbb['text_confirmation'] === TRUE)
{
require('modules/text_confirmation/config.php');
$_SESSION['text_confirm'] = $value = $text_confirmation_config[array_rand($text_confirmation_config)];
echo <<<DATA
<tr>
<td class="profilleft"><b>{$value['title']}</b><br /><span class="desc">{$value['description']}</span></td>
<td class="profilright"><input type="text" style="width: 130px" name="confirm_question" size="13"></td>
</tr>
DATA;
}


Теперь открываем файл register.php, находим строки:
CODE:
if ($fm->exbb['text_confirmation'] === TRUE)
{
require('modules/text_confirmation/config.php');
foreach ($text_confirmation_config as $key=>$value)
{
if ($fm->input['confirm_question_' . $key] !== $value['answer'])
{
$fm->_Message($fm->LANG['Registration'], $fm->LANG['TextConfirmationError']);
}
}
}

И заменяем их этими строками:
CODE:
if ($fm->exbb['text_confirmation'] === TRUE)
{
$value = $_SESSION['text_confirm'];
if ($fm->_LowerCase(trim($fm->input['confirm_question'])) !== $fm->_LowerCase($value['answer']))
{
$fm->_Message($fm->LANG['Registration'], $fm->LANG['TextConfirmationError']);
}
}


Вопросы добавляются вручную в файл modules/text_confirmation/config.php в следующем формате:
CODE:
<?php
$text_confirmation_config = array(
//Пример вопроса
array(
'title' => 'Вопрос',
'description' => 'Описание',
'answer' => 'Ответ'
),
array (
'title' => 'Вопрос 2',
'description' => 'Описание 2',
'answer' => 'Ответ 2'
)
);
?>


На этом всё. И поскольку тема целиком и полностью посвящена этому моду, внесу свои предложения для Александра Михалицына по дальнейшему развитию. Опцию Разрешить текстовое подтверждение при регистрации? со страницы конфига в админке лучше переместить на страницу управления модулями, и там же поставить ссылку на настройку модуля (сделать редактирование вопросов через админку крайне важно, тем более что это совсем не сложно). Также заметил интересную особенность поля ответа на вопрос:
CODE:
<td class="profilright"><input type="text" style="width: 130px" name="onfirm_question_{$key}" size="13" maxlength="10"></td>

Мало того, что maxlength="10", так ещё номер вопроса {$key} в явном виде доступен. Я в своей модификации сохраняю элемент массива текущего вопроса в сессию, и тогда номер вопроса не виден, и в файле register.php при проверке ответа можно даже не подключать лишний раз файл с базой вопросов.
3. Defenderyk - 14 июня 2009 — 21:00 - перейти к сообщению
вот блин система "новых сообщений"
я даже и не знал об этой теме, т.к в новых у меня она не значилась.

надо попробовать и думаю стоит включить в дефолтную сборку
4. chex01 - 25 октября 2009 — 20:20 - перейти к сообщению
Класс! Просто супер!
НО есть вопрос. Как сделать, что бы была динамическая проверка регистрационной формы на Ajax?
Подскажите пожалуйста.
5. lisiycat - 25 октября 2009 — 21:59 - перейти к сообщению
chex01 пишет:
НО есть вопрос. Как сделать, что бы была динамическая проверка регистрационной формы на Ajax?


Вот тут написано http://exbb.info/community/topic...86887#1249386887
6. Zamorskiy - 18 января 2011 — 18:24 - перейти к сообщению
хооорший таки мод, автору спасибо
7. gudman - 13 декабря 2013 — 21:43 - перейти к сообщению
Хороший мод! Автору спасибо! поставил вместо глючной каптчи! Хорошо
8. gudman - 19 декабря 2013 — 07:38 - перейти к сообщению
yura3d пишет:
И заменяем их этими строками:
CODE:
if ($fm->exbb['text_confirmation'] === TRUE)
{
$value = $_SESSION['text_confirm'];
if ($fm->_LowerCase(trim($fm->input['confirm_question'])) !== $fm->_LowerCase($value['answer']))
{
$fm->_Message($fm->LANG['Registration'], $fm->LANG['TextConfirmationError']);
}
}

в предложеном Юрой варианте всплывает такой нотис:
CODE:
PHP Notice: Undefined index: confirm_question in /www/jeepgarage.ru/forum/register.php on line 60

может кто подскажет как исключить?
9. Parapsixolog - 25 марта 2014 — 14:40 - перейти к сообщению
yura3d пишет:
Опцию Разрешить текстовое подтверждение при регистрации? со страницы конфига в админке лучше переместить на страницу управления модулями, и там же поставить ссылку на настройку модуля (сделать редактирование вопросов через админку крайне важно, тем более что это совсем не сложно).


Сколько существует этот мод, и так всё не доделан. А жаль, полезная вещь. И к нему ещё бы Динамическая проверка регистрационной формы (на Ajax) прикрутить, вообще замечательно было бы.
10. BON - 25 марта 2014 — 15:01 - перейти к сообщению
а какой в этом смысл?
11. Parapsixolog - 25 марта 2014 — 15:05 - перейти к сообщению
что бы было видно, что ответ на вопрос верный, это про динамическую проверку. ну а про редактировании вопросов в админке и так все понятно.
12. SanGer - 21 мая 2016 — 21:27 - перейти к сообщению
У меня он вывел вот что:

CODE:
syntax error, unexpected T_STRING, expecting ')' in путь до скрипта/modules/text_confirmation/config.php on line 7
Как поправить можно?
13. electron - 22 мая 2016 — 04:40 - перейти к сообщению
ругается на закрывающую скобку. если есть закрывающая - к ней обязательно должна быть открывающая пара. смотри, мож где-то случайно стер. тут array ( к примеру. или как вариант, может ругаться на лишний пробел вначале указанной в ошибке строки.
14. SanGer - 2 июня 2016 — 10:56 - перейти к сообщению
electron пишет:
мож где-то случайно стер. тут array ( к примеру. или как вариант, может ругаться на лишний пробел вначале указанной в ошибке строки.


так в этом файле только надо вопрос написать и ответ... Как там можно что то накосячить? ) Перезалью, посмотрю будет ли появляться ошибка... Потом отпишусь Хм

Спасибо большое Electron Хорошо В очередной раз помог Подмигивание

Заменил файл config.php... Всё заработало...
15. SanGer - 4 июня 2016 — 10:50 - перейти к сообщению
Хм опять ботинок зарегился... Что делать? Вопрос изменить?

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

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