Автор Тема: [xajax] Проверка занятости логина  (Прочитано 4849 раз)

0 Пользователей и 1 Гость смотрят эту тему.

Оффлайн DARX

  • Global Moderator
  • 7 уровень
  • *****
  • Сообщений: 1559
  • карма: +23/-5
  • Knowledge is Power
    • Просмотр профиля
    • Web-программист
Добрый вечер, форумчане!

Итак, мой первый простой урок в надежде на то, что люди на форуме немного оживятся ;)
Будем учиться асинхронно проверять доступность логина во время регистрации пользователя.

Для начала необходимо изучить процесс и разработать модель регистрации на сайте. Выделим ключевые этапы:
1. Ввод пользователем своего логина
2. Проверка на "опасные" символы
3. В случае успешной проверки - проверка на доступность, то есть нет ли уже пользователя в системе с тем же логином
4. Непосредственно регистрация

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


	
function 
isLoginExists($login){
	
	
/* Здесь проверка регулярным выражением
	
	
...
	
	
*/
	
	
$res $db->("SELECT user_login FROM users WHERE user_login = $login LIMIT 1");
	
	
$data mysql_fetch_assoc($res);
	
	
mysql_num_rows($data) ? return true : return false;
	
}



Как видно, функция принимает один-единственный параметр $login.
Теперь "вживляем" xajax. Для начала его необходимо скачать версию 2.5 с SourceForge.net. Далее, распаковываем архив в папку с нашим скриптом. И начинаем шаманить:

Подключаем библиотеку и создаем объект класса:

require_once 'xajax/xajax.inc.php';
$xajax = new Xajax;


Регистрируем нашу функцию и подготавливаем класс для работы:

$xajax
->registerFunction('isLoginExists');
$xajax->processRequests();


Далее (важно!) необходимо прописать в между тегами <head>...</head> нашей страницы:

$xajax
->printJavascript('xajax');


Ну а дальше - дело техники. Готовим форму на нашей веб-странице:
<html>
<head>
<?
$xajax->printJavascript('xajax');
?>
</head>
<body>
<form>
<input type="text" id="checklogin"><input type="button" onClick="xajax_isLoginExists(document.getElementById('checkLogin').value)">
</form>
</body>
</html>

После этого нам необходимо немного модифицировать нашу функцию, чтобы она могла вернуть результат в виде XML обратно к обработчику xajax.js на стороне клиента:

	
function 
isLoginExists($login){
	
	
$obj = new xajaxResponse();
	
	
$res $db->("SELECT user_login FROM users WHERE user_login = $login LIMIT 1");
	
	
$data mysql_fetch_assoc($res);
	
	
mysql_num_rows($data) ? $obj->addAlert('&#1045;&#1089;&#1090;&#1100; &#1090;&#1072;&#1082;&#1086;&#1081; &#1083;&#1086;&#1075;&#1080;&#1085;!') : return $obj->addAlert('&#1048;&#1084;&#1103; &#1089;&#1074;&#1086;&#1073;&#1086;&#1076;&#1085;&#1086;!');
	
	
return 
$obj;
	
}


Метод addAlert заставляет браузер показать окно сообщения. Вот в принципе и все! Все исходники тут, будут вопросы - задаем.
« Последнее редактирование: 26 Мая 2008, 00:16:46 от Darx »

Оффлайн DARX

  • Global Moderator
  • 7 уровень
  • *****
  • Сообщений: 1559
  • карма: +23/-5
  • Knowledge is Power
    • Просмотр профиля
    • Web-программист
