Покрокова реєстрація засобами jQuery. Робимо відмінну систему реєстрації з використанням PHP, MySQL та jQuery Плагін jQuery «Contactable»
Покрокова реєстрація засобами jQuery. Робимо відмінну систему реєстрації з використанням PHP, MySQL та jQuery Плагін jQuery «Contactable»
02.12.2016
В мережі TwitterВи можете спостерігати роботу сторінки з чистим та простим дизайном. Подивіться на праву верхню частинусторінки, там Ви побачите кнопку авторизаціїу систему, натиснувши яку, ви побачите формидля заповнення даних. Сьогодні ми розповімо Вам про те, як зробити такий ефект на власному сайті. Насправді це дуже просто. До того ж, це допоможе зберегти місце на сторінці, і додасть відчуття комфорту Вашим відвідувачам. У цій статті ми покроково розповімо Вам про те, як працює вся ця система, а ще цей посібник буде корисним для тих, хто бажає вивчити jQuery. Уперед!
Код HTML
Спочатку потрібно почати з коду HTML. HTML-код дуже простенький - він містить у собі тег «a», що йде разом із тегом «fieldset», за рахунок якого відображається форма.
Просто скопіюйте це на код нової сторінки:
Have an account? Sign in
Код CSS
Вам знадобиться використання CSSдля визначення кнопки авторизації та форми логіну. Поданий нижче код виконує саме цю функцію.
Просто скопіюйте цей код у файл css, або додайте його в код HTML там, де у вас визначається стиль. Ці коди визначають кнопку авторизації.
Здавалося б, коди HTMLі CSS досить складні та заплутані, а в javascript все дуже просто. Просто копіюйте цей код javascript, за рахунок якого можна буде відображати та ховати форму в момент кліку по кнопці авторизації, навіть якщо клік буде зроблено поза формою логіну.
Згідно з кодом, наведеним вище, коли відвідувач кликає по кнопці авторизації, запускається нова функція. Спочатку відображається форма логіну (укладена в тег "filedset"), потім посилання, укладене в клас ". Signin", додає ще один клас "menu-open", за рахунок якого змінюється фонове зображення.
Ще одна подія в цьому коді полягає в тому, що коли відвідувачі кликають не формою логіну, а десь на сторінці – то форма сама закривається. Іншими словами, клас «menu-open» знімається з посилання з класом «.signin» і повертає початкове фонове зображення.
Щодо підказок?
Ми зазвичай радимо використовувати плагін для jQuery - tipsy. Вміст tooltip-а є те, що написано в атрибуті «title», що відноситься до посилання. Ви можете змінювати позицію tooltip-а щодо сходу, заходу, півдня чи півночі. Це реалізується за рахунок параметра gravity, зазначеного в коді вище. Ми надаємо Вам посилання на сайт, присвячений цьому плагіну, там Ви зможете докладніше вивчити його можливості та завантажити плагін. …
На закінчення
Якщо Ви скопіювали весь код цієї статті, будь ласка, не змінюйте структуру папок. Якщо Ви зміните її, код не буде працювати. Цей кодє лише прикладом створення форми авторизації, що випадає, за допомогою jQuery. Успіхів у практиці!
1. Плагін для створення онлайн форм «jFormer»
Створення контактних форм: зворотнього зв'язку, коментування, форма входу, форма реєстрації з перевіркою правильності введення інформації
2. Покрокова форма реєстрації з використанням jQuery
Акуратна форма з покроковим наповненням. Знизу вказано індикатор заповнення форми.
3. Покрокова форма
Заповнення форми за кілька кроків із перевіркою правильності заповнення.
4. Контактна форма для сайту
Перевірка правильності введення інформації здійснюється «на льоту» перед відправкою повідомлення з використанням javascript.
5. Анімоване перемикання між формами на jQuery
Анімоване перемикання за допомогою jQuery між формою входу на сайт, формою реєстрації та полем для відновлення пароля. На демонстраційній сторінці натисніть на жовте посилання, щоб побачити ефект.
6. Форма зворотного зв'язку, що виїжджає PHP
Подібне рішення можна використати для того, щоб дати відвідувачу можливість швидко зв'язатися із власником сайту з будь-якої сторінки. На демонстраційній сторінці натисніть стрілку знизу, щоб виїхала форма.
7. PHP форма реєстрації з використанням jQuery та CSS3
Форма із перевіркою правильності введення інформації.
8. PHP форма реєстрації у стилі Facebook
Симпатична форма реєстрації, реалізована з допомогою CSS, PHP та jQuery.
9. jQuery контактна форма "SheepIt"
Реалізована можливість перед надсиланням повідомлення додавати нові поля.
10. Контактна форма "Fancy AJAX Contact Form"
Симпатична акуратна PHP форма зворотного зв'язку із перевіркою правильності введення інформації. Технології: CSS, PHP, jQuery.
11. Система авторизації/реєстрації на сайті
12. Форма надсилання даних
З перевіркою правильності наповнення.
13. Плагін jQuery "Contactable"
Для реалізації форми зворотного зв'язку, що виїжджає, для швидкого відправлення повідомлення.
Ми вирішили доповнити деякими прикладами , опубліковану на хабре, щоб ви дізналися про деякі "інноваційні техніки" поліпшення форм реєстрації та авторизації.
Спрощуємо форми реєстрації
Отже, кілька прийомів:
не потрібно дублювати введення пароля;
Щоб полегшити користувачеві життя (навіщо це робити добре показано в цьому від Google) краще зробити одне поле та чекбокс, який зніматиме "маску" - все це здійснюється за допомогою невеликого javascript-коду.
1. Бібліотека jQuery.
2-7. ініціалізація на елементі.
Б. HTML-код форми наступний:
5-6. видимість цих полів перемикається скриптом чекбоксом.
краще зробити автозаповнення полів на основі введених даних;
Чим менше користувачеві потрібно вводити, тим краще. Деякі поля можна заповнити, відштовхуючись від попередніх, вже введених даних. Наприклад, можна заповнювати поле "місто", зчитуючи та обробляючи значення з поля "індекс". Простий ajax-запит і справа в капелюсі. Використання AJAX для отримання даних про місто та область з поштового індексу.
А. Підключаємо бібліотеки в ‹header›:
1. Бібліотека jQuery. 2. Основний сценарій.
Б. HTML-код форми наступний:
Індекс Місто Країна
1.Поле, у яке слід внести поштовий індекс.
В. zip_city.js:
Function fillcitystate(controlname)( var zipcode = trim(controlname.value); //обрізаємо пробіли if(zipcode.length!=5)( //перевіряємо довжину return false; ) var zipstring = ""; xmlhttp = new XMLHttpRequest() xmlhttp.open("GET", "php/zip_city.php?zip=" + zipcode, true); // надсилаємо запит у php xmlhttp.onreadystatechange=function()( //при отриманні результату if (xmlhttp.readyState= =4)( var zipstring = xmlhttp.responseText; if (zipstring!="Error")( var ziparray = zipstring.split("|"); document.getElementById("txtCity").value = ziparray; //встановлюємо значення для поля міста document.getElementById("txtCountry").value = ziparray; //встановлюємо значення для поля країни ) ) ) xmlhttp.send(null); ) //функція обрізки пробілів function trim(s) ( var l=0; var r=s.length -1;while(l< s.length && s[l] == " ")
{ l++; }
while(r >l && s[r] == " ") ( r-=1; ) return s.substring(l, r+1); )
Г. zip_city.php:обробник ajax-запиту.
Require_once("db.php"); $db_table = "zip_city"; //Установка за замовчуванням для значення $returnval = "Error"; //отримання GET-параметра $zipcode = $_GET["zip"]; //переробка if (strlen($zipcode)>5)( $zipcode = substr($zipcode, 0, 5); ) if (strlen($zipcode)!=5)( die ($returnval); ) //отримання значень із БД $query = "SELECT * FROM ($db_table) WHERE zip="($zipcode)""; $resultval = mysql_query($query) or die("Cannot run query:Query: ".$query."".mysql_error($conn)); $rowcount = mysql_num_rows($resultval); if ($rowcount==1)( $row = mysql_fetch_array($resultval); $returnval = $row["zip"]."|".ucwords(strtolower($row["city"]))."|" .$row["country"]; //власне, формування успішної відповіді ) echo $returnval;
Д. db.php:конфігурація підключення до БД.
//Параметри підключення до бази $dbhost = "localhost"; $ dbusername = "root"; $ dbpass = ""; $db_name = "blog_login"; $conn = mysql_connect($dbhost, $dbusername, $dbpass) або die("Cannot connect to MySQL database server:".mysql_error()); $db = mysql_select_db($db_name, $conn) або die("Cannot open database:".mysql_error($conn));
Е. Створення таблиці БД:
CREATE TABLE IF NOT EXISTS `zip_city` (`id` int(11) NOT NULL AUTO_INCREMENT, `zip` varchar(5) NOT NULL, `city` varchar(255) NOT NULL, `country` varchar(255) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=41921;
можна зробити автопідстановку у полі введення;
Деякі поля припускають обмежений набір значень, що вводяться. Наприклад, користувач може ввести два символи, побачити список країн, які починаються на ці літери та легко вибрати потрібну. До того ж, він точно не припуститься помилок у назві батьківщини. AJAX Auto-Complete під jQuery.
А. Підключаємо в ‹header›:
1. Бібліотека jQuery. 2. Скрипт автозаповнення для jQuery. 3. Основний сценарій.
Б. HTML-код форми наступний:
Країна
1. Поле, в яке потрібно розпочинати вводити назву країни.
В. init.js:
Var options, a; jQuery(function()( options = ( serviceUrl:"./php/autocomplete.php" ); /*вказуємо адресу файлу-обробника*/ a = $("#query").autocomplete(options); /*призначаємо автозаповнення об'єкт з id="query"*/ ));
Г. autocomplete.php:обробник ajax-запиту
If(isset($_GET["query"]) && (!empty($_GET["query"])))( require_once("db.php"); $db_table = "system_countries"; //назва таблиці БД $ query = $_GET["query"]; // запит з поля форми $variants = ""; $q = "SELECT `name_en` FROM `($db_table)` WHERE `name_en` REGEXP "^($query)(. *)" GROUP BY `name_en`"; /*шукаємо за першими введеними символами*/ $res = mysql_query($q) or die("Cannot run query:Query: ".$q."".mysql_error($conn) ); варіантів*/ ) $variants = implode(",",$variants); /*набиваємо всі варіанти через кому в рядок*/ /*формуємо відповідь*/ $request = "( query:"".$query."", suggestions:[".$variants."] )"; echo $request; ) )
Д. Створення таблиці БД:
DROP TABLE IF EXISTS `system_countries`; CREATE TABLE `system_countries` (`id` int(11) NOT NULL auto_increment, `name_en` char(128) NOT NULL, `name_ru` char(128) default NULL, `code` char(2) NOT NULL, `_order` int(3) default "0", `independent` tinyint(1) default "1", PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;
У багатьох інтернет-магазинах використовують багатокрокові форми замовлення з полями адрес оплати та доставки. Найчастіше їх значення збігаються. Чому б не запропонувати користувачеві в один клік продублювати значення введених полів? Програмно прийом простий і ви можете застосовувати його у різних випадках, де мається на увазі ймовірність повторення значень.
А. Підключаємо в ‹header›:
1. Бібліотека jQuery.
2. jQuery Select Plugin.
3. Основний скрипт.
Б. HTML-код форм наступний:
Дані оплати.
14. Чекбокс копіювання.
В. init.js:
//при завантаженні сторінки $(document).ready(function() ( //коли чекбокс активовано або деактивовано $("#copyaddress").click(function() ( // якщо активовано if ($("#copyaddress")) .is(":checked")) ( //для кожного поля введення $("#shipping_fields input", ":visible", document.body).each(function(i) ( //копіювання значень із полів оплати // у відповідні поля доставки $(this).val($("#billing_fields input").eq(i).val()); ));//не працює з випадаючими меню, тому застосуємо функції плагіна var bcountry = $( "#bcountry").val(); $("#scountry").selectOptions(bcountry); ) else ( //якщо деактивовано чекбокс //для кожного поля введення $("#shipping_fields input", ":visible", document.body).each(function(i) ( //очищаємо поля даних про доставку $(this).val(""); )); $("#scountry").selectOptions(""); ) )) ;));
Здається, люди втомилися читати капчу:)
Адже вам і самим, напевно, набридло читати нерозбірливі символи з капчі і потім їх вводити. Давайте помилуємо користувачів, але при цьому не пропустимо роботів. Для цього можна вдатися до кількох прийомів, розглянемо один із них. Підхід Honeypot Captcha - створюємо поле на формі, невидиме користувачеві, але видиме боту. Перевіривши це значення, ми зможемо зловити недбайливих спамерів, при цьому не створюючи складнощів Справжнім Людям. Вплив капчі на рівень конверсії.
А. HTML-код форми наступний:
Для авторизації введіть логін: login та пароль: password
4. Кнопка відкриття форми.
7-22. Сама форма.
19. Чекбокс, який змушує встановлювати куки дуже довго.
23. Місце для повідомлення.
В. jqeasy.dropdown.js:
$(document).ready(function() ( /*основна функція*/ $(".btnsignin").click(function(e) ( /*при натисканні на кнопку "Увійти"*/ e.preventDefault(); $) ("#frmsignin").toggle("fast",function() ( /*перемикає видимість форми*/ $("#username").focus(); /*переводить курсор введення в поле логіна*/ )); $ (this).toggleClass("btnsigninon"); /*перемикає клас на кнопці для зміни виду*/ $("#msg").empty(); )); $(".btnsignin"). ( return false; )); *не на одному з об'єктів форми*/ $(".btnsignin").removeClass("btnsigninon"); /*прибираємо форму і повертаємо як було*/ $("#frmsignin"). ; )); ( /*якщо прийшло ОК*/ $("#frmsignin").text("Signed in!"); /*надсилаємо текстове повідомлення*/ $("#frmsignin").delay (800).fadeOut(400); $("#signbtn").html("Вийти"); /*змінюємо кнопку для виходу*/ ) else ( $("#msg").html(data); $("#username").focus(); ) ) )); )); function validate(formData, jqForm, options) ( /*процедура валідації введених даних, містить обробку виведення помилки*/ var form = jqForm; var un = $.trim(form.username.value); var pw = $.trim(form .password.value), var unReg = /^(3,20)$/; var pwReg = /^(6,20)$/; var hasError = false; var errmsg = ""; = " Введіть логін:
$config = array(); $config["email"] = " [email protected]$config["password"] = "demo123"; ); // IE 6 FIX if($_POST["action"] == "user_login") ( $post_email = $_POST["email"]; $post_password = $_POST["password"]; // перевіряємо логін і пароль if($post_email == $config["email"] && $post_password == $config["password"]) ( // Все правильно? реєструємо сесію і перенаправляємо користувача до його "Особистого кабінету" $username = $post_email; $_SESSION["username"] = $username; if($_POST["remember_me"]) ( // встановлюємо cookies на місяць setcookie ("remember_me", true, (time() + TIME_DIFF) + (3600 * 24 * 30) ));setcookie ("info", $user_id.",".md5($password), (time() + TIME_DIFF) + (3600 * 24 * 30)); ) echo "OK"; // відсилаємо відповідь успіху для "init.js" ) else ( $auth_error = "
Дані авторизації неправильні.
"; echo $auth_error; ))
Г. private.php:сторінка, до якої доступ лише після авторизації.
Include "config.php";//якщо є відповідні куки, то встановлюється сесія, що користувач авторизований // Перевірка, чи авторизований користувач if(!isSet($_SESSION["username"])) ( header("Location: /modal .html"); exit; ) echo " Особиста сторінка Вітаю, "; echo $_SESSION["username"]." | Вийти Це ваша особиста сторінка ";
Щоб не примушувати користувача бігати очима та мишкою по сторінці у пошуках поля, куди потрібно вводити текст, ми можемо автоматично встановлювати курсор. А головне, що це робиться дуже просто, а їм – приємно.
А. HTML-код форми наступний:
Друге поле Перше поле Третє поле
4. у цьому полі буде встановлено фокус Б. додати наступний js:
Function setFocus() ( /*встановлюємо фокус на потрібне поле*/ document.form_find.find_fio.select(); document.form_find.find_fio.focus(); )
Висновок
Наше завдання полягає в тому, щоб зробити форми реєстрації та авторизації такими ж милими та приємними, як, скажімо, стюардеси. Сподіваюся, мої приклади будуть корисними та стануть основою для створення власних шедеврів формобудування.
У цій статті ви дізнаєтесь, як створити форму реєстрації та авторизації, використовуючи HTML, JavaScript, PHP та MySql. Такі форми використовуються майже на кожному сайті незалежно від його типу. Вони створюються і для форуму, і для інтернет-магазину і для соціальних мереж (такі як Facebook, Twiter, Odnoklassniki) і для багатьох інших типів сайтів.
Якщо у Вас є сайт на локальному комп'ютері, то я сподіваюся, що у Вас вже . Без нього нічого не працюватиме.
Створення таблиці в базі даних
Для того, щоб реалізувати реєстрацію користувачів, в першу чергу нам потрібна База даних. Якщо вона вже є, то чудово, інакше, Вам потрібно її створювати. У статті я докладно пояснюю, як зробити це.
І так, у нас є База даних (скорочено БД), тепер нам потрібно створити таблицю usersв якій додаватимемо наших зареєстрованих користувачів.
Як створювати таблицю в БД, я пояснив у статті . Перед тим як створити таблицю, нам необхідно визначити, які поля вона міститиме. Ці поля відповідатимуть полям із форми реєстрації.
Значить, подумали, представили, які поля будуть у нашої форми і створюємо таблицю usersз такими полями:
id- Ідентифікатор. Поле idмає бути у кожної таблиці із БД.
first_name- Для збереження імені.
last_name- Для збереження прізвища.
email- Щоб зберегти поштову адресу. E-mail ми будемо використовувати як логін, тому це поле має бути унікальним, тобто мати індекс UNIQUE.
email_status- Поле для вказівки, чи підтверджено пошту чи ні. Якщо пошта підтверджена, воно буде мати значення 1, інакше значення 0. За замовчуванням це поле матиме значення 0.
password- Для збереження пароля.
Усі поля типу “VARCHAR” мають значення за промовчанням NULL.
Якщо Ви хочете, щоб Ваша форма реєстрації мала ще якісь поля, Ви можете їх тут також додати.
Все, наша таблиця usersготова. Переходимо до наступного етапу.
Підключення до бази даних
Базу даних ми створили, тепер необхідно підключитися до неї. Підключення будемо здійснювати за допомогою PHP розширення MySQLi.
У папці нашого сайту створюємо файл з ім'ям dbconnect.php, і в ньому пишемо наступний скрипт:
Помилка підключення до БД. Опис помилки: ".mysqli_connect_error()."
"; exit(); ) // Встановлюємо кодування підключення $mysqli->set_charset("utf8"); //Для зручності, додамо тут змінну, яка міститиме назву нашого сайту $address_site = "http://testsite.local" ;?>
Цей файл dbconnect.phpнеобхідно буде підключити до обробників форм.
Зверніть увагу на змінну $address_site, тут я вказав назву мого тестового сайту, над яким працюватиму. Ви відповідно вкажіть назву Вашого сайту.
Структура сайту
Тепер давайте розберемося з HTML структурою нашого сайту.
Шапку та підвал сайту винесемо в окремі файли, header.phpі footer.php. Їх підключатимемо на всіх сторінках. А саме на головній (файл index.php), на сторінку з формою реєстрації (файл form_register.php) та на сторінку з формою авторизації (файл form_auth.php).
Блок із нашими посиланнями, реєстраціяі авторизація, додамо до шапки сайту, щоб вони відображалися на всіх сторінках. Одне посилання буде ввести на сторінку з формою реєстрації(файл form_register.php) а інша на сторінку з формою авторизації(файл form_auth.php).
Вміст файлу header.php:
Назва нашого сайту
Зрештою, головна сторінка, у нас виглядає так:
Звичайно, у Вас на сайті може бути зовсім інша структура, але це для нас не має значення. Головне, щоб були посилання (кнопки) реєстрації та авторизації.
Тепер перейдемо до форми реєстрації. Як Ви вже зрозуміли, вона у нас знаходиться у файлі form_register.php.
Ідемо в Базу Даних (в phpMyAdmin), відкриваємо структуру таблиці usersі дивимося, які поля нам потрібні. Отже, нам потрібні поля для введення імені та прізвища, поле для введення поштової адреси (Email) та поле для введення пароля. І ще з метою безпеки додамо поле для введення капчі.
На сервері, в результаті обробки форми реєстрації можуть виникнути різні помилки, через які користувач не зможе зареєструватися. Тому для того, щоб користувач розумів чому не проходить реєстрація, необхідно вивести йому повідомлення про ці помилки.
Перед виведенням форми додаємо блок для виведення повідомлень про помилки із сесії.
І ще момент, якщо користувач вже авторизований, і він заради інтересу заходить на сторінку реєстрації безпосередньо, написавши в адресний рядок браузера адреса сайту/form_register.php, то ми у разі замість форми реєстрації, виведемо йому заголовок у тому, що він зареєстрований.
Загалом код файлу form_register.phpу нас вийшов таким:
Ви вже зареєстровані
У браузері сторінка з формою реєстрації виглядає так:
За допомогою атрибуту required, ми зробили всі поля обов'язковими для заповнення.
Зверніть увагу на код форми реєстрації де виводиться капча:
Ми маємо значення атрибута src для зображення, вказали шлях до файлу captcha.php, що генерує цю капчу.
Подивимося на код файлу captcha.php:
Код добре закоментований, тому я зупинюся лише на одному моменті.
Усередині функції imageTtfText(), вказано шлях до шрифту verdana.ttf. Так ось для коректної роботи капчі, ми маємо створити папку fonts, і помістити туди файл шрифту verdana.ttf. Його Ви можете знайти та завантажити з інтернету, або взяти з архіву з матеріалами цієї статті.
З HTML структурою ми закінчили, настав час рухатися далі.
Перевірка email на валідність за допомогою jQuery
Будь-яка форма потребує перевірки на валідність введених даних як на стороні клієнта (за допомогою JavaScript, jQuery), так і на стороні сервера.
Особливу увагу ми повинні приділити полю Email. Дуже важливо, щоб введена поштова адреса була валідною.
Для даного поля input ми задали тип email (type="email"), це нас трошки застерігає від неправильних форматів. Але цього недостатньо, тому що через інспектор коду, якого надає нам браузер, можна легко змінити значення атрибуту typeз emailна text, і все, наша перевірка буде вже недійсною.
І в такому разі, ми маємо зробити більш надійну перевірку. Для цього скористаємося бібліотекою jQuery від JavaScript.
Для підключення бібліотеки jQuery у файлі header.phpміж тегами , перед закриває тега , додаємо цей рядок:
Відразу після цього рядка додамо код перевірки валідації email. Тут додамо код перевірки довжини введеного пароля. Його довжина має бути не менше 6 символів.
За допомогою цього скрипта ми перевіряємо введену поштову адресу на валідність. Якщо користувач ввів неправильний Email, ми виводимо йому помилку про це і дезактивуємо кнопку відправки форми. Якщо все добре, то ми прибираємо помилку та активуємо кнопку відправлення форми.
І так, із перевіркою форми на клієнтській частині ми закінчили. Тепер ми можемо відправити її на сервер, де також зробимо пару перевірок та додамо дані до БД.
Реєстрація користувача
Форму ми надсилаємо на обробку файлу register.phpчерез метод POST. Назва файлу обробника, вказано в значення атрибута action. А метод відправлення вказано у значення атрибуту method.
Відкриваємо цей файл register.phpі перше, що нам потрібно зробити, це написати функцію запуску сесії та підключити створений нами раніше файл dbconnect.php(У цьому файлі ми зробили підключення до БД). І ще, відразу оголосимо осередки error_messagesі success_messagesу глобальному масиві сесії. В error_mesagesбудемо записувати всі повідомлення про помилки, що виникають при обробці форми, а в succes_messages, записуватимемо радісні повідомлення.
Перед тим як продовжити, ми повинні перевірити, була взагалі відправлена форма. Зловмисник може подивитися на значення атрибуту actionз форми, і дізнатися, який файл займається обробкою даної форми. І йому може спасти на думку перейти безпосередньо в цей файл, набираючи в адресному рядку браузера таку адресу: http://арес_сайту/register.php
Тому нам потрібно перевірити наявність осередку у глобальному масиві POST, ім'я якого відповідає імені нашої кнопки "Зареєструватися" з форми. Таким чином ми перевіряємо, чи була натиснута кнопка "Зареєструватися" чи ні.
Якщо зловмисник спробує перейти безпосередньо до цього файлу, він отримує повідомлення про помилку. Нагадую, що змінна $address_site містить назву сайту і вона була оголошена у файлі dbconnect.php.
Помилка!головну сторінку.
");
}
?>
Значення капчі в сесії було додано при її генерації у файлі captcha.php. Для нагадування ще раз покажу цей шматок коду з файлу captcha.php, де додається значення капчі в сесію:
Тепер приступимо до самої перевірки. У файлі register.php, всередині блоку if, де перевіряємо, чи була натиснута кнопка "Зареєструватися", а точніше де вказано коментар " // (1) Місце для наступного шматка кодупишемо:
//Перевіряємо отриману капчу //Обрізаємо прогалини з початку та з кінця рядка $captcha = trim($_POST["captcha"]); if(isset($_POST["captcha"]) && !empty($captcha))( // Порівнюємо отримане значення зі значенням із сесії. if(($_SESSION["rand"] != $captcha) && ($_SESSION ["rand"] != ""))( // Якщо капча не вірна, то повертаємо користувача на сторінку реєстрації, і там виведемо йому повідомлення про помилку, що він ввів неправильну капчу. $error_message = "
Помилка!Ви ввели неправильну капчу
"; // Зберігаємо в сесію повідомлення про помилку. $_SESSION["error_messages"] = $error_message; //Повертаємо користувача на сторінку реєстрації header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site ."/form_register.php"); //Зупиняємо скрипт exit(); ) // (2) Місце для наступного шматка коду )else( //Якщо капча не передана або воно є порожнім exit("
Помилка!Відсутній код перевірки, тобто код капчі. Ви можете перейти на головну сторінку.
");
}
Далі, нам потрібно обробляти отримані дані з масиву POST. Насамперед, нам потрібно перевірити вміст глобального масиву POST, тобто чи є там осередки, імена яких відповідають іменам полів input з нашої форми.
Якщо осередок існує, то обрізаємо пробіли з початку та з кінця рядка з цього осередку, інакше, перенаправляємо користувача назад на сторінку з формою реєстрації.
Далі, після того, як обрізали пробіли, додаємо рядок у змінну і перевіряємо цю змінну на порожнечу, якщо вона не є порожньою, то йдемо далі, інакше перенаправляємо користувача назад на сторінку з формою реєстрації.
Цей код вставляємо у вказане місце " // (2) Місце для наступного шматка коду".
/* Перевіряємо якщо в глобальному масиві $_POST існують дані відправлені з форми і укладаємо передані дані в звичайні змінні. = trim($_POST["first_name"]); // Перевіряємо змінну на порожнечу if(!empty($first_name))( // Для безпеки, перетворюємо спеціальні символи в HTML-сутності $first_name = htmlspecialchars($first_name, ENT_QUOTES) ; )else( // Зберігаємо в сесію повідомлення про помилку. $_SESSION["error_messages"] .= "
Вкажіть Ваше ім'я
Немає поля з ім'ям
"; //Повертаємо користувача на сторінку реєстрації header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_register.php"); //Зупиняємо скрипт exit(); ) if( isset($_POST["last_name"]))( //Обрізаємо пробіли з початку і з кінця рядка $last_name = trim($_POST["last_name"]); if(!empty($last_name))( // Для безпеки , перетворюємо спеціальні символи в HTML-сутності $last_name = htmlspecialchars($last_name, ENT_QUOTES); )else( // Зберігаємо в сесію повідомлення про помилку. $_SESSION["error_messages"] .= "
Вкажіть Ваше прізвище
"; //Повертаємо користувача на сторінку реєстрації header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_register.php"); //Зупиняємо скрипт exit(); ) )else ( // Зберігаємо у сесію повідомлення про помилку. $_SESSION["error_messages"] .= "
Немає поля з прізвищем
"; //Повертаємо користувача на сторінку реєстрації header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_register.php"); //Зупиняємо скрипт exit(); ) if( isset($_POST["email"]))( //Обрізаємо пробіли з початку і з кінця рядка $email = trim($_POST["email"]); if(!empty($email))( $email = htmlspecialchars ($email, ENT_QUOTES); // (3) Місце коду для перевірки формату поштової адреси та його унікальності )else( // Зберігаємо у сесію повідомлення про помилку. $_SESSION["error_messages"] .= "
Вкажіть Ваш email
"; //Повертаємо користувача на сторінку реєстрації header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_register.php"); //Зупиняємо скрипт exit(); ) )else ( // Зберігаємо у сесію повідомлення про помилку. $_SESSION["error_messages"] .= " "; //Повертаємо користувача на сторінку реєстрації header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_register.php"); //Зупиняємо скрипт exit(); ) if( isset($_POST["password"]))( //Обрізаємо пробіли з початку і з кінця рядка $password = trim($_POST["password"]); if(!empty($password))( $password = htmlspecialchars ($password, ENT_QUOTES); //Шифруємо папроль $password = md5($password."top_secret"); )else( // Зберігаємо в сесію повідомлення про помилку. $_SESSION["error_messages"] .= "
Вкажіть Ваш пароль
"; //Повертаємо користувача на сторінку реєстрації header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_register.php"); //Зупиняємо скрипт exit(); ) )else ( // Зберігаємо у сесію повідомлення про помилку. $_SESSION["error_messages"] .= " "; //Повертаємо користувача на сторінку реєстрації header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_register.php"); //Зупиняємо скрипт exit(); ) // (4) Місце для коду додавання користувача до БД
Особливу важливість має поле email. Ми повинні перевірити формат отриманої поштової адреси та її унікальність у БД. Тобто чи не зареєстрований уже якийсь користувач із таким самим поштовою адресою.
У зазначеному місці // (3) Місце коду для перевірки формату поштової адреси та її унікальності" додаємо наступний код:
//Перевіряємо формат отриманої поштової адреси за допомогою регулярного вираження $reg_email = "/^**@(+(*+)*\.)++/i"; //Якщо формат отриманої поштової адреси не відповідає регулярному виразу if(!preg_match($reg_email, $email))( // Зберігаємо в сесію повідомлення про помилку. $_SESSION["error_messages"] .= "
Ви ввели неправильний email
"; //Повертаємо користувача на сторінку реєстрації header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_register.php"); //Зупиняємо скрипт exit(); ) // Перевіряємо чи немає вже такої адреси в БД $result_query = $mysqli->query("SELECT `email` FROM `users` WHERE `email`="". рядків дорівнює одиниці, значить користувач з такою поштовою адресою вже зареєстрований if($result_query->num_rows == 1)( //Якщо отриманий результат не дорівнює false if(($row = $result_query->fetch_assoc()) != false) ( // Зберігаємо у сесію повідомлення про помилку. $_SESSION["error_messages"] .= "
Користувач із такою поштовою адресою вже зареєстрований
"; //Повертаємо користувача на сторінку реєстрації header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_register.php"); )else( // Зберігаємо в сесію повідомлення про помилку . $_SESSION["error_messages"] .= "
І так, ми закінчили з усіма перевірками, настав час додати користувача в БД. У зазначеному місці // (4) Місце для коду додавання користувача до БД" додаємо наступний код:
//Запит на додавання користувача до БД $result_query_insert = $mysqli->query("INSERT INTO `users` (first_name, last_name, email, password) VALUES ("".$first_name."", "".$last_name." ", "".$email."", "".$password."")"); if(!$result_query_insert)( // Зберігаємо в сесію повідомлення про помилку. $_SESSION["error_messages"] .= "
Помилка запиту на додавання користувача до БД
"; //Повертаємо користувача на сторінку реєстрації header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_register.php"); //Зупиняємо скрипт exit(); )else( $_SESSION["success_messages"] = "
Реєстрація пройшла успішно!!! Тепер Ви можете авторизуватися використовуючи Ваш логін та пароль.
// Відправляємо користувача на сторінку авторизації header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_auth.php"); ) /* Завершення запиту */ $result_query_insert-> close();// Закриваємо підключення до БД $mysqli->close();
Якщо у запиті на додавання користувача до БД сталася помилка, ми додаємо повідомлення про цю помилку до сесії та повертаємо користувача на сторінку реєстрації.
Інакше, якщо все пройшло добре, в сесію ми також додаємо повідомлення, але вже приємніша, а саме говоримо користувачеві, що реєстрація пройшла успішно. І перенаправляємо його на сторінку з формою авторизації.
Скрипт для перевірки формату поштової адреси та довжини пароля знаходиться у файлі header.phpтому він буде діяти і на поля з цієї форми.
Запуск сесії також відбувається у файлі header.phpтому у файлі form_auth.phpсесію запускати не потрібно, бо отримаємо помилку.
Як я вже сказав, скрипт перевірки формату поштової адреси та довжини пароля тут також діє. Тому якщо користувач введе неправильну поштову адресу або короткий пароль, він відразу ж отримає повідомлення про помилку. А кнопка Увійтистане не активною.
Після усунення помилок кнопка Увійтистає активною, і користувач зможе надіслати форму на сервер, де вона оброблятиметься.
Авторизація користувача
У значення атрибуту actionу фори авторизації вказано файл auth.phpЦе означає, що форма буде оброблятися саме в цьому файлі.
І так, відкриваємо файл auth.phpта пишемо код для обробки форми авторизації. Перше, що потрібно зробити це запустити сесію і підключити файл dbconnect.phpдля з'єднання із БД.
//Оголошуємо осередок додавання помилок, які можуть виникнути під час обробки форми. $_SESSION["error_messages"] = ""; //Оголошуємо осередок для додавання успішних повідомлень $_SESSION["success_messages"] = "";
/* Перевіряємо, чи була відправлена форма, тобто чи була натиснута кнопка Увійти. Якщо так, то йдемо далі, якщо ні, то виведемо користувачеві повідомлення про помилку, що він зайшов на цю сторінку безпосередньо. */ if(isset($_POST["btn_submit_auth"]) && !empty($_POST["btn_submit_auth"]))( //(1) Місце для наступного шматка коду )else( exit("
Помилка!Ви зайшли на цю сторінку безпосередньо, тому немає даних для обробки. Ви можете перейти на головну сторінку.
");
}
//Перевіряємо отриману капчу if(isset($_POST["captcha"]))( //Обрізаємо пробіли з початку і з кінця рядка $captcha = trim($_POST["captcha"]); if(!empty($captcha) ))( // Порівнюємо отримане значення зі значенням із сесії. if(($_SESSION["rand"] != $captcha) && ($_SESSION["rand"] != ""))( // Якщо капча не вірна , то повертаємо користувача на сторінку авторизації, і там виведемо йому повідомлення про помилку, що він ввів неправильну капчу. $error_message = "
Помилка!Ви ввели неправильну капчу
"; // Зберігаємо в сесію повідомлення про помилку. $_SESSION["error_messages"] = $error_message; //Повертаємо користувача на сторінку авторизації header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site ."/form_auth.php"); //Зупиняємо скрипт exit(); ) )else( $error_message = "
Помилка!Поле для введення капчі не повинно бути порожнім.
"; // Зберігаємо в сесію повідомлення про помилку. $_SESSION["error_messages"] = $error_message; //Повертаємо користувача на сторінку авторизації header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site ."/form_auth.php"); //Зупиняємо скрипт exit(); ) //(2) Місце для обробки поштової адреси //(3) Місце для обробки пароля //(4) Місце для складання запиту до БД )else ( //Якщо капча не передана exit("
Помилка!Відсутній код перевірки, тобто код капчі. Ви можете перейти на головну сторінку.
");
}
Якщо користувач ввів код перевірки правильно, то йдемо далі, інакше повертаємо його на сторінку авторизації.
Перевірка поштової адреси
//Обрізаємо прогалини з початку та з кінця рядка $email = trim($_POST["email"]); if(isset($_POST["email"]))( if(!empty($email))( $email = htmlspecialchars($email, ENT_QUOTES); // Перевіряємо формат отриманої поштової адреси за допомогою регулярного виразу $reg_email = " /^**@(+(*+)*\.)++/i"; //Якщо формат отриманої поштової адреси не відповідає регулярному виразу if(!preg_match($reg_email, $email))( // Зберігаємо в сесію повідомлення про помилку. $_SESSION["error_messages"] .= "
Ви ввели неправильний email
"; //Повертаємо користувача на сторінку авторизації header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_auth.php"); //Зупиняємо скрипт exit(); ) )else ( // Зберігаємо у сесію повідомлення про помилку. $_SESSION["error_messages"] .= "
Поле для введення поштової адреси не повинно бути порожнім.
"; //Повертаємо користувача на сторінку реєстрації header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_register.php"); //Зупиняємо скрипт exit(); ) )else ( // Зберігаємо у сесію повідомлення про помилку. $_SESSION["error_messages"] .= "
Відсутнє поле для введення електронної пошти
"; //Повертаємо користувача на сторінку авторизації header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_auth.php"); //Зупиняємо скрипт exit(); ) // (3) Місце для обробки пароля
Якщо користувач ввів поштову адресу в неправильному форматі або значення поля поштової адреси є порожнім, ми повертаємо його на сторінку авторизації, де виводимо повідомлення про це.
Перевірка пароля
Наступне поле обробки, це поле з паролем. У вказане місце //(3) Місце для обробки пароля", пишемо:
If(isset($_POST["password"]))( //Обрізаємо пробіли з початку і з кінця рядка $password = trim($_POST["password"]); if(!empty($password))( $password = htmlspecialchars($password, ENT_QUOTES); //Шифруємо пароль $password = md5($password."top_secret"); )else( // Зберігаємо в сесію повідомлення про помилку. $_SESSION["error_messages"] .= "
Вкажіть Ваш пароль
"; //Повертаємо користувача на сторінку реєстрації header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_auth.php"); //Зупиняємо скрипт exit(); ) )else ( // Зберігаємо у сесію повідомлення про помилку. $_SESSION["error_messages"] .= "
Відсутнє поле для введення пароля
"; //Повертаємо користувача на сторінку реєстрації header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_auth.php"); //Зупиняємо скрипт exit(); )
Тут ми за допомогою функції md5() шифруємо отриманий пароль, тому що в БД паролі ми знаходяться саме в зашифрованому вигляді. Додаткове секретне слово у шифруванні, у нашому випадку top_secretповинна бути та яка використовувалася і при реєстрації користувача.
Тепер необхідно зробити запит до БД на вибірці користувача, у якого поштова адреса дорівнює отриманій поштовій адресі і пароль дорівнює отриманому паролю.
/ / Запит у БД на вибірці користувача. $result_query_select = $mysqli->query("SELECT * FROM `users` WHERE email = "".$email."" AND password = "".$password."""); if(!$result_query_select)( // Зберігаємо в сесію повідомлення про помилку. $_SESSION["error_messages"] .= "
Помилка запиту на вибірці користувача з БД
"; //Повертаємо користувача на сторінку реєстрації header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_auth.php"); //Зупиняємо скрипт exit(); )else( //Перевіряємо, якщо в базі немає користувача з такими даними, то виводимо повідомлення про помилку if($result_query_select->num_rows == 1)( // Якщо введені дані збігаються з даними з бази, зберігаємо логін і пароль в масив сесій. $_SESSION["email"] = $email; $_SESSION["password"] = $password; //Повертаємо користувача на головну сторінку header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/index.php"); )else( // Зберігаємо в сесію повідомлення про помилку. $_SESSION["error_messages"] .= "
Неправильний логін та/або пароль
"; //Повертаємо користувача на сторінку авторизації header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_auth.php"); //Зупиняємо скрипт exit(); ) )
Вихід із сайту
І останнє, що ми реалізуємо, це процедура виходу із сайту. На даний момент у шапці у нас виводяться посилання на сторінку авторизації та на сторінку реєстрації.
У шапці сайту (файл header.php), за допомогою сесії ми перевіряємо, чи вже авторизований користувач. Якщо ні, то виводимо посилання реєстрації та авторизації, інакше (якщо він авторизований) то замість посилань реєстрації та авторизації виводимо посилання Вихід.
Модифікований шматок коду із файлу header.php:
Реєстрація
Вихід
При натисканні на посилання виходу з сайту ми потрапляємо у файл logout.php, де просто знищуємо осередки з поштовою адресою та паролем із сесії. Після цього повертаємо користувача назад на ту сторінку, на якій було натиснуто посилання вихід.
Код файлу logout.php:
На цьому все. Тепер Ви знаєте як реалізувати та обробляти форми реєстрації та авторизаціїкористувача на своєму сайті. Ці форми зустрічаються майже кожному сайті, тому кожен програміст повинен знати, як створювати.
Ще ми навчилися перевіряти дані, що вводяться, як на стороні клієнта (у браузері, за допомогою JavaScript, jQuery) так і на стороні сервера (за допомогою мови PHP). Також ми навчилися реалізувати процедуру виходу із сайту.
Усі скрипти перевірені та робітники. Архів з файлами цього маленького сайту Ви можете завантажити за цим посиланням.
У майбутньому я напишу статтю де опишу. І ще планую написати статтю, де поясню, (без перезавантаження сторінки). Так що для того, щоб бути в курсі про вихід нових статей, можете підписатися на мій сайт.
При виникненні питань звертайтеся також, якщо ви помітили, якусь помилку в статті прошу вас, повідомте мені про це.
План уроку (Частина 5):
Створюємо HTML структуру для форми авторизації
Обробляємо отримані дані
Виводимо вітання користувача до шапки сайту
Сподобалась стаття?
Адаптивне з функціями форм входу та реєстрації, з можливістю динамічного перемикання, без перезавантаження сторінки. Після появи вікна користувач може легко перемикатися з однієї в іншу, і при необхідності, вибрати опцію зміни пароля. Сьогодні ми розглянемо як все це можна реалізувати за допомогою зв'язування невеликого, але дуже функціонального плагіну jQuery та нових стандартів CSS3.
Цей метод буде корисним, якщо ви захочете зробити так, щоб форми входу та реєстрації були доступні для користувачів на кожній сторінці вашого сайту. При вході на сайт або реєстрації користувачі не будуть перенаправлені на іншу сторінку, і зможуть виконувати всі необхідні дії «не відходячи від каси», все на одній сторінці.
Оформлення зовнішнього виглядуспливаючих форм реалізовано за допомогою CSS3, загальна вага плагіна зовсім невелика, відгук і завантаження модального вікна відбувається практично без затримок. Стовідсотково адаптивний макет, висота та ширина модального вікна з формами, автоматично встановлюються відповідно до розмірів екранів пристроїв.
Приклад подивилися, тепер давайте, розберемо у деталях всі основні компоненти модального вікна та форм, для того щоб навчитися використовувати їх у себе на сайті. Робота спливаючого вікна з формами входу та реєстрації, побудована на популярній бібліотеці JavaScript, виконуваному плагіні jQuey і сформованих стилях CSS. Всі ці інструменти потрібно підключити до вашого сайту. Остання актуальна версія бібліотеки jQuey можна підключити безпосередньо з Google, сам файл плагіна main.js і готовий набір сформованих стилів style.css знайдете в архіві. Javascript прописуємо перед тегом, що закриває , стилі CSSможна скопіювати та додати до файлу стилів.css вашого сайту.
HTML Структура:
Базовий контейнер модальних вікон на затемненому фоні та вбудовані форми з елементами управління розміщуємо в тілі сторінки. Для більшого розуміння, розмежував сектори та додав коментарі. Всі елементи конструкції, міцно пов'язані з CSS через певні класи, так що змінити дизайн форм відповідно до загального дизайну ваших сайтів, не складе особливих труднощів.
<
div class
=
"cd-user-modal"
>
<
div class
=
"cd-user-modal-container"
>
<
ul class
=
"cd-switcher"
>
<
li><
a href=
"#0"
>Вхід
a>
li>
<
li><
a href=
"#0"
>Реєстрація
a>
li>
ul>
<
div id=
"cd-login"
>
<
form class
=
"cd-form"
>
<
p class
=
"fieldset"
>
<
label class
=
"image-replace cd-email"
for
=
"signin-email"
>E-mail
label>
<
input class
=
id=
"signin-email"
type=
"email"
placeholder=
"E-mail"
>
<
span class
=
"cd-error-message"
>Тут повідомлення про помилку!
span>
p>
<
p class
=
"fieldset"
>
<
label class
=
"image-replace cd-password"
for
=
"signin-password"
>Пароль
label>
<
input class
=
"full-width has-padding has-border" id= "signin-password" type= "text" placeholder= "(!LANG:Пароль"
>
!}<
a href=
"#0"
class
=
"hide-password"
>Приховати
a>
<
span class
=
"cd-error-message"
>Тут повідомлення про помилку!
span>
p>
<
p class
=
"fieldset"
>
<
input type=
"checkbox"
id=
"remember-me"
checked>
<
label for
=
"remember-me"
>Запам'ятати мене
label>
p>
<
p class
=
"fieldset"
>
<
input class
=
"full-width"
type=
"submit"
value=
"Увійти"
>
p>
form>
<
p class
=
"cd-form-bottom-message"
><
a href=
"#0"
>Забули свій пароль?
a>
p>
div>
<
div id=
"cd-signup"
>
<
form class
=
"cd-form"
>
<
p class
=
"fieldset"
>
<
label class
=
"image-replace cd-username"
for
=
"signup-username"
>Ім'я користувача
label>
<
input class
=
"full-width has-padding has-border" id="signup-username" type="text" placeholder= "Ім'я користувача">
<
span class
=
"cd-error-message"
>Тут повідомлення про помилку!
span>
p>
<
p class
=
"fieldset"
>
<
label class
=
"image-replace cd-email"
for
=
"signup-email"
>E-mail
label>
<
input class
=
"full-width has-padding has-border" id= "signup-email" type= "email" placeholder= "(!LANG:E-mail"
>
!}<
span class
=
"cd-error-message"
>Тут повідомлення про помилку!
span>
p>
<
p class
=
"fieldset"
>
<
label class
=
"image-replace cd-password"
for
=
"signup-password"
>Пароль
label>
<
input class
=
"full-width has-padding has-border" id= "signup-password" type= "text" placeholder= "(!LANG:Пароль"
>
!}<
a href=
"#0"
class
=
"hide-password"
>Приховати
a>
<
span class
=
"cd-error-message"
>Тут повідомлення про помилку!
span>
p>
<
p class
=
"fieldset"
>
<
input type=
"checkbox"
id=
"accept-terms"
>
<
label for
=
"accept-terms"
>Я згоден з<
a href=
"#0"
>умовами
a>
label>
p>
<
p class
=
"fieldset"
>
<
input class
=
"full-width has-padding"
type=
"submit"
value=
"Створити акаунт">
p>
form>
div>
<
div id=
"cd-reset-password"
>
<
p class
=
"cd-form-message"
>Забули пароль? Будь ласка, введіть адресу електронної пошти. Ви отримаєте посилання, щоб створити новий пароль.
p>
<
form class
=
"cd-form"
>
<
p class
=
"fieldset"
>
<
label class
=
"image-replace cd-email"
for
=
"reset-email"
>E-mail
label>
<
input class
=
"full-width has-padding has-border" id= "reset-email" type= "email" placeholder= "(!LANG:E-mail"
>
!}<
span class
=
"cd-error-message"
>Тут повідомлення про помилку!
span>
p>
<
p class
=
"fieldset"
>
<
input class
=
"full-width has-padding"
type=
"submit"
value=
"Відновити пароль">
p>
form>
<
p class
=
"cd-form-bottom-message"
><
a href=
"#0"
>Повернутись до входу
a>
p>
div>
<
a href=
"#0"
class
=
"cd-close-form"
>Закрити
a>
div>
div>
Вхід
Реєстрація
Забули свій пароль?
Забули пароль? Будь ласка, введіть адресу електронної пошти. Ви отримаєте посилання, щоб створити новий пароль.
Повернутись до входу
Закрити
CSS Стилі:
Базовий шаблон та елементи управління форм автор виконав у популярному, плоскому стилі (Flat), з явним упором на мінімалізм. Нічого зайвого, в міру прозорий фонзатемнення, легкі для сприйняття кольору, добре підібраний шрифт та іконки для позначення полів введення. За допомогою властивостей CSS, ви легко зможете змінити будь-який елемент форм.
В ефекті переходу появи додано затримку, щоб добитися плавного зникнення модального вікна при закритті.
Примітка. Розмір шрифту всіх полів введення встановлено за замовчуванням 16px. Це запобігає автоматичному масштабуванню, яке відбувається під час перегляду на мобільних пристроях.
Авторська, буржуїнська версія плагіну знаходиться. Там же ви зможете завантажити оригінал. Російську версію, можете забрати з мого Яндекс.Диска, всі необхідні файли, дбайливо запаковані в один архів, перед цим не забудьте подивитися, повністю адаптований, живий приклад роботи цього чудового плагіна jQuery: