ExBB Community » Файловый ExBB » Модификации и дополнения » Мод: Динамическая проверка регистрационной формы (на Ajax)

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

1. luigi - 3 августа 2009 — 10:28 - перейти к сообщению
/!\ Последнюю версию мода (доработанную, на русском языке) Вы можете найти здесь!

Hi,

to check registration form in real time (with AJAX), make this change:

in the front of agreed.tpl add this code:

CODE:
<script type="text/javascript" language="JavaScript">
<!--
function checkUsername(username,area) {
JsHttpRequest.query('jsloader.php?loader=verify', {action: area, value: username}, function(data,text) {
document.getElementById('checkusername').innerHTML=text;
}, false);
}

function checkPassword(password,area) {
JsHttpRequest.query('jsloader.php?loader=verify', {action: area, value: password}, function(data,text) {
document.getElementById('checkpassword').innerHTML=text;
}, false);
}

function checkMail(email,area) {
JsHttpRequest.query('jsloader.php?loader=verify', {action: area, value: email}, function(data,text) {
document.getElementById('checkmail').innerHTML=text;
}, false);
}

//-->
</script>


and change the input line of username, password and e-mail, so:

CODE:
<td class="profilright"><input onblur="checkUsername(this.value,'username');" type="text" style="width: 200px" size="35" maxlength="20" name="inmembername">&nbsp;<span id="checkusername"></span></td>


CODE:
<td class="profilright"><input onblur="checkPassword(this.value,'password');" type="text" size="20" name="password" maxlength="16">&nbsp;<span id="checkpassword"></span></td>


CODE:
<td class="profilright"><input onblur="checkMail(this.value,'email');" type="text" name="emailaddress" style="width: 200px" size="20" maxlength="255"> &nbsp;<span id="checkmail"></span></td>



In the jsloader.php, found

CODE:
if ($fm->input['loader'] === 'karma'){


and replace with

CODE:
if ($fm->input['loader'] === 'verify'){

if ($fm->input['action'] === 'username') {

if ($fm->input['value'] == '') {
echo "<img src='./images/wrong.png' border='0'>&nbsp;<span class='warning'>".$fm->LANG['ErrUsernameEmpty']."</span>";
die();
}

$allusers = $fm->_Read('./data/users.php',FALSE);
$user_id = 0;
foreach ($allusers as $u_id=>$info) {
if ($fm->input['value'] == $info['n']) {
$user_id = $u_id;
break;
}
}
$_RESULT["error"] = 0;
if ($user_id != 0) echo "<img src='./images/wrong.png' border='0'>&nbsp;<span class='warning'>".$fm->LANG['ErrUsernameUsed']."</span>";
else echo "<img src='./images/ok.png' border='0'>&nbsp;<span class='ok'>".$fm->LANG['ErrUsernameOk']."</span>";

} elseif ($fm->input['action'] === 'email') {
if ($fm->_Chek_Mail('value') === FALSE) echo "<img src='./images/wrong.png' border='0'>&nbsp;<span class='warning'>".$fm->LANG['ErrEmailWrong']."</span>";
else echo "<img src='./images/ok.png' border='0'>&nbsp;<span class='ok'>".$fm->LANG['ErrEmailOk']."</span>";

} elseif ($fm->input['action'] === 'password') {
if (strlen($fm->input['value']) < 6 ) echo "<img src='./images/wrong.png' border='0'>&nbsp;<span class='warning'>".$fm->LANG['ErrPasswordWrong']."</span>";
else echo "<img src='./images/ok.png' border='0'>&nbsp;<span class='ok'>".$fm->LANG['ErrPasswordOk']."</span>";
}

} elseif ($fm->input['loader'] === 'karma'){




add this to style.css

CODE:
.warning {color: red;}
.ok {color: green;}


add this line to lang_front_all.php

CODE:
$this->LANG['ErrUsernameOk'] = 'Username available';
$this->LANG['ErrUsernameUsed'] = 'Username already used by other user';
$this->LANG['ErrUsernameEmpty'] = 'Username MUST be filled!';

$this->LANG['ErrEmailOk'] = 'E-mail OK';
$this->LANG['ErrEmailWrong'] = 'E-mail not valid !';

$this->LANG['ErrPasswordOk'] = 'valid password';
$this->LANG['ErrPasswordWrong'] = 'password not valid';


Here a demo:
http://www.bitlibero.com/flatbb/...x.php?s=register

This is a screenshot:
2. yura3d - 3 августа 2009 — 12:38 - перейти к сообщению
Hello! Thank's for your mod, it's a good idea to check up the register data by Ajax, but I've found some moments
First, all input data (from the $fm->input array) is need to be initialized before using in the scripts (initialization methods _Intval(), _String(), etc from include/vars.class.php may be call from $fm object). Second, the nicknames should be checked in lower case (check the example with nickname adMIN on your forum). So, it's neccessary to add this string (file jsloader.php):
CODE:
$fm->input['value'] = $fm->_LowerCase($fm->input['value']);

before this:
CODE:
$allusers = $fm->_Read('./data/users.php',FALSE);

And third, it would be good thing if the check backend code will be splitted to the functions and will be included to the jsloader.php from another file (to improve code utilization and protect garbaging backend loader jsloader.php)

luigi пишет:
FBB_SKINDIR.DEF_SKIN

We are not using these constants in ExBB FM, so, I've deleted this fragment
3. luigi - 3 августа 2009 — 13:18 - перейти к сообщению
yura3d
Well!! many thanks for Your reply.

I hope You can translate my incorrect post in Russian and control my code
4. electron - 3 августа 2009 — 13:33 - перейти к сообщению
Yes, yura3d, please translate this mod in russian if he is so good Подмигивание
5. luigi - 3 августа 2009 — 14:22 - перейти к сообщению
wrong.png


ok.png
6. Borman - 3 августа 2009 — 17:55 - перейти к сообщению
Судя по скриншоту мод полезный, а вот если бы комментсы и наставления для установки, на русском бы были, был бы очень признателен, ибо иностранным языкам не обучен Закатив глазки
7. electron - 3 августа 2009 — 19:02 - перейти к сообщению
насколько я понял, мод выводит сообщения об ошибках при регистрации. т.е. Например, на форуме есть пользователь admin, а вы хотите регнуться с таким же ником. При вводе ника admin в окне регистрации справа окна будет выводиться ошибка типа "такой на форуме уже есть". то же самое будет с паролем и мылом.
редактируются файлы templates\ваш_скин\agreed.tpl , jsloader.php из корневой папки форума, templates\ваш_скин\style.css и language\russian\lang_front_all.php. правда что делать с первым файлом из этого списка я так и не понял, luigi слишком непонятно написал.
файлы wrong.png и ok.png по идее должны просто копироваться в папку templates\ваш_скин\im\
в'общем, как-то так...
8. yura3d - 3 августа 2009 — 19:12 - перейти к сообщению
Borman
electron
Не нужно устанавливать приведённую выше версию мода, в ней есть некоторые недочёты и отсутствует проверка каптчи на Ajax. Несколько позже я выложу доработанный вариант с инструкцией на русском
9. electron - 3 августа 2009 — 19:17 - перейти к сообщению
я пока и не собирался, понял по вашей переписке с luigi что он еще "сырой"
10. luigi - 3 августа 2009 — 19:57 - перейти к сообщению
Borman
electron
sorry, but English is not my native language (I am Italian) and I can read Russian only with Google translator.
11. electron - 4 августа 2009 — 04:17 - перейти к сообщению
luigi , Google translator - Отстой , Promt - the best for you Здорово
12. yura3d - 4 августа 2009 — 11:54 - перейти к сообщению
Вобщем, как и обещал, вот окончательная версия этого мода для ExBB FM 1.0 RC1. Бакэнд и фронтэнд проверки вынесены в отдельные файлы в виде функций, что позволяет в будущем более гибко расширять, дополнять и изменять функциональность мода (например, с лёгкостью можно расширить действие этого мода и на другие формы, например, форму создания темы), а также избегать излишних правок в скриптах и шаблонах при установке дополнительных скинов или необходимости изменения формата вывода сообщений об ошибках. В предложенном далее варианте мода также реализована проверка ввода защитного кода с картинки-каптчи. Данный мод полностью совместим с обновлением каптчи без перезагрузки страницы
Для установки небходимо проделать следующие изменения. Откройте файл jsloader.php, найдите строки:
CODE:
} elseif ($fm->input['loader'] === 'threadstop'){
include('modules/threadstop/threadstop.php');

И под ними разместите строки:
CODE:
} else if ($fm->input['loader'] == 'verify') {
include('include/JsHttpRequest/verify_forms.php');

Далее откройте файл templates/ваш_скин/agreed.tpl, найдите строку:
CODE:
<td class="profilright"><input type="text" style="width: 200px" size="35" maxlength="20" name="inmembername"></td>

И замените её строками:
CODE:
<td class="profilright"><input type="text" style="width: 200px" size="35" maxlength="20" name="inmembername" onblur="verify_register(this);" />
<span id="verify_inmembername"></span></td>

Затем в этом же файле найдите строку:
CODE:
<td class="profilright"><input type="text" size="20" name="password" maxlength="16"></td>

И замените её строками:
CODE:
<td class="profilright"><input type="text" size="20" name="password" maxlength="16" onblur="verify_register(this);">
<span id="verify_password"></span></td>

Далее найдите строку:
CODE:
<td class="profilright"><input type="text" name="emailaddress" style="width: 200px" size="20" maxlength="255"></td>

Замените её строками:
CODE:
<td class="profilright"><input type="text" name="emailaddress" style="width: 200px" size="20" maxlength="255" onblur="verify_register(this);" />
<span id="verify_emailaddress"></span></td>

Найдите фрагмент:
CODE:
<td class="profilright"><input type="text" style="width: 130px" name="captcha" size="13" maxlength="10">

Замените его фрагментом:
CODE:
<td class="profilright"><input type="text" style="width: 130px" name="captcha" size="13" maxlength="10" onblur="verify_register(this);" />
<span id="verify_captcha"></span>

И, наконец, найдите строку:
CODE:
</form>

И разместите под ней строку:
CODE:
<script language="JavaScript" src="javascript/verify_forms.js"></script>

Откройте файл templates/ваш_скин/style.css и в самое его начало добавьте строки:
CODE:
.verify_ok {
padding: 0 0 0 16px;
color: #00cc00;
background: url('im/ok.gif') no-repeat;
}
.verify_wrong {
padding: 0 0 0 16px;
color: #ff0000;
background: url('im/wrong.gif') no-repeat;
}

Если Вам покажется, что для отображения подсказок в правой части страницы не хватает места, Вы можете увеличить его в строке (этот же файл):
CODE:
.profilright { background-color: #F5F9FD; padding:6px; margin-top:1px;width:40%; border-top:1px solid #C2CFDF; }

Здесь 40% - это ширина столбца, содержащего непосредственно формы для ввода данных, справа от форм в этом столбце и будут выводиться предупреждения (см. скриншот ниже). При разрешении экрана 1024x768 оптимальной будет ширина 50%

Теперь откройте файл language/russian/lang_front_register.php, найдите строку:
CODE:
$this->LANG['YouZone'] = 'Введите необходимую разницу в часах относительно времени на форуме, и все время будет отображаться с учетом разницы в вашей временной зоне.';

И разместите под ней строки:
CODE:
$this->LANG['VerifyNameEmpty'] = 'Не введено имя';
$this->LANG['VerifyRuNicks'] = 'Русские ники запрещены';
$this->LANG['VerifyRuOrEn'] = 'Имя должно быть на одном языке';
$this->LANG['VerifyNameProtect'] = 'Имя содержит недопустимые слова';
$this->LANG['VerifyProfanity'] = 'Не используйте ругательства';
$this->LANG['VerifyNameExists'] = 'Такое имя уже есть на форуме';
$this->LANG['VerifyEmailEmpty'] = 'Не указан адрес e-mail';
$this->LANG['VerifyEmailCorrect'] = 'Указан некорректный e-mail';
$this->LANG['VerifyEmailExists'] = 'Такой e-mail уже есть на форуме';
$this->LANG['VerifyPasswordEmpty'] = 'Не указан пароль';
$this->LANG['VerifyPasswordShort'] = 'Короткий пароль';
$this->LANG['VerifyCaptchaEmpty'] = 'Не введён защитный код';
$this->LANG['VerifyCaptchaWrong'] = 'Введён неверный защитный код';

На этом с ручными изменениями всё, теперь распакуйте содержимое прикреплённого архива в корневую папку форума. Архив содержит иконки ok.gif и wrong.gif в папке templates/InvisionExBB/im, если Вы используете другие скины, Вам необходимо скопировать эти иконки в папки Ваших скинов templates/ваш_скин/im
13. electron - 4 августа 2009 — 12:12 - перейти к сообщению
наткнулся на ошибочку :
такой строки
CODE:
<td class="profilright"><input type="text" style="width: 130px" name="captcha" size="13" maxlength="10"></td>

нету в файле templates/ваш_скин/agreed.tpl . есть такая строка, но без "хвоста" </td>
14. yura3d - 4 августа 2009 — 12:19 - перейти к сообщению
electron пишет:
такой строки нету

Это у Вас такой строки нету, поскольку установлен мод обновления каптчи без перезагрузки страницы. Тем не менее, т.к. обещал полную совместимость данных модов, инструкцию поправил Хорошо

Прилагаю также скриншот с примером работы мода
15. electron - 4 августа 2009 — 12:40 - перейти к сообщению
спасибо!

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

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