Битрикс – проверка почты пользователя в любой форме на сайте

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

Создадим form.php файл с поместим в него простую форму и создадим файл checkMail.php и оставим пока пустым.

//html
<form method="post" action="" class="">
    <input id="checkEmail" type="text" name="email" value="" id="email" />
    <input type="submit" value="" id="submitButton" />
</form>
<div id="answer"></div>

При заполнении input email – должна пройти проверка – есть ли такой в базе. проверку повесим на js событие blur (то есть когда фокус убран с поля для ввода). Тут можно выбрать любое другое подходящее событие. При возникновении события, мы с помощью ajax проверим почту и результат выведем прямо в div id=”answer”.

//js
    var checkEmail = document.getElementById("checkEmail");
    checkEmail.addEventListener("blur", function (event) {
        var mail = document.getElementById('checkEmail').value;

        $.ajax({
            type: "POST",
            url: "/checkMail.php",
            cache: false,
            data: ({
                "mail": mail,
            }),
            success: function (html) {
                $("#answer").html(html);
            }
        });
    }, true);

Форма у нас есть, событие проверки есть – теперь нужно написать саму проверку. Открываем файл checkMail.php и записываем в него следующее:

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

$arFilter['EMAIL'] = $_POST['mail']; 

$regMail = "";

$dbUsers = CUser::GetList($sort_by, $sort_ord, $arFilter);
while ($arUser = $dbUsers->Fetch()) {
    $usermail = $arUser["EMAIL"];
    $userid = $arUser['ID'];
}

if ($usermail == $arFilter['EMAIL']) {
    $regMail = $userid . " Пользователь с такой почтой - есть<br>";
} else {
    $regMail = $userid . " Пользователя с такой почтой - нет<br>";
}

echo $regMail;

Таким образом, мы на “лету” определяем есть ли email в нашей базе данных и далее действуем по обстоятельствам.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *