Перейти к содержимому

Регистрация покупателей - форма, подтверждение, свои поля

Настраиваем регистрацию на сайте: форму, подтверждение по почте и поведение покупателя, который оформляет заказ без учётной записи.

Решение

Ставим форму регистрации на страницу:

$APPLICATION->IncludeComponent('bitrix:main.register', '', [
'USER_PROPERTY' => ['UF_PHONE'], // свои поля учётной записи
'USER_PROPERTY_NAME' => 'Дополнительно',
'SEF_MODE' => 'N',
'SHOW_FIELDS' => ['EMAIL', 'NAME', 'LAST_NAME'],
'REQUIRED_FIELDS' => ['EMAIL', 'NAME'], // обязательные поля формы
]);
// список полей задаёт и вид формы, и состав проверок при создании

Регистрация и вход - разные компоненты. Форма входа умеет показывать ссылку на регистрацию, но саму запись создаёт именно этот компонент, и настраивается он отдельно.

Включаем подтверждение по почте:

COption::SetOptionString('main', 'new_user_registration_email_confirmation', 'Y');
COption::SetOptionString('main', 'new_user_registration', 'Y'); // сама регистрация
// письмо с подтверждением уходит почтовым событием: без работающей почты нет входа

Подтверждение блокирует вход до перехода по ссылке из письма. На сайте с неотлаженной отправкой почты это означает, что зарегистрироваться не сможет никто, и симптом выглядит как сломанная авторизация.

Добавляем свои поля в форму:

$entity = new CUserTypeEntity();
$entity->Add([
'ENTITY_ID' => 'USER',
'FIELD_NAME' => 'UF_PHONE',
'USER_TYPE_ID' => 'string',
'EDIT_FORM_LABEL' => ['ru' => 'Телефон'],
]);
// после этого поле перечисляют в параметрах компонента регистрации

Свои поля живут пользовательскими полями учётной записи, а не полями формы. Дописанный прямо в шаблон ввод отправится вместе с формой, но никуда не сохранится.

Смотрим, что происходит при заказе без входа:

// настройка модуля продаж: создавать ли запись покупателю без учётной записи
echo COption::GetOptionString('main', 'new_user_registration', 'N'), "\n";
echo COption::GetOptionString('sale', 'allow_guest_order', 'N'), "\n";

Покупатель, оформивший заказ без входа, получает учётную запись автоматически. Логином становится его почта или телефон, а пароль уходит письмом - это и есть самая частая точка входа новых пользователей в магазине.

Регистрация с подтверждением по почте и автоматическая регистрация при заказе плохо уживаются вместе. Покупатель оформляет заказ, получает запись, но войти не может до подтверждения, о котором не просил. На магазинах подтверждение обычно отключают, оставляя его порталам и закрытым разделам.

Группу по умолчанию для новых записей задают заранее. Она определяет, что увидит покупатель после входа: свои заказы, закрытые разделы, цены для розницы. Пустая настройка означает, что все новые пользователи попадают только в общую группу и не получают ничего сверх прав гостя.

Проверка на робота ставится отдельно. Форма регистрации без неё собирает мусорные записи через неделю после запуска, и чистить их приходится вручную.

Типичные проблемы

Регистрация проходит, но войти нельзя.

Включено подтверждение по почте, а письмо не приходит. Вход блокируется до перехода по ссылке из письма.

Своё поле не сохраняется.

Оно дописано в шаблон формы, но не заведено пользовательским полем. Форма принимает только известные платформе поля.

Покупатели регистрируются дважды.

Заказ без входа создаёт запись по почте, а покупатель потом регистрируется сам с другим адресом. Логин уникален, и записи расходятся.

В базе сотни мусорных учётных записей.

В форме нет проверки на робота. Открытая регистрация без неё собирает автоматические заявки.

Ссылка подтверждения ведёт на старый домен.

В настройках сайта остался прежний адрес. Письма собираются по нему, а не по адресу из строки браузера.

Частые вопросы

Нужна ли регистрация интернет-магазину?

Оформление заказа без входа обычно даёт больше заказов, а учётная запись всё равно создаётся автоматически. Обязательную регистрацию оставляют оптовым и закрытым магазинам.

Можно ли регистрировать по телефону вместо почты?

Да, платформа поддерживает вход по телефону с подтверждением кодом. Настройка включается отдельно от обычной регистрации.

Как перенести гостевой заказ на новую учётную запись?

Сменой владельца заказа: заказ хранит идентификатор покупателя. Это ручная операция, автоматически она не выполняется.

Где менять текст письма о регистрации?

В почтовых событиях: у регистрации свой тип события и свой шаблон. Компонент формы текстов писем не содержит.

Смежное

Первоисточник