Робимо відмінну систему реєстрації з використанням PHP, MySQL та jQuery. Покрокова реєстрація засобами jQuery PHP форма реєстрації у стилі Facebook
Робимо відмінну систему реєстрації з використанням PHP, MySQL та jQuery. Покрокова реєстрація засобами jQuery PHP форма реєстрації у стилі Facebook
02.12.2016
Якщо вам необхідно зробити один із розділів свого сайту доступним обмеженому, але невизначеному колу осіб, найпростіше це зробити за допомогою реєстрації та авторизації користувачів. Є багато способів авторизації користувачів. Можна використовувати інструменти веб-сервера та інструменти мови програмування. Ми поговоримо про випадок, коли використовуються сесії PHP.
Ймовірно, ви хотіли б побачити сучасніший спосіб створення такої форми. Повне його сучасне та актуальне уявлення у мене поки що в планах, зате ви можете побачити, що форму зворотного зв'язку можна побудувати за допомогою об'єктно-орієнтованих прийомів у PHP.
Для початку обговоримо всі кроки, які зробимо далі. Що нам взагалі потрібне? Нам потрібен сценарій, який реєструватиме користувача, авторизуватиме користувача, переадресовуватиме користувача кудись після авторизації. Також нам потрібно буде створити сторінку, яку буде захищено від доступу неавторизованих користувачів. Для реєстрації та авторизації нам необхідно буде створити HTML-форми. Інформацію про зареєстрованих користувачів ми зберігатимемо у базі даних. Це означає, що нам ще потрібен скрипт підключення до СУБД. Усю роботу ми виконуватимемо функції, які ми самі напишемо. Ці функції ми збережемо окремий файл.
Отже, нам потрібні такі файли:
з'єднання із СУБД;
функції користувача;
авторизація;
реєстрація;
захищена сторінка;
сценарій завершення роботи користувача;
сценарій, що перевіряє статус авторизації користувача;
таблиця стилів для найпростішого оформлення сторінок.
Все це буде безглуздо, якщо у вас немає відповідної таблиці у базі даних. Запустіть інструмент управління своїм СУБД (PhpMyAdmin або командний рядок, як зручніше) і виконайте в ньому наступний запит:
CREATE TABLE `users` (`id` int(11) NOT NULL AUTO_INCREMENT, `login` char(16) NOT NULL, `password` char(40) NOT NULL, `reg_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Наші файли зі сценаріями я назву так (всі вони будуть лежати в одному каталозі):
database.php;
functions.php;
login.php;
registration.php;
index.php;
logout.php;
checkAuth.php;
style.css
Призначення кожного з них, напевно, вам зрозуміле. Почнемо зі скрипту з'єднання із СУБД. Ви його вже бачили. Просто збережіть код цього скрипта у файлі з ім'ям database.php. Функції користувача ми будемо оголошувати у файлі functions.php . Як це все працюватиме? Неавторизований користувач намагається отримати доступ до захищеного документа index.php , система перевіряє чи авторизований користувач, якщо користувач не авторизований, він переадресовується на сторінку авторизації. На сторінці авторизації користувач має бачити форму авторизації. Давайте зробимо її.
Авторизація користувачів
зареєструйтесь.
Тепер нашій формі потрібно надати якогось вигляду. Заодно визначимо правила інших елементів. Я, забігаючи наперед, наведу вміст таблиці стилів повністю.
Якщо все зроблено правильно, у вас у броузері має бути таке:
Звичайно ж, у нас немає поки жодного зареєстрованого користувача, і щоб авторизуватися, потрібно зареєструватися. Давайте зробимо форму реєстрації.
Реєстрація користувачів
Ви, напевно, звернули увагу на те, що в HTML коді присутні змінні PHP. Вони є вмістом атрибутів текстових полів форм, вміст контейнерів, призначених для виведення помилок. Але ми не ініціалізували ці змінні. Давайте зробимо це.
// Инициализируем переменные для введенных значений и возможных ошибок
$errors = array();
$fields = array();
?>
Реєстрація користувачів
В атрибуті action тега form не вказано параметр. У цьому випадку при надсиланні даних форми оброблятися вони будуть у тому ж сценарії, з якого вони й відправлялися. Значить, нам потрібно написати код, який обробляє дані форми. Але давайте спочатку обмовимо алгоритм їхньої обробки.
Нам потрібно, щоб поля логіну та паролю не були порожніми. Потім необхідно перевірити логін на відповідність до вимог. Пароль також повинен відповідати описаним вимогам, а повторно вказаний пароль повинен з ним збігатися і, крім того, вони мають бути ідентичними. Якщо якась із цих умов не виконується, обробка даних форми повинна бути припинена, в масив повідомлень про помилку має бути записане відповідне сповіщення, і воно має бути відображене користувачеві. Для зручності користувача ми збережемо введений ним логін (якщо він його вказав), записавши його значення масив $fields .
Якщо все нормально, у вікні вашого броузера, звернувшись до документа registration.php, ви маєте побачити приблизно таку форму:
Тепер, скажімо, користувач натиснув на кнопку реєстрації, не заповнив поля форми. Відповідно до нашого алгоритму, логін та пароль не можуть бути порожніми. Якщо ця умова не виконується, реєстрація неможлива. Ми пам'ятаємо, що обробка даних форми відбувається в поточному сценарії. Значить, нам потрібно змінити його код, додавши відповідні перевірки. Відразу ж обмовимо і такі перевірки. Якщо введено і логін, і пароль, потрібно перевірити їхню відповідність зазначеним вимогам. Для перевірки логіну і пароля ми створимо функції користувача у файлі functions.php.
/** * functions.php * Файл з функціями користувача */ // Підключаємо файл з параметрами підключення до СУБД require_once("database.php"); // Перевірка імені користувача function checkLogin($str) ( // Ініціалізуємо змінну з можливим повідомленням про помилку $error = ""; // Якщо немає рядка з логіном, повертаємо повідомлення про помилку if(!$str) ( $error = " Ви не ввели ім'я користувача"; return $error; ) /** * Перевіряємо ім'я користувача за допомогою регулярних виразів бути символи "_", "-", "." */ $pattern = "/^[-_.az\d](4,16)$/i"; $result = preg_match($pattern, $str) ; // Якщо перевірка не пройшла, повертаємо повідомлення про помилку if(!$result) ( $error = "Неприпустимі символи в імені користувача або ім'я користувача занадто коротке (довге)"; return $error; ) // Якщо все нормально, повернемо значення true return true; ) // Перевірка пароля користувача function checkPassword($str) ( // Ініціалізуємо змінну з можливим повідомленням про помилку $error = ""; // Якщо відсутня е рядок з логіном, повертаємо повідомлення про помилку if(!$str) ( $error = "Ви не ввели пароль"; return $error; ) /** * Перевіряємо пароль користувача за допомогою регулярних виразів * Пароль повинен бути не коротшим за 6, не довшим за 16 символів * У ньому повинні бути символи латинського алфавіту, цифри, * у ньому можуть бути символи "_", "!", " (", ")" */ $pattern = "/^[_!)(.az\d](6,16)$/i"; $result = preg_match($pattern, $str); // Якщо перевірка не пройшла, повертаємо повідомлення про помилку if(!$result) ( $error = "Неприпустимі символи в паролі користувача або пароль занадто короткий (довгий)"; return $error; ) // Якщо все нормально, повернемо значення true return true; )
Тепер потрібно змінити файл registration.php, щоб задіяти оголошені нами функції. До сценарію ми додамо умову, яка перевіряє натискання кнопки реєстрації. Усередині цієї умови запускається перевірка логіну та паролів. У випадку, якщо якась із перевірок завершується невдачею, ми знову відображаємо форму і виводимо повідомлення про помилку. Якщо помилок немає, ми реєструємо користувача, форму реєстрації при цьому вже не відображаємо, повідомляємо користувача про успішну реєстрацію, і за допомогою функції header() переадресовуємо його до форми авторизації.
/**
* registration.php
* Страница регистрации пользователей. Предполагается, что в вашей
* базе данных присутствует таблица пользователей users, в которой
* есть поля id, login, password, reg_date
*/
// Подключаем файл с пользовательскими функциями
require_once("functions.php");
// Инициализируем переменные для введенных значений и возможных ошибок
$errors = array();
$fields = array();
// Заранее инициализируем переменную регистрации, присваивая ей ложное значение
$reg = false;
// Если была нажата кнопка регистрации
if(isset($_POST["submit"])) {
// Делаем массив сообщений об ошибках пустым
$errors["login"] = $errors["password"] = $errors["password_again"] = "";
// С помощью стандартной функции trim() удалим лишние пробелы
// из введенных пользователем данных
$fields["login"] = trim($_POST["login"]);
$password = trim($_POST["password"]);
$password_again = trim($_POST["password_again"]);
// Если логин не пройдет проверку, будет сообщение об ошибке
$errors["login"] = checkLogin($fields["login"]) === true ? "" : checkLogin($fields["login"]);
// Если пароль не пройдет проверку, будет сообщение об ошибке
$errors["password"] = checkPassword($password) === true ? "" : checkPassword($password);
// Если пароль введен верно, но пароли не идентичны, будет сообщение об ошибке
$errors["password_again"] = (checkPassword($password) === true && $password === $password_again) ? "" : "Введенные пароли не совпадают";
// Если ошибок нет, нам нужно добавить информацию о пользователе в БД
if($errors["login"] == "" && $errors["password"] == "" && $errors["password_again"] == "") {
// Вызываем функцию регистрации, её результат записываем в переменную
$reg = registration($fields["login"], $password);
// Если регистрация прошла успешно, сообщаем об этом пользователю
// И создаем заголовок страницы, который выполнит переадресацию к форме авторизации
if($reg === true) {
$message = "
Ви успішно реєструвалися в системі. Зараз ви будете переадресовані до сторінки авторизації. Якщо цього не сталося, перейдіть на неї за прямим посиланням.
У скрипті ви мали помітити ще одну нову функцію — registration() . А ми її ще не оголошували. Давайте зробимо це.
// Функція реєстрації користувача function registration($login, $password) ( // Ініціалізуємо змінну з можливим повідомленням про помилку $error = ""; // Якщо немає рядка з логіном, повертаємо повідомлення про помилку if(!$login) ( $ error = "Не вказано логін"; // Пишемо рядок запиту $sql = "SELECT `id` FROM `users` WHERE `login`="" . $login . """; // Робимо запит до бази $query = mysql_query($sql) or die( ""); // Дивимося на кількість користувачів з таким логіном, якщо є хоч один, // повертаємо повідомлення про помилку if(mysql_num_rows($query) > 0) ( $error = "Користувач із зазначеним логіном вже зареєстрований"; return $ error; ) // Якщо такого користувача немає, реєструємо його // Пишемо рядок запиту $sql = "INSERT INTO `users` (`id`,`login`,`password`) VALUES (NULL, "" . $login ." ","". $password. "")"; // Робимо запит до бази $query = mysql_query($sql) or die("
Неможливо додати користувача: " . mysql_error() . ". Помилка сталася у рядку " . __LINE__ . "
"); // Не забуваємо відключитися від СУБД mysql_close(); // Повертаємо значення true, що повідомляє про успішну реєстрацію користувача return true; )
Якщо все нормально, ваш користувач буде зареєстровано. Можете потестувати форму. Спробуйте зареєструвати користувачів із однаковими логінами. Після успішної реєстрації користувач буде переадресований до форми авторизації. Раніше ми створили розмітку для відображення цієї форми. Оскільки в її атрибуті action не вказано жодного параметра, дані, надіслані формою, будуть оброблятися у цьому сценарії. Значить, нам потрібно написати код для обробки, і додати його в документ login.php.
/**
* Страница авторизации пользователей. Предполагается,
* что в вашей базе данных присутствует таблица users,
* в которой существуют поля id, login и password
*/
// Подлючаем файл с пользовательскими функциями
require_once("functions.php");
// Заранее инициализируем переменную авторизации, присвоив ей ложное значение
$auth = false;
// Если была нажата кнопка авторизации
if(isset($_POST["submit"])) {
// Делаем массив сообщений об ошибках пустым
$errors["login"] = $errors["password"] = $errors["password_again"] = "";
// С помощью стандартной функции trim() удалим лишние пробелы
// из введенных пользователем данных
$login = trim($_POST["login"]);
$password = trim($_POST["password"]);
// Авторизуем пользователя
// Вызываем функцию регистрации, её результат записываем в переменную
$auth = authorization($login, $password);
// Если авторизация прошла успешно, сообщаем об этом пользователю
// И создаем заголовок страницы, который выполнит переадресацию на защищенную
// от общего доступа страницу
if($auth === true) {
$message = "";
header("Refresh: 5; URL = /");
}
// Иначе сообщаем пользователю об ошибке
else {
$errors["full_error"] = $auth;
}
}
?>
Авторизація користувачів
// Если запущен процесс авторизации, но она не была успешной,
// или же авторизация еще не запущена, отображаем форму авторизации
if($auth !== true) {
?>
;">
// Выводим сообщение об ошибке, если оно есть
echo $errors["full_error"] ? $errors["full_error"] : "";
?>
Якщо ви не зареєстровані у системі, зареєструйтесь.
} // Закрывающая фигурная скобка условного оператора проверки успешной авторизации
// Иначе выводим сообщение об успешной авторизации
else {
print $message;
}
/**
* Если всё правильно, будет выведено сообщение об успешной авторизации,
* пользователь будет переадресован на защищенную страницу
*/
?>
Ви, мабуть, помітили, що у скрипті авторизації у нас з'явилася ще одна незнайома функція – authorization(). Ця функція повинна авторизувати користувача, попередньо перевіривши, чи існує в базі даних зареєстрований користувач із таким логіном та паролем. Якщо такого користувача не буде знайдено, авторизація буде перервана, на екран буде виведено повідомлення про невдачу. У разі успішної перевірки функція authorization() запустить сесію, і запише в неї значення логіну та пароля користувача, повідомить сценарій про успішність авторизації, і сценарій перенаправить користувача на захищену сторінку ресурсу.
/** * Функція авторизації користувача. * Авторизація користувачів у нас буде здійснюватися * за допомогою сесій PHP. */ function authorization($login, $password) ( // Ініціалізуємо змінну з можливим повідомленням про помилку $error = ""; // Якщо немає рядка з логіном, повертаємо повідомлення про помилку if(!$login) ( $error = " Не вказано логін"; return $error; ) elseif(!$password) ( $error = "Не вказано пароль"; return $error; ) // Перевіряємо, чи вже не зареєстрований користувач // Підключаємося до СУБД connect(); // Нам потрібно перевірити, чи є такий користувач серед зареєстрованих // Складаємо рядок запиту $sql = "SELECT `id` FROM `users` WHERE `login`="".$login."" AND `password`="".$password ."""; // Виконуємо запит $query = mysql_query($sql) or die("
Неможливо виконати запит: ". mysql_error().". Помилка сталася у рядку " . __LINE__ . "
"); // Якщо користувача з такими даними немає, повертаємо повідомлення про помилку if(mysql_num_rows($query) == 0) ( $error = "Користувач із зазначеними даними не зареєстрований"; return $error; ) // Якщо користувач існує , запускаємо сесію session_start(); // І записуємо в неї логін та пароль користувача // Для цього ми використовуємо суперглобальний масив $_SESSION $_SESSION["login"] = $login; $_SESSION["password"] = $password; / Не забуваємо закривати з'єднання з базою даних mysql_close(); // Повертаємо true для повідомлення про успішну авторизацію користувача return true;
Коли користувач потрапляє на захищену сторінку, перевірте коректність даних про його авторизацію. Для цього нам знадобиться ще одна функція користувача. Назвемо її checkAuth(). Її завданням буде звіряння даних авторизації користувача з тими, що зберігаються в нашій базі. Якщо дані не співпадуть, користувач буде перенаправлено на сторінку авторизації.
Function checkAuth($login, $password) ( // Якщо немає логіну або пароля, повертаємо false if(!$login || !$password) return false; // Чи перевіряємо зареєстрований такий користувач // Підключаємося до СУБД connect(); // Складаємо рядок запиту $sql = "SELECT `id` FROM `users` WHERE `login`="".$login."" AND `password`="".$password."""; // Виконуємо запит $ query = mysql_query($sql) or die("
Неможливо виконати запит: ". mysql_error().". Помилка сталася у рядку " . __LINE__ . "
"); // Якщо користувача з такими даними немає, повертаємо false; if(mysql_num_rows($query) == 0) ( return false; ) // Не забуваємо закривати з'єднання з базою даних mysql_close(); // Інакше повертаємо true return true; )
Тепер, коли користувач потрапив до захищеної сторінки, ми повинні викликати функцію перевірки даних авторизації. Сценарій виклику та перевірки ми помістимо в окремий файл checkAuth.php та підключатимемо його до тих сторінок, які будуть закритими для загального доступу.
/** * Скрипт перевірки авторизації користувачів */ // Запускаємо сесію, з якої будемо отримувати логін і пароль // авторизованих користувачів session_start(); // Підключаємо файл з функціями користувача require_once("functions.php"); /** * Щоб визначити чи авторизований користувач, нам потрібно * перевірити чи існують у базі даних записи для його логіна * та пароля. Для цього скористаємося функцією користувача * перевірки коректності даних авторизованого користувача. * Якщо ця функція поверне false, то авторизації немає. * За відсутності авторизації ми просто переадресовуємо користувача до сторінки авторизації. */ // Якщо в сесії присутні дані і про логіну, і про пароль, // перевіряємо їх if(isset($_SESSION["login"]) && $_SESSION["login"] && isset($_SESSION["password" ]) && $_SESSION["password"]) ( // Якщо перевірка існуючих даних завершується невдачею if(!checkAuth($_SESSION["login"], $_SESSION["password"])) ( // Переадресовуємо користувача на сторінку авторизації header("location: login.php"); // Припиняємо виконання скрипту exit; ) ) // Якщо даних або про логіну, або про пароль користувача немає, // вважаємо що авторизації немає, переадресовуємо користувача // на сторінку авторизації else ( header("location: login.php"); // Припиняємо виконання сценарію exit;
А тепер давайте створимо код нашої захищеної сторінки. Він буде досить простий.
/**
* Защищенная страница. К ней возможен доступ только авторизованным
* пользователям. Если пользователь не авторизован, ему предлагается
* авторизоваться, и доступ к сайту ограничивается.
*/
require_once("checkAuth.php");
?>
Авторизація та реєстрація користувачів
Успішна авторизація.
Ви отримали доступ до захищеної сторінки. Ви можете вийти із системи.
Як бачите, у захищеному документі ми підключаємо лише один файл – checkAuth.php. Інші файли підключаються вже в інших сценаріях. Тому наш код не виглядає громіздким. Реєстрацію та авторизацію користувачів ми організували. Тепер необхідно дозволити користувачам виходити із системи. Для цього ми створимо сценарій у файлі logout.php.
/** * Скрипт виходу користувача із системи. Оскільки користувачі авторизуються через сесії, їх логін і пароль зберігаються в суперглобаному масиві $_SESSION. Щоб здійснити * вихід із системи, досить просто знищити значення * масиву $_SESSION["login"] і $_SESSION["password"], після чого ми переадресовуємо користувача до сторінки авторизації */ // Обов'язково запускаємо сесію session_start(); unset($_SESSION["login"]); unset($_SESSION["password"]); header("location: login.php");
Скрипт реєстрації, авторизації та перевірки користувачів готовий. Ви можете використовувати його у себе, доповнювати, змінювати під ваші потреби. Якщо у вас будуть питання, можете ставити їх у коментарях. Ви можете завантажити всі файли, про які тут йшлося, упаковані в один архів .
P.S. Я в курсі, що краще писати об'єктно-орієнтований код, знаю, що передавати та зберігати пароль у відкритому вигляді не варто, що інформацію, що заноситься до бази даних, необхідно попередньо перевіряти. Я знаю. Про це я тут не говоритиму.
Адаптивне з функціями форм входу та реєстрації, з можливістю динамічного перемикання, без перезавантаження сторінки. Після появи вікна користувач може легко перемикатися з однієї в іншу, і при необхідності, вибрати опцію зміни пароля. Сьогодні ми розглянемо як все це можна реалізувати за допомогою зв'язування невеликого, але дуже функціонального плагіну 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:
З повагою Андрій
У цьому уроці ми створимо стильну форму авторизації на сайті, ви можете її знайти у Futurico UI Pro, створеному Володимиром Кудіновим. Для створення форми ми будемо використовувати CSS3 та jQuery.
Крок 1 - HTML-розмітка
Почнемо із створення HTML-розмітки. Створимо форму з чотирма input-ами (ім'я користувача, пароль, чекбокс та кпонка "submit") прапорець ми обернемо в тег span, який ми будемо використовувати для стилізації цього прапорця. Потім обернемо форму та заголовок у тег DIV та призначимо йому клас "login-form".
>
Login Form
>
>
>
Крок 2 - Загальні стилі
Спочатку видалимо всі поля, відступи, межі тощо. із елементів, які ми будемо використовувати.
Webkit-transition: all .15s ease-in-out; -Moz-transition: all .15s ease-in-out; -o-transition: all .15s ease-in-out; transition: all .15s ease-in-out; }
Потім ми поставимо стилі для полів введення логіну та паролю. Ми додамо градієнт сірий фон і тіні. Ми також додамо фіксовану ширину, рівну 170px, та колір для тексту.
Тепер починається найважча частина, тому що ми не можемо змінювати вид прапорців за допомогою CSS, тому що ми змінювали вигляд інших полів форми.
Найпростіший спосіб, який я знайшов, це замінити прапорець тегом span.
Це буде працювати наступним чином: спочатку ми сховаємо прапорець і задамо такі стилі для тега span, щоб він виглядав як прапорець, а потім ми будемо оновлювати цей прапорець (позначений/не помічений) за допомогою jQuery.
Оскільки у деяких користувачів вимкнено JavaScript, потрібно додати резервний варіант. Для цього ми додаватимемо "js"клас у тег body за допомогою jQuery. Таким чином, якщо JavaScript буде увімкнено, клас "js" буде доданий до тега body при завантаженні сторінки, а якщо JavaScript вимкнено, то клас не буде доданий. Отже, тільки користувачі з підтримкою JavaScript будуть бачити стилізований прапорець.
Усі стилі, які мають клас "js" на початку, будуть застосовуватись лише якщо включена підтримка JavaScript.
Крок 6 - jQuery
Спочатку ми підключимо останню версію бібліотеки jQuery, використовуючи Google API, якщо ви хочете, ви можете розмістити її на власному сервері, це ваш вибір. Потім додайте наступний код у нижній частині HTML-файлу, перед закриваючим тегом .
Якщо у Вас виникли питання, то для якнайшвидшого отримання відповіді рекомендуємо скористатися нашим форумом
Доброї доби друзі! Давай з Вами розглянемо реєстрацію користувачів на PHP. Для початку давайте визначимо умови для нашої реєстрації користувачів:
Пароль шифруємо за допомогою алгоритму MD5
Пароль "солити"
Перевірка на зайнятість Логіна
Активація користувача листом.
Запис та зберігання даних у СУБД MySQL
Для написання цього скрипта нам потрібно зрозуміти, що таке реєстрація користувача. Реєстрація користувача – це отримання даних реального користувача, обробка та зберігання даних.
Якщо пояснювати простими словами то реєстрація це лише запис і зберігання певних даних за якими ми можемо авторизувати користувача в нашому випадку - це Логін і Пароль.
Авторизація – надання певній особі або групі осіб прав на виконання певних дій, а також процес перевірки даних прав під час спроби виконання цих дій. Проще кажучи, за допомогою авторизації ми можемо розмежувати доступ до того чи іншого контенту на нашому сайті.
Розглянемо структуру каталогів скриптів реалізації нашої реєстрації з авторизацією. Нам потрібно розбити скрипти на логічні складові. Модулі реєстрації та авторизації ми помістивши в окремий каталог. Також в окремі каталоги ми помістимо підключення до бази даних MySQL, файл з функціями користувача, файл стилів CSSі наш шаблон HTML. Ця структура дозволяє швидко орієнтуватися у скриптах. Уявіть собі, що у вас великий сайт з купою модулів і т.д. і якщо не буде порядку, то буде дуже складно щось знайти в такому бардаку.
Так як ми зберігатимемо всі дані в СУБД MySQL, то давайте створимо невелику таблицю в якій зберігатимемо дані про реєстрацію.
Для початку необхідно створити таблицю в базі даних. Таблицю назвемо bez_regде bez- це префікс таблиці, а regназву таблиці.
Структура таблиці: bez_reg
-- -- Структура таблиці `bez_reg` -- CREATE TABLE IF NOT EXISTS `bez_reg` (`id` int(11) NOT NULL AUTO_INCREMENT, `login` varchar(200) NOT NULL, `pass` varchar(32) NOT NULL , `salt` varchar(32) NOT NULL, `active_hex` varchar(32) NOT NULL, `status` int(1) NOT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Тепер створимо основні скрипти для подальшої роботи.
Файл INDEX.PHP
Файл CONFIG.PHP
!defined("BEZ_KEY"))
{
header("HTTP/1.1 404 Not Found");
exit(file_get_contents("./404.html"));
}
//Адрес базы данных
define("BEZ_DBSERVER","localhost");
//Логин БД
define("BEZ_DBUSER","");
//Пароль БД
define("BEZ_DBPASSWORD","");
//БД
define("BEZ_DATABASE","");
//Префикс БД
define("BEZ_DBPREFIX","bez_");
//Errors
define("BEZ_ERROR_CONNECT","Немогу соеденится с БД");
//Errors
define("BEZ_NO_DB_SELECT","Данная БД отсутствует на сервере");
//Адрес хоста сайта
define("BEZ_HOST","http://". $_SERVER["HTTP_HOST"] ..ru>");
?>