Re: [xajax] Проверка занятости логина
« Ответ #1 : 01 Июня 2008, 19:18:22 »
Хм, ноль реакции... :(

Оффлайн axel

  • Administrator
  • 6 уровень
  • *****
  • Сообщений: 1452
  • карма: +14/-0
    • Просмотр профиля
    • Портфолио
Re: [xajax] Проверка занятости логина
« Ответ #2 : 01 Июня 2008, 19:27:23 »
интересное решение, обязательно попытаюсь применить...
что-то с кодировкой, можешь отредактировать немного статью? комменты
Если вдруг все пойдет не так, крепче сжимай свой кулак, чувак!

Оффлайн DARX

  • Global Moderator
  • 7 уровень
  • *****
  • Сообщений: 1559
  • карма: +23/-5
  • Knowledge is Power
    • Просмотр профиля
    • Web-программист
Re: [xajax] Проверка занятости логина
« Ответ #3 : 01 Июня 2008, 19:31:06 »
В том-то и дело - когда редактирую, все отображается корректно. Леха, глянь в обработчике тега "php"... Попробуй добавить iconv из utf-8 в windows-1251

Оффлайн ser1k

  • 3 уровень
  • ***
  • Сообщений: 101
  • карма: +1/-1
  • 2Boston hustla
    • Просмотр профиля
Re: [xajax] Проверка занятости логина
« Ответ #4 : 04 Июня 2008, 01:05:30 »
Поставил плюс к репе
Reasonable Doubt

Оффлайн DARX

  • Global Moderator
  • 7 уровень
  • *****
  • Сообщений: 1559
  • карма: +23/-5
  • Knowledge is Power
    • Просмотр профиля
    • Web-программист
Re: [xajax] Проверка занятости логина
« Ответ #5 : 04 Июня 2008, 10:15:40 »
Поставил плюс к репе
Плюсы ни к чему в принципе, продолжать писать уроки? Это будет интересно?

Оффлайн Mazikk

  • Кодер
  • 5 уровень
  • ***
  • Сообщений: 579
  • карма: +6/-0
    • Просмотр профиля
    • Хостинг изображений
Re: [xajax] Проверка занятости логина
« Ответ #6 : 04 Июня 2008, 16:43:11 »
Да.
Pics.kz - хостинг изображений

Оффлайн biohazard

  • Кодер
  • 4 уровень
  • ***
  • Сообщений: 308
  • карма: +7/-2
  • work hard - go pro
    • Просмотр профиля
Re: [xajax] Проверка занятости логина
« Ответ #7 : 10 Июня 2008, 17:24:42 »
дэцл оффтоп:

как я понимаю xajax это фреймворк для аякса?
если так, что знакомы ли вы с JsHttpRequest _http://dklab.ru/lib/JsHttpRequest/ ?

После тыкамий по всяческим фв, решил остановиться на нём.
Always code as if the person who ends up maintaining your code is a violent psychopath who knows where you live.

Оффлайн DARX

  • Global Moderator
  • 7 уровень
  • *****
  • Сообщений: 1559
  • карма: +23/-5
  • Knowledge is Power
    • Просмотр профиля
    • Web-программист
Re: [xajax] Проверка занятости логина
« Ответ #8 : 10 Июня 2008, 18:13:31 »
дэцл оффтоп:

как я понимаю xajax это фреймворк для аякса?
если так, что знакомы ли вы с JsHttpRequest _http://dklab.ru/lib/JsHttpRequest/ ?

После тыкамий по всяческим фв, решил остановиться на нём.

Да, это фреймворк, и с разработкой Котерова я знаком :) А что?

Оффлайн biohazard

  • Кодер
  • 4 уровень
  • ***
  • Сообщений: 308
  • карма: +7/-2
  • work hard - go pro
    • Просмотр профиля
Re: [xajax] Проверка занятости логина
« Ответ #9 : 11 Июня 2008, 10:49:49 »
А то, что не кажется ли вам, что для тех вещей, которые вы здесь описали было бы достаточно JsHttpRequest ?

Моё мнение - для простых вещей - использовать простые инструменты.
для сложных - сложные.
Always code as if the person who ends up maintaining your code is a violent psychopath who knows where you live.

Оффлайн DARX

  • Global Moderator
  • 7 уровень
  • *****
  • Сообщений: 1559
  • карма: +23/-5
  • Knowledge is Power
    • Просмотр профиля
    • Web-программист
Re: [xajax] Проверка занятости логина
« Ответ #10 : 11 Июня 2008, 10:59:54 »
Сколько людей - столько и мнений :) Лично мне проще использовать xajax, поэтому использую его возможности. Тем более целью было не показать достоинства или недостатки тех или иных инструментов, а сам принцип технологии. Так сказать, чтобы люди имели общее представление об этом, а уж что использовать в дальнейшем - каждый решает сам для себя.

P.S. Давай уж перейдем на "ты"