Почтовые шаблоны авторизации битрикс
В нашем случае три формы и три текстовых почтовых шаблона, я их все изменил под, скажем так, современный и эстетичный вид.
Database design
The following SQL script is used to create the tbl_registration table on the example database to run this example. The registered member data like first name, last name, email, contact number and password will be stored in this table.
Flow of control among jquery modals, ajax handlers and php
Showing the modal dialog or any other kind of pop-up window can be done easily by using jQuery UI. There are various feature-packed plugins to show a modal dialog.
In a previous tutorial, we have seen how to show the comment add edit form as a lightbox using Dialogify plugin.
jQuery UI dialog box is a very good choice of displaying a modal dialog in an application. The login and registration form HTML code is created inside a modal container.
By submitting the Login Registration form, the data will be posted to the PHP via AJAX after client-side validation. The login registration system with jQuery dialog and AJAX submit action will enrich your website with a modern outlook.
Landing html with header login register menu
In this section, we are going to see the HTML code that is used to show a landing page. In this page, a header bar will be shown with the login register menu links.
The menu options are displayed in the form of HTML buttons. With the reference of this button element object, the jQuery UI dialog window will be popped up to display login or registration form accordingly.
Login case in ajax-login-registration.php
By checking the action parameter and found it is the login request, then the entered email address and the password will be used to check the database.
Before binding the password to the login validation query, it has to be encrypted with the same method that was applied while inserting to the database.
Login registration with ajax output
Download
↑ Back to Top
Registration code in ajax-login-registration.php
This is a part of the code that is created in the ajax-login-registration.php to handle the registration process requested via AJAX. In this login registration system, the action parameter is posted via AJAX.
This is the single PHP endpoint where the login and registration processes are taking place based on the request.
Steps to create a login registration system with lightbox
In this article, we will see how to create an AJAX based Login Registration system in PHP. Also, we are going to integrate jQuery UI for displaying the login and the registration panel in the form of Lightbox.
So, we are going to learn several things by this example.
Steps4: now create login form html
Now we will create login form HTML with Bootstarp.
Steps7: html for members page
We will display members page by calling welcome.php when login successful.
Модальные окна авторизации и регистрации – html
<!--modal-login-->
<div id="modal-login" class="uk-modal"> <div class="uk-modal-dialog"> <a class="uk-modal-close uk-close"></a> <div class="uk-modal-header">Авторизация</div> <div class="modal-content uk-text-center"> <?$APPLICATION->IncludeComponent("bitrix:system.auth.form","",
Array(
"REGISTER_URL" => "",
"FORGOT_PASSWORD_URL" => "",
"PROFILE_URL" => "/personal/profile/",
"SHOW_ERRORS" => "Y"
)
);?></div><divclass="uk-modal-footer">© Антон Кучковский, Тюнинг-Софт</div></div></div><!--//modal-login--><!--modal-register--><divid="modal-register" class="uk-modal"><divclass="uk-modal-dialog"><aclass="uk-modal-close uk-close"></a><divclass="uk-modal-header">Регистрация</div><divclass="modal-content uk-text-center"><?//$APPLICATION->IncludeComponent("bitrix:system.auth.registration","",Array());?><?$APPLICATION->IncludeComponent(
"bitrix:main.register",
"",
Array(
"SHOW_FIELDS" => array("EMAIL","NAME","LAST_NAME"),
"REQUIRED_FIELDS" => array("EMAIL","NAME","LAST_NAME"),
"AUTH" => "Y",
"USE_BACKURL" => "Y",
"SUCCESS_PAGE" => "",
"SET_TITLE" => "N",
"USER_PROPERTY" => array(),
"USER_PROPERTY_NAME" => ""
)
);?></div><divclass="uk-modal-footer">© Антон Кучковский, Тюнинг-Софт</div></div></div><!--//modal-register--><!--modal-forgot-password--><divid="modal-forgot-password" class="uk-modal"><divclass="uk-modal-dialog"><aclass="uk-modal-close uk-close"></a><divclass="uk-modal-header">Восстановление пароля</div><divclass="modal-content uk-text-center"><?$APPLICATION->IncludeComponent("bitrix:system.auth.forgotpasswd","",Array());?></div><divclass="uk-modal-footer">© Антон Кучковский, Тюнинг-Софт</div></div></div><!--//modal-forgot-password-->
Так выглядит HTML-код модальных окон css-фреймворка Uikit.HTML-код вызова модальных окон у меня размещен в файле “/bitrix/templates/2022/footer.php” шаблона сайта в самом низу перед закрывающим тегом .
Вместо компонента system.auth.form Вы можете попробовать компонент system.auth.authorize, у каждого свои плюсы и минусы, зависит от задачи, у меня все максимально стандартно получилось.
Для регистрации можно использовать один из двух компонентов, самый простой из них bitrix:system.auth.registration закомментирован, а используется компонент Настраиваемая регистрация__(bitrix:main.register)
Если настраиваете компонент bitrix:main.register в файле footer.php, то в файле auth.php также необходимо сделать его настройку, иначе после нажатия на кнопку Регистрация будут выводиться другие поля в форме после ajax-ответа.
Модальные окна авторизации и регистрации – jquery
$(function(){//При загрузке страницы ссылкам форм подменяем атрибут href и добавляем data-атрибут для вызова модальных окон$('#modal-login a[href*="register"]').attr('href','#modal-register').attr('data-uk-modal','');$('#modal-login a[href*="forgot_password"]').attr('href','#modal-forgot-password').attr('data-uk-modal','');$('#modal-forgot-password a[href*="login"]').attr('href','#modal-login').attr('data-uk-modal','');$('#modal-register a[href*="login"]').attr('href','#modal-login').attr('data-uk-modal','');//Обработчик формы авторизации$('#modal-login').on('submit','form',function(){varform_action=$(this).attr('action');varform_backurl=$(this).find('input[name="backurl"]').val();$.ajax({type: "POST",url: '/bitrix/templates/.default/ajax/auth.php',data: $(this).serialize(),timeout: 3000,error: function(request,error){if(error=="timeout"){alert('timeout');}else{alert('Error! Please try again!');}},success: function(data){$('#modal-login .modal-content').html(data);$('#modal-login form').attr('action',form_action);$('#modal-login input[name=backurl]').val(form_backurl);$('#modal-login a[href*="register"]').attr('href','#modal-register').attr('data-uk-modal','');$('#modal-login a[href*="forgot_password"]').attr('href','#modal-forgot-password').attr('data-uk-modal','');}});returnfalse;});//Обработчик формы регистрации$('#modal-register').on('submit','form',function(){varform_action=$(this).attr('action');varform_backurl=$(this).find('input[name="backurl"]').val();$.ajax({type: "POST",url: '/bitrix/templates/.default/ajax/auth.php',data: $(this).serialize(),timeout: 3000,error: function(request,error){if(error=="timeout"){alert('timeout');}else{alert('Error! Please try again!');}},success: function(data){$('#modal-register .modal-content').html(data);$('#modal-register form').attr('action',form_action);$('#modal-register input[name=backurl]').val(form_backurl);$('#modal-register a[href*="login"]').attr('href','#modal-login').attr('data-uk-modal','');}});returnfalse;});//Обработчик формы восстановления пароля$('#modal-forgot-password').on('submit','form',function(){varform_action=$(this).attr('action');varform_backurl=$(this).find('input[name="backurl"]').val();$.ajax({type: "POST",url: '/bitrix/templates/.default/ajax/auth.php',data: $(this).serialize(),timeout: 3000,error: function(request,error){if(error=="timeout"){alert('timeout');}else{alert('Error! Please try again!');}},success: function(data){$('#modal-forgot-password .modal-content').html(data);$('#modal-forgot-password form').attr('action',form_action);$('#modal-forgot-password input[name=backurl]').val(form_backurl);$('#modal-forgot-password a[href*="login"]').attr('href','#modal-login').attr('data-uk-modal','');}});returnfalse;});});
С помощью jQuery подменяем атрибуты “href” ссылок для вызова модальных окон.Атрибут “action” у всех форм от текущей открытой страницы сайта, иначе подставится путь до файла вот такой “/bitrix/templates/.default/ajax/auth.php” и не будет работать форма корректно.
Также заменяем значение скрытого инпута “backurl”, который будет возвращать нас после перезагрузки страницы туда, откуда пришли, т.е. на текущую страницу.Ошибки ajax я не оформлял для этого примера, попробуйте сами оформить, как захочется в методе error: function(request,error) {…
Модальные окна авторизации и регистрации – php
<?//Содержимое файла /bitrix/templates/.default/ajax/auth.phpif (!defined('PUBLIC_AJAX_MODE')) {
define('PUBLIC_AJAX_MODE', true);
}
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
global$APPLICATION, $USER;
switch($_REQUEST['TYPE'])
{
case "SEND_PWD":
{
//Компонент с шаблоном errors выводит только ошибки$APPLICATION->IncludeComponent(
"bitrix:system.auth.form",
"errors",
Array(
"REGISTER_URL" => "",
"FORGOT_PASSWORD_URL" => "",
"PROFILE_URL" => "/personal/profile/",
"SHOW_ERRORS" => "Y"
)
);
$APPLICATION->IncludeComponent("bitrix:system.auth.forgotpasswd","",Array());
}
break;
case "REGISTRATION":
{
//Компонент с шаблоном errors выводит только ошибки$APPLICATION->IncludeComponent(
"bitrix:system.auth.form",
"errors",
Array(
"REGISTER_URL" => "",
"FORGOT_PASSWORD_URL" => "",
"PROFILE_URL" => "/personal/profile/",
"SHOW_ERRORS" => "Y"
)
);
//Это компонент настраиваемой регистрации, либо используйте его (рекомендуется),//либо компонент bitrix:system.auth.registration$APPLICATION->IncludeComponent(
"bitrix:main.register",
"",
Array(
"SHOW_FIELDS" => array("EMAIL","NAME","LAST_NAME"),
"REQUIRED_FIELDS" => array("EMAIL","NAME","LAST_NAME"),
"AUTH" => "Y",
"USE_BACKURL" => "Y",
"SUCCESS_PAGE" => "",
"SET_TITLE" => "N",
"USER_PROPERTY" => array(),
"USER_PROPERTY_NAME" => "",
)
);
//Это простая регистрация, если импользуете ее, то выше компонент bitrix:main.register закомментируйте!//$APPLICATION->IncludeComponent("bitrix:system.auth.registration","",Array());//Если в настройках главного модуля отключено "Запрашивать подтверждение регистрации по E-mail"//и в настройках включена автоматическая авторизация после регистрации "AUTH" => "Y",//то пользователю будет показано это сообщение и страница перезагрузится,if($USER->IsAuthorized())
{
$APPLICATION->RestartBuffer();
$backurl = $_REQUEST["backurl"] ? $_REQUEST["backurl"] : '/';
//тут выводим любую информацию посетителю?><p>Дорогой <b><?=$USER->GetFullName();?>!</b><br/>
<spanstyle="color: #008000;">Вы зарегистрированы и успешно вошли на сайт!</span></p><p>Сейчас страница автоматически перезагрузится и Вы сможете продолжить <br/>работу под своим именем.</p><script>functionTSRedirectUser(){window.location.href='<?=$backurl;?>';}// - через 2 секунды перезагружаем страницу, чтобы вся страница знала, что посетитель авторизовался.// 1000 - это 1 секундаwindow.setTimeout('TSRedirectUser()',2000);</script><?
}
}
break;
default:
{
//Вместо компонента system.auth.form можете использовать компонент system.auth.authorize,//но не забудьте поменять вызов компонента в HTML на аналогичный//$APPLICATION->IncludeComponent("bitrix:system.auth.authorize","",Array());$APPLICATION->IncludeComponent(
"bitrix:system.auth.form",
"",
Array(
"REGISTER_URL" => "",
"FORGOT_PASSWORD_URL" => "",
"PROFILE_URL" => "/personal/profile/",
"SHOW_ERRORS" => "Y"
)
);
//1. Если нужно показать какую-нибудь информацию об успешном входе на сайт и перезагрузить страницуif($USER->IsAuthorized())
{
//Если посетитель авторизовался/вошел на сайт под своим логином и паролем, необходимо сбросить буфер,//иначе у нас будет выводиться выше по коду HTML-код формы авторизованного посетителя$APPLICATION->RestartBuffer();
$backurl = $_REQUEST["backurl"] ? $_REQUEST["backurl"] : '/';
//тут выводим любую информацию посетителю?><p>Дорогой <b><?=$USER->GetFullName();?>!</b><br/>
<spanstyle="color: #008000;">Вы зарегистрированы и успешно вошли на сайт!</span></p><p>Сейчас страница автоматически перезагрузится и Вы сможете продолжить <br/>работу под своим именем.</p><script>functionTSRedirectUser(){window.location.href='<?=$backurl;?>';}//Через 2 секунды перезагружаем страницу, чтобы вся страница знала, что посетитель авторизовался.//1000 - это 1 секундаwindow.setTimeout('TSRedirectUser()',2000);</script><?
}
//2. Если нужно показать форму авторизованного посетителя и никуда не перенаправлять,//то условие выше if($USER->IsAuthorized()){...} полностью закомментируйте//3. Если не нужно выводить никакую информацию после авторизации, а немедленно перезагрузить страницу,//тогда аналогичный код выше закомментируйте, а этот раскомментируйте./*if($USER->IsAuthorized()) { $APPLICATION->RestartBuffer(); $backurl = $_REQUEST["backurl"] ? $_REQUEST["backurl"] : '/'; ?> <script> window.location.href = '<?=$backurl;?>'; </script> <? }*/
}
}
Необходимые компоненты
bitrix:system.auth.form – форма авторизации и вывода ошибок в шаблоне “errors”
bitrix:system.auth.registrationbitrix:main.register – настраиваемая форма регистрации (используется)
bitrix:system.auth.forgotpasswd – форма восстановления пароля
– простая форма регистрации (не используется по умолчанию)
Пояснения по файлу auth.php
В файле есть много комментариев, но про самое интересное и кое-что новое здесь расскажу.
Создаем всплывающее окно при входе на сайт на html и jquery
В этой статье вы узнаете, как создать всплывающее окно при входе на сайт с формой входа/регистрации с помощью HTML, CSS 3 и jQuery. Для реализации popup окна требуется HTML, CSS и jQuery (Javascript). Я расскажу, как создать простую версию, а затем мы посмотрим, как ее можно улучшить.
Сначала нужно сбросить CSS браузера и импортировать дополнительные шрифты. Я собираюсь использовать Open Sans и Varela Round, которые доступны в Google Font.
Стили разделов body и HTML можно изменить по своему усмотрению, это мало повлияет на создаваемую форму входа и popup окно jQuery.
Затем нужно подключить на странице jQuery. Я использую ссылку на jQuery, но можно использовать локальную версию.
Прежде всего, необходимо создать элемент наложения и контейнер для формы входа.
Наложение добавляет черный оттенок к остальной части контента страницы, тем самым выделяя необходимый блок. Это простой CSS-эффект, использующий позиционирование и цвет фона.
Поскольку его стили разделяются на две основные части, я собираюсь объяснить их по отдельности.
Разберем этот код:
Вторая часть включает flexbox CSS3, что значительно упрощает позиционирование элементов внутри контейнера. Давайте посмотрим:
Перед тем, как перейти к popup окну для сайта, пояснение Flexbox:
Примечание: на момент написания этой статьи flexbox не полностью поддерживался во всех основных браузерах. Если хотите охватить максимальное количество браузеров, необходимо использовать префиксы:
Окончательный код:
Теперь у нас есть контейнер, и нужно разместить в нем создаваемую форму входа. Общей чертой подобных форм с popup окном jQuery является полупрозрачная граница. Мы используем элемент контейнера для достижения этого эффекта, но можно использовать границу, чтобы получить то же самое:
Большинство CSS-свойств очевидны. С помощью значения rgba мы еще раз установили цвет фона, что дает красивый непрозрачный эффект. border-radius задает закругленные углы контейнера формы входа.
Свойство, которое требует пояснений, это align-self, поскольку оно довольно новое. Это связано с flexbox. align-self определяет горизонтальное выравнивание элемента, и мы задали выравнивание точно по центру.
Далее переходим к области содержимого. До сих пор мы имели дело только с полупрозрачными фонами, так что пришло время использовать что-то сплошное:
Мы используем сплошной белый фон, поэтому вместо rgba применили только rgb. Отступ в 24 пикселя можете изменить по своему усмотрению.
Важной частью этого правила является определение position. Это необходимо при использовании абсолютно позиционированных элементов внутри контейнера – это будет кнопка закрытия.
Теперь нужно оформить внутри панели входа заголовок (h3):
Чтобы выделить заголовок, я использую черный округлый шрифт с размером 1.8 em. Использование 1.8 em задает размер шрифта относительно шрифта документа. Это называется эластичностью шрифта.
Перед тем, как сделать popup окно, нужно создать кнопку закрытия формы входа. Это делается следующим образом:
Вот объяснение кода:
Во втором блоке используется селектор :hover, указывающий браузеру, что делать, когда пользователь наводит на элемент курсор мыши. В этом случае кнопка становится зеленого цвета, а указатель мыши изменяет свой вид.
Скоро перейдем к HTML popup окну. А пока CSS-код формы входа:
form label {
color: rgb(0,0,0);
display: block;
font-family: 'Varela Round', sans-serif;
font-size: 1.25em;
margin: .75em 0;
}
form input[type="text"],
form input[type="email"],
form input[type="number"],
form input[type="search"],
form input[type="password"],
form textarea {
background-color: rgb(255,255,255);
border: 1px solid rgb( 186, 186, 186 );
border-radius: 1px;
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.08);
display: block;
font-size: .65em;
margin: 6px 0 12px 0;
padding: .8em .55em;
text-shadow: 0 1px 1px rgba(255, 255, 255, 1);
transition: all 400ms ease;
width: 90%;
}
form input[type="text"]:focus,
form input[type="email"]:focus,
form input[type="number"]:focus,
form input[type="search"]:focus,
form input[type="password"]:focus,
form textarea:focus,
form select:focus {
border-color: #4195fc;
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 0 8px #4195fc;
}
form input[type="text"]:invalid:focus,
form input[type="email"]:invalid:focus,
form input[type="number"]:invalid:focus,
form input[type="search"]:invalid:focus,
form input[type="password"]:invalid:focus,
form textarea:invalid:focus,
form select:invalid:focus {
border-color: rgb(248,66,66);
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 0 8px rgb(248,66,66);
}
Сначала мы определили стили для меток формы. Благодаря этому пользователь может нажать текст и перейти к соответствующему полю формы. Элемент label работает непосредственно с id данных.
Перед тем, как сделать popup окно HTML, мы создаем элементы ввода данных формы. Я указал inset box-shadow, чтобы задать для них красивую внутреннюю тень.
Использование селектора :focus позволяет указать, как будет выглядеть элемент ввода данных, когда пользователь установил в нем курсор. Необходимо наглядно показать, что элемент в данный момент выбран.
В конце мы задаем стили с помощью селектора CSS :invalid. Когда пользователь вводит данные, которые не соответствуют заданному шаблону, элемент ввода будет отображаться с помощью этих стилей.
Стили кнопки не содержат ничего нового:
Для кнопки мы задали приятный синий фон с полупрозрачной темной рамкой. Этот прием позволяет не менять цвет границы, когда мы изменяем цвет фона. Мы также установили для кнопки стандартную CSS-анимацию перехода при смене цвета фона.
Как и для кнопки закрытия окна, мы зададим изменение цвета фона при наведении курсора мыши, чтобы кнопка выглядела кликабельной.
До сих пор все пояснения касались стилей CSS. Теперь пришло время вкратце рассмотреть разметку. В том числе и HTML popup окна.
В форме используются элементы HTML 5, поэтому убедитесь, что doctype задан верно:
Если хотите обеспечить полную совместимость со старыми версиями браузеров и поддержку HTML 5, включите приведенную ниже ссылку на Javascript в разделе head документа:
Полный HTML-код формы входа:
Важно отметить, что мы используем для окна наложения атрибут style=”display: none;”. Это важно, когда речь идет о Javascript / jQuery.
При использовании этого метода для всего сайта необходимо разместить код внутри элемента body.
Мы будем использовать библиотеку jQuery для создания JavaScript popup окна. Это популярный в интернете эффект, он используется такими сайтами, как Facebook и Twitch.tv.
Нужно обернуть функции jQuery в функцию, которая загружается после того, как документ готов. Это предотвращает замедление:
Чтобы создать эффект растворения, мы используем метод jQuery fadeToggle. Он позволяет значительно проще анимировать элементы.
Мы используем fadeToggle при нажатии ссылки входа в систему. Для этого нам потребуется событие jQuery click:
Приведенный выше код запускает функцию encased при нажатии элемента с идентификатором loginLink. Чтобы указать ей, что делать, когда элемент нажат, нужно сделать следующее:
Использование jQuery-функции preventDefault() позволяет остановить связь с перенаправлением пользователя. Это обеспечивает функционал для разработчиков, которые могут ссылаться на страницу входа:
С помощью этой простой функции мы продублируем функционал для закрытия окна.
Нам не нужно использовать здесь функцию preventDefault(), потому что кнопкой закрытия окна не предоставляется внешняя ссылка.
В JS popup окне сделаем так, чтобы пользователь мог нажать клавишу ESC для закрытия окна:
Важно отметить, что эта функция используется в теле if. Оператор проверяет, нажал ли пользователь клавишу ESC (код клавиши 27).
Поскольку мы не хотим, чтобы пользователь открывал окно с помощью клавиши ESC, нужно проверить, отображается ли окно наложения или нет.
Вот все весь код jQuery:
Что, если вы захотите сделать эту форму еще лучше? Можно включить в нее форму регистрации. Вот как это можно сделать без дублирования кода с помощью запроса JQuery AJAX GET:
Я создал новый класс для формы входа и ссылки для регистрации под названием «overlayLink». После того, как пользователь нажимает на этот элемент, запускается функция.
Мы хотим, чтобы ссылки не делали ничего другого. Используем для этого preventDefault(). Затем нужно узнать, какую страницу нужно извлечь. Это указано в HTML-атрибуте data-action.
Теперь получаем код указанной страницы / формы или HTML popup окна. Страница, соответствующая нажатой ссылке, должна находиться в паке ajax/. Затем результат помещается в элемент с классом login-content.
Код страницы ajax/login-form.html будет выглядеть следующим образом:
Ссылки для вызова запроса AJAX будут выглядеть так:
Затем можно создать файл ajax/registration-form.html:
Каждая ссылка имеет атрибут data-action, он ссылается на файл в папке ajax/ и загружает его в элемент наложения. Чтобы добавить другие файлы, нужно создать их в папке ajax/ – ajax/yourfile.html и задать data-action=”yourfile.html”.
Спасибо за внимание. Сегодня мы узнали, как сделать popup окно. Надеюсь, это руководство оказалось полезным. Вот полный код:
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>HTML 5, CSS 3, jQuery Log-in & Registration</title>
<link href='http://fonts.googleapis.com/css?family=Varela Round|Open Sans:400,300,600' rel='stylesheet' type='text/css'>
<script src="https://code.jquery.com/jquery-latest.min.js"></script>
<script>
$(document).ready(function() {
$("#loginLink").click(function( event ){
event.preventDefault();
$(".overlay").fadeToggle("fast");
});
$(".overlayLink").click(function(event){
event.preventDefault();
var action = $(this).attr('data-action');
$("#loginTarget").load("ajax/" action);
$(".overlay").fadeToggle("fast");
});
$(".close").click(function(){
$(".overlay").fadeToggle("fast");
});
$(document).keyup(function(e) {
if(e.keyCode == 27 && $(".overlay").css("display") != "none" ) {
event.preventDefault();
$(".overlay").fadeToggle("fast");
}
});
});
</script>
<style>
/*
* RESET
*/
*{
box-sizing: border-box;
margin: 0;
outline: none;
padding: 0;
}
*:after,
*:before {
box-sizing: border-box;
}
/*
* Общие стили
*/
html {
font-size: 16px;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
text-rendering: optimizeLegibility;
}
body {
background-color: #f3f3f3;
color: rgb(165,165,165);
font-family: "Open Sans", Arial, Helvetica, sans-serif;
font-weight: 400;
}
a.close {
background-color: rgb(204,204,204);
border-radius: 50%;
color: rgb(255,255,255);
display: block;
font-family: 'Varela Round', sans-serif;
font-size: .8em;
padding: .2em .5em;
position: absolute;
top: 1.25rem;
transition: all 400ms ease;
right: 1.25rem;
}
a.close:hover {
background-color: #1bc5b3;
cursor: pointer;
}
/*
* Панель входа
*/
div.overlay {
background-color: rgba(0,0,0,.25);
bottom: 0;
display: flex;
justify-content: center;
left: 0;
position: fixed;
top: 0;
width: 100%;
}
div.overlay > div.login-wrapper {
align-self: center;
background-color: rgba(0,0,0,.25);
border-radius: 2px;
padding: 6px;
width: 450px;
}
div.overlay > div.login-wrapper > div.login-content {
background-color: rgb(255,255,255);
border-radius: 2px;
padding: 24px;
position: relative;
}
div.overlay > div.login-wrapper > div.login-content > h3 {
color: rgb(0,0,0);
font-family: 'Varela Round', sans-serif;
font-size: 1.8em;
margin: 0 0 1.25em;
padding: 0;
}
/*
* Форма
*/
form label {
color: rgb(0,0,0);
display: block;
font-family: 'Varela Round', sans-serif;
font-size: 1.25em;
margin: .75em 0;
}
form input[type="text"],
form input[type="email"],
form input[type="number"],
form input[type="search"],
form input[type="password"],
form textarea {
background-color: rgb(255,255,255);
border: 1px solid rgb( 186, 186, 186 );
border-radius: 1px;
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.08);
display: block;
font-size: .65em;
margin: 6px 0 12px 0;
padding: .8em .55em;
text-shadow: 0 1px 1px rgba(255, 255, 255, 1);
transition: all 400ms ease;
width: 90%;
}
form input[type="text"]:focus,
form input[type="email"]:focus,
form input[type="number"]:focus,
form input[type="search"]:focus,
form input[type="password"]:focus,
form textarea:focus,
form select:focus {
border-color: #4195fc;
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 0 8px #4195fc;
}
form input[type="text"]:invalid:focus,
form input[type="email"]:invalid:focus,
form input[type="number"]:invalid:focus,
form input[type="search"]:invalid:focus,
form input[type="password"]:invalid:focus,
form textarea:invalid:focus,
form select:invalid:focus {
border-color: rgb(248,66,66);
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 0 8px rgb(248,66,66);
}
form button {
background-color: #50c1e9;
border: 1px solid rgba(0,0,0,.1);
color: rgb(255,255,255);
font-family: 'Varela Round', sans-serif;
font-size: .85em;
padding: .55em .9em;
transition: all 400ms ease;
}
form button:hover {
background-color: #1bc5b3;
cursor: pointer;
}
</style>
</head>
<body>
<div class="test"></div>
<p>Here's some content.</p>
<a href="login.php" id="loginLink">Login</a>
<ul>
<li><a href="login.php" class="overlayLink" data-action="login-form.html">Log-in</a></li>
<li><a href="register.php" class="overlayLink" data-action="registration-form.html">Register</a></li>
</ul>
<div class="overlay" style="display: none;">
<div class="login-wrapper">
<div class="login-content" id="loginTarget">
<a class="close">x</a>
<h3>Sign in</h3>
<form method="post" action="login.php">
<label for="username">
Username:
<input type="text" name="username" id="username" placeholder="Username must be between 8 and 20 characters" pattern="^[a-zA-Z][a-zA-Z0-9-_.]{8,20}$" required />
</label>
<label for="password">
Password:
<input type="password" name="password" id="password" placeholder="Password must contain 1 uppercase, lowercase and number" pattern="(?=^.{8,}$)((?=.*d)|(?=.*W ))(?![.n])(?=.*[A-Z])(?=.*[a-z]).*$" required />
</label>
<button type="submit">Sign in</button>
</form>
</div>
</div>
</div>
</body>
</html>
Дайте знать, что вы думаете по этой теме материала в комментариях. За комментарии, дизлайки, отклики, лайки, подписки огромное вам спасибо!
Структура файлов авторизации и их подключение в шаблоне сайта битрикс
Я прикрепил к статье архив со всеми файлами, структура архива
/ajax/auth.php
– к этому файлу будут все обращения из джаваскрипта, он и будет возвращать html всех форм/components/
– тут шаблоны компонентовsystem.auth.form, main.register, system.auth.forgotpasswd
/css/auth.css
– тут все необходимые стили для форм/js/auth.js
– тут все джаваскрипты для форм/uikit/
– тут все необходимые файлы для Uikitreadme.txt
– краткая инструкция по подключению файлов
Все это дело вы можете скопировать в шаблон сайта, который используется, все имена файлов вроде как уникальные, но все же могут совпасть, поэтому, будьте осторожны, при копировании не перезапишите файлы сайта, чтобы не было больно.В архиве я все положил в дефолтный шаблон Битрикс, но вот у меня на сайте шаблон называется 2022, значит все файлы буду копировать сюда:/bitrix/templates/2022/
Итак, все файлы у нас есть, остается все это дело как-то запустить, придать этому всему ума)
1. Скопировать все можете в дефолтный шаблон, можете в шаблон сайта, но если подключить джаваскрипты в шаблоне сайта, то надо в файле /js/auth.js изменить значение переменной auth_url до файла /ajax/auth.phpСам файл auth.php можете на сайте хранить вообще где угодно, главное прописать в джаваскрипте путь до него.
2. Подключаем в /bitrix/templates/шаблон_сайта/header.php джаваскрипты и стили из папок /css/, /js/, /uikit/, например так:
3. В файле /bitrix/templates/шаблон_сайта/footer.php достаточно разместить верстку модального окна Uikit c id=”auth-modal”В эту верстку будут подгружаться формы авторизации, регистрации, восстановления пароля кликом по ссылке/кнопке “Личный кабинет” и кликом по всем ссылкам в формах типа “Вспомнить пароль”, “Зарегистрироваться”, “Авторизация”