0 Пользователей и 1 Гость просматривают эту тему.
  • 3 Ответов
  • 1972 Просмотров
*

stalkervp

  • Осваиваюсь на форуме
  • 44
  • 3
AJAX проверка логина и email
« : 17.04.2013, 22:58:50 »
В общем прошу сильно не пинать гуру java, ajax`a  и т.п. (потому как сам несколько валенок в этом, и буду благодарен за критику).
Готового решения не нашел и поэтому как говорится "я его слепила из того что было" (а было это - http://joomla-book.ru/development/creating-component/ajax-login-check-registration). Итак:
1. Добавляем скрипт в два файла (у меня они в шаблоне)
    а)   \templates\ххххххх\html\com_virtuemart\user\edit.php   (примерно в строку 50 стразу за тегом </script>)
    б)   \templates\ххххххх\html\com_virtuemart\user\edit_address.php (примерно в строку 70 стразу за тегом </script>)

Код
<script type="text/javascript">
<!--
window.addEvent("domready", function(){

// id проверяемого поля
document.id("username_field").addEvent("blur", function(){
//проверка на корректность заполнения поля
//стандартная валидация добавляет class invalid,
//если поле заполнено неправильно.
var regex=/invalid/g;
if (regex.test(this.get('class')) || this.value.length < 2) return;

//удаляем элемент в котором выводится результат если установлен
if(this.getNext('div')) this.getNext('div').destroy();

//создаем новый элемент для вывода сообщения результата проверки
var myElement = new Element('div');
myElement.inject(this, 'after');
myElement.addClass('login_response_txt');

 
//создаем AJAX запрос для проверки логина
var myRequest = new Request({
   url: 'index.php?option=com_users&task=check.name&format=raw',
   method: 'get',
   onRequest: function(){
       myElement.set('text', 'проверка');
   },
   onSuccess: function(responseText){
       myElement.set('text', responseText);
myElement.addClass('ok');
       if (responseText == 'занят') {
myElement.addClass('notok');
myElement.getPrevious('input').addClass('invalid');
       }
   },
   onFailure: function(){
       myElement.set('text', 'ошибка');
   }
});
//посылаем запрос с данными
myRequest.send('name='+this.value)
})

// id проверяемого поля
document.id("email_field").addEvent("blur", function(){
//проверка на корректность заполнения поля
//стандартная валидация добавляет class invalid,
//если поле заполнено неправильно.
var regex=/invalid/g;
if (regex.test(this.get('class')) || this.value.length < 2) return;
 
//удаляем элемент в котором выводится результат если установлен
if(this.getNext('div')) this.getNext('div').destroy();

//создаем новый элемент для вывода сообщения результата проверки
var myElement = new Element('div');
myElement.inject(this, 'after');
myElement.addClass('email_response_txt');
 
//создаем AJAX запрос для проверки email
var myRequest = new Request({
   url: 'index.php?option=com_users&task=check.email&format=raw',
   method: 'get',
   onRequest: function(){
       myElement.set('text', 'проверка');
       myElement.addClass('ajax-loader');
   },
   onSuccess: function(responseText){
       myElement.set('text', responseText);
myElement.addClass('ok');
       if (responseText == 'занят') {
myElement.addClass('notok');
myElement.getPrevious('input').addClass('invalid');
       }
   },
   onFailure: function(){
       myElement.set('text', 'ошибка');
   }
});
//посылаем запрос с данными
myRequest.send('email='+this.value)
})

})
//-->
</script>


2. создаем файл с именем check.raw.php в папке \components\com_users\controllers  (вот тут странно, пытался создать этот файл в контроллере VirtueMart, url перенаправлял на компонент VirtueMart, но почему то не заработало). Код:


Код
<?php
 
defined('_JEXEC') or die('Restricted access');
 
jimport('joomla.application.component.controller');
 
class UsersControllerCheck extends JController
{
/**
* Метод проверки имени пользователя
*/
public function name()
{
 
$name = JRequest::getVar('name', null, 'GET');
 
if ($name) {
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('id');
$query->from('#__users');
$query->where('username = '. $db->quote($name));
$db->setQuery($query);
if ($db->loadResult()) {
die('занят');
} else {
die('свободен');
}
 
}
}

public function email()
{
 
$email = JRequest::getVar('email', null, 'GET');
 
if ($email) {
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('id');
$query->from('#__users');
$query->where('email = '. $db->quote($email));
$db->setQuery($query);
if ($db->loadResult()) {
die('занят');
} else {
die('свободен');
}
 
}
}

}


3. Добавляем стили (у меня это \templates\хххххххх\css\template.css)

Мой пример стилей:

Код
.login_response_txt
{
font-size: 10px;
right: 55px;
top: 3px;
float: right;
position: relative;
width: 10px;
font-style:italic;
}

.email_response_txt
{
font-size: 10px;
right: 55px;
top: 3px;
float: right;
position: relative;
width: 10px;
font-style:italic;
}

.login_response_txt.ok,
.email_response_txt.ok
{
color: #090;
right: 55px;
}

.login_response_txt.notok,
.email_response_txt.notok
{
color: #F00;
right: 35px;
}

#username_field.invalid,
#email_field.invalid
{
border-color:#FF0000 !important;
}

*

borro

  • Живу я здесь
  • 1281
  • 21
  • желаю вам счастья
Re: AJAX проверка логина и email
« Ответ #1 : 25.04.2013, 17:38:32 »
вы бы понятнее написали, проверку на что вы осуществляете?  ^-^
*

bodr1982

  • Захожу иногда
  • 23
  • 3
Re: AJAX проверка логина и email
« Ответ #2 : 13.05.2016, 21:16:49 »
На Joomla 3.5.1 не работает (500 ошибка). Я так понимаю надо править check.raw.php в контроллере под 3-ю Joomla. Может кто подскажет что подправить надо?
*

robert

  • Профи
  • 4075
  • 376
Re: AJAX проверка логина и email
« Ответ #3 : 14.05.2016, 00:37:22 »
странно, пытался создать этот файл в контроллере VirtueMart, url перенаправлял на компонент VirtueMart, но почему то не заработало
url: 'index.php?option=com_users&task=check.email&format=raw',

На Joomla 3.5.1 не работает (500 ошибка). Я так понимаю надо править check.raw.php в контроллере под 3-ю Joomla. Может кто подскажет что подправить надо?
class UsersControllerCheck extends JControllerLegacy
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

GENIUS VM AJAX SEARCH регистронезавизимый поиск

Автор lustoff

Ответов: 16
Просмотров: 2190
Последний ответ 09.04.2017, 23:13:44
от ArchibaldIron
Universal AJAX Live Search + VM3

Автор One

Ответов: 4
Просмотров: 263
Последний ответ 27.10.2016, 12:58:35
от gartes
AJAX пагинация категории и кнопка в корзину

Автор stydent

Ответов: 3
Просмотров: 684
Последний ответ 21.09.2015, 15:11:56
от stydent
AJAX запрос в виртуал марте

Автор gartes

Ответов: 1
Просмотров: 367
Последний ответ 12.09.2013, 12:37:26
от Fedor Vlasenko
Откуда выводится ссылка на AJAX.googleapis.com в хедере

Автор rafaello9

Ответов: 3
Просмотров: 775
Последний ответ 24.04.2013, 21:58:00
от gangstarcj