Битрикс проверить зарегистрирован ли пользователь

Для того чтобы проверить наличие пользователя в системе нужно сделать скрытый AJAX запрос.

Как проверить есть ли уже пользователя в Битриксе

Проверять будем по email-адресу. Его и будем передавать. Это может быть форма обратной связи, окно авторизации или даже оформление заказа.
Давайте напишем код:

if (!$USER->IsAuthorized()):
endif;

Весь код можно поместить между этой проверкой – зачем нам проверять авторизованных? 🙂
Пишем далее запрос на jQuery, и передаем значение из поля:

$('body').on('blur', '#soa-property-2', function(){
	var $val = $(this).val();
	if ($val != false) {
		$.ajax({
			url: '/local/templates/template.2020/components/bitrix/sale.order.ajax/order/ajax_email_check.php',
			type: 'post',
			cache: false,
			data: {'email': $val},
		}).done(function(data){
			if (data != false)
				alert('Ваш email уже есть в базе. Пожалуйста, авторизуйтесь!');
		}).error(function(){
			console.log('There was an error');
		});
	}
	return false;
});

Этот код сработает, когда вы перестанете вводить емейл и перейдете к другому полю.
#soa-property-2 – id нашего input.

Теперь посмотрим как выглядит код получения емейла из базы:


require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");

$email = $_REQUEST['email'];
$filter = Array("=EMAIL" => $email);
$sql = CUser::GetList(($by="id"), ($order="desc"), $filter);
if($sql->NavNext(true, "f_"))
{
	$id_user = $f_ID;
	echo $id_user;
}

Возвращаем ID если он есть. Таким образом, можно проверить зарегистрирован ли пользователь у вас на сайте, и, например, попросить его пройти авторизацию, вместо дублирования данных. Стандартно в Битриксе такого механизма (насколько я знаю) нет, но он бы очень пригодился.

А как бы вы использовали такую проверку на проектах?

автор: Dmitriy

З 2011 року займаюся веб-розробкою. Зараз я – PHP Full Stack Developer.
Обговорити ваш проект, а також дізнатися більше про мене ви можете на цьому сайті:
dev.forwww.com

Email: dmitriyribka@gmail.com

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *