Красивая заглушка. Приступаем к работе

В этой статье мы рассмотрим пошаговую регистрацию с использованием jQuery .

Если регистрация на вашем сайте предусматривает заполнение нескольких десятков полей, очень не рационально размещать их на одной странице. Ведь пользователь существо очень ленивое и не захочет заполнять, увидев все эти поля.

Альтернативный вариант - разбить регистрацию на несколько шагов. Это порождает сразу много позитивных откликов - ведь начиная выполнять шаги у пользователя чаще всего появляется желание закончить их выполнение.

Так же логично разбивать регистрацию на логические блоки - контактная информация, адрес, личные данные и так далее.

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

По мимо логики стоит учитывать, что вначале видна только ссылка "Вперед" /"Следующий шаг" , а на последнем шаге её не видно, но видно "Назад" и "Регистрация" .

Рассмотрим сам пример:

Страница

Шаг 1

Логин:

E-mail:

Пароль:

Шаг 2

Имя:

Фамилия:

Возраст:

Шаг 3

Страна:

Город:

Улица:

Назад Следующий шаг

body { margin:0; } /* Общие стили закончилась */ form { width:30%; margin:0 auto; } form div.step { display:none; } form div.step p.step{ text-align:center; font-size:28px; } form div.step p{ } form div.step p input{ float:right; } a.back { display:none; } form input { display:none; } a { color:#006600; text-decoration:none; } form p.talign{ text-align:center; }

Скрипт отвечающий за переключение шагов поместим в js/steps_registration.js , не забываем так же подключить библиотеку jQuery :

$(document).ready(function() { // Ждём загрузки страницы var steps = $("form").children(".step"); // находим все шаги формы $(steps).show(); // показываем первый шаг var current_step = 0; // задаем текущий шаг $("a.next").click(function(){ // Событие клика на ссылку "Следующий шаг" if (current_step == steps.length-2) { // проверяем, будет ли следующий шаг последним $(this).hide(); // скрываем ссылку "Следующий шаг" $("form input").show(); // показываем кнопку "Регистрация" } $("a.back").show(); // показываем ссылку "Назад" current_step++; // увеличиваем счетчик текущего слайда changeStep(current_step); // меняем шаг }); $("a.back").click(function(){ // Событие клика на маленькое изображение if (current_step == 1) { // проверяем, будет ли предыдущий шаг первым $(this).hide(); // скрываем ссылку "Назад" } $("form input").hide(); // скрываем кнопку "Регистрация" $("a.next").show(); // показываем ссылку "Следующий шаг" current_step--; // уменьшаем счетчик текущего слайда changeStep(current_step);// меняем шаг }); function changeStep(i) { // функция смены шага $(steps).hide(); // скрываем все шаги $(steps[i]).show(); // показываем текущий } });

Код php-отправки писать сюда не будем, так как это не совсем относится к этому уроку. Стоит лишь отметить, что письмо отправяется на адрес указанный в первом шаге формы. В любом случае вы можете скачать файлы демонстрации и посмотреть сами.

В этой статье вы узнаете, как создать форму регистрации и авторизации , используя 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 , и в нём пишем следующий скрипт:

Этот файл 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 существуют данные отправленные из формы и заключаем переданные данные в обычные переменные.*/ if(isset($_POST["first_name"])){ //Обрезаем пробелы с начала и с конца строки $first_name = 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`="".$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"] .= "

Ошибка в запросе к БД

"; //Возвращаем пользователя на страницу регистрации header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_register.php"); } /* закрытие выборки */ $result_query->close(); //Останавливаем скрипт exit(); } /* закрытие выборки */ $result_query->close();

И так, мы закончили со всеми проверками, пора добавить пользователя в БД. В указанном месте " // (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 для соединения с БД.

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

Код файла logout.php:

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

Ещё мы научились проверять вводимые данные, как на стороне клиента (в браузере, с помощью JavaScript, jQuery) так и на стороне сервера (с помощью языка PHP). Также мы научились реализовать процедуру выхода с сайта .

Все скрипты проверены и рабочие. Архив с файлами этого маленького сайта Вы можете скачать по этой ссылке .

В будущем я напишу статью где опишу . И ещё планирую написать статью где объясню, (без перезагрузки страницы). Так что, для того чтобы быть в курсе о выходе новых статей можете подписаться на мой сайт.

При возникновении вопросов обращайтесь, также, если вы заметили, какую-то ошибку в статье прошу вас, сообщите, мне об этом.

План урока (Часть 5):

  • Создаем HTML структуру для формы авторизации
  • Обрабатываем полученные данные
  • Выводим приветствие пользователя в шапку сайта
  • Понравилась статья? 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»

    Для реализации выезжающей формы обратной связи для быстрой отправки сообщения.

    В сети Twitter Вы можете наблюдать работу страницы с чистым и простеньким дизайном. Посмотрите на правую верхнюю часть страницы, там Вы увидите кнопку авторизации в систему, нажав на которую, вы увидите формы для заполнения данных. Сегодня мы расскажем Вам о том, как сделать подобный эффект на собственном сайте. На самом деле, это очень просто. К тому же, это поможет Вам сохранить место на странице, и прибавит ощущения комфорта Вашим посетителям. В этой статье мы пошагово расскажем Вам о том, как работает вся эта система, а еще это руководство будет полезным для тех, кто желает изучить jQuery . Вперед!

    Код HTML

    Для начала нужно начать с кода HTML. HTML-код очень простенький - он содержит в себе тэг «a», который идет вместе с тэгом «fieldset», за счет которого отображается форма.

    Просто скопируйте это в код новой страницы:


    Have an account? Sign in


    Username or email


    Password




    Remember me


    Forgot your password?


    Forgot your username?






    Код CSS

    Вам потребуется использование CSS для определения кнопки авторизации и формы логина. Представленный ниже код выполняют именно эту функцию.

    Просто скопируйте этот код в Ваш файл css, или добавьте его в код HTML там, где у Вас определяется стиль. Эти коды определяют кнопку авторизации.

    #container {
    width:780px;
    margin:0 auto;
    position: relative;
    }

    #content {
    width:520px;
    min-height:500px;
    }
    a:link, a:visited {
    color:#27b;
    text-decoration:none;
    }
    a:hover {
    text-decoration:underline;
    }
    a img {
    border-width:0;
    }
    #topnav {
    padding:10px 0px 12px;
    font-size:11px;
    line-height:23px;
    text-align:right;
    }
    #topnav a.signin {
    background:#88bbd4;
    padding:4px 6px 6px;
    text-decoration:none;
    font-weight:bold;
    color:#fff;
    -webkit-border-radius:4px;
    -moz-border-radius:4px;
    border-radius:4px;
    *background:transparent url("images/signin-nav-bg-ie.png") no-repeat 0 0;
    *padding:4px 12px 6px;
    }
    #topnav a.signin:hover {
    background:#59B;
    *background:transparent url("images/signin-nav-bg-hover-ie.png") no-repeat 0 0;
    *padding:4px 12px 6px;
    }
    #topnav a.signin, #topnav a.signin:hover {
    *background-position:0 3px!important;
    }

    a.signin {
    position:relative;
    margin-left:3px;
    }
    a.signin span {
    background-image:url("images/toggle_down_light.png");
    background-repeat:no-repeat;
    background-position:100% 50%;
    padding:4px 16px 6px 0;
    }
    #topnav a.menu-open {
    background:#ddeef6!important;
    color:#666!important;
    outline:none;
    }
    #small_signup {
    display:inline;
    float:none;
    line-height:23px;
    margin:25px 0 0;
    width:170px;
    }
    a.signin.menu-open span {
    background-image:url("images/toggle_up_dark.png");
    color:#789;
    }

    И дальше идет определение формы логина:

    #signin_menu {
    -moz-border-radius-topleft:5px;
    -moz-border-radius-bottomleft:5px;
    -moz-border-radius-bottomright:5px;
    -webkit-border-top-left-radius:5px;
    -webkit-border-bottom-left-radius:5px;
    -webkit-border-bottom-right-radius:5px;
    display:none;
    background-color:#ddeef6;
    position:absolute;
    width:210px;
    z-index:100;
    border:1px transparent;
    text-align:left;
    padding:12px;
    top: 24.5px;
    right: 0px;
    margin-top:5px;
    margin-right: 0px;
    *margin-right: -1px;
    color:#789;
    font-size:11px;
    }

    #signin_menu input, #signin_menu input {
    display:block;
    -moz-border-radius:4px;
    -webkit-border-radius:4px;
    border:1px solid #ACE;
    font-size:13px;
    margin:0 0 5px;
    padding:5px;
    width:203px;
    }
    #signin_menu p {
    margin:0;
    }
    #signin_menu a {
    color:#6AC;
    }
    #signin_menu label {
    font-weight:normal;
    }
    #signin_menu p.remember {
    padding:10px 0;
    }
    #signin_menu p.forgot, #signin_menu p.complete {
    clear:both;
    margin:5px 0;
    }
    #signin_menu p a {
    color:#27B!important;
    }
    #signin_submit {
    -moz-border-radius:4px;
    -webkit-border-radius:4px;
    background:#39d url("images/bg-btn-blue.png") repeat-x scroll 0 0;
    border:1px solid #39D;
    color:#fff;
    text-shadow:0 -1px 0 #39d;
    padding:4px 10px 5px;
    font-size:11px;
    margin:0 5px 0 0;
    font-weight:bold;
    }
    #signin_submit::-moz-focus-inner {
    padding:0;
    border:0;
    }
    #signin_submit:hover, #signin_submit:focus {
    background-position:0 -5px;
    cursor:pointer;
    }

    Пришло время поработать с javascript

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



    $(document).ready(function() {

    $(".signin").click(function(e) {
    e.preventDefault();
    $("fieldset#signin_menu").toggle();
    $(".signin").toggleClass("menu-open");
    });

    $("fieldset#signin_menu").mouseup(function() {
    return false
    });
    $(document).mouseup(function(e) {
    if($(e.target).parent("a.signin").length==0) {
    $(".signin").removeClass("menu-open");
    $("fieldset#signin_menu").hide();
    }
    });

    });

    Согласно коду, представленному выше, когда посетитель кликает по кнопке авторизации, запускается новая функция. Сначала отображается форма логина (заключенная в тэг «filedset»), затем ссылка, заключенная в класс «.signin», добавляет еще один класс «menu-open», за счет которого сменяется фоновое изображение.

    Еще одно событие в этом коде заключается в том, что когда посетители кликают не по форме логина, а где-то на странице – то форма сама закрывается. Другими словами, класс «menu-open» снимается с ссылки с классом «.signin» и возвращает ей первоначальное фоновое изображение.

    Что касается подсказок?


    $(function() {
    $("#forgot_username_link").tipsy({gravity: "w"});
    });

    Мы обычно советуем использовать плагин для jQuery – tipsy . Содержимое tooltip-а представляет собой то, что написано в атрибуте «title», относящемся к ссылке. Вы можете менять позицию tooltip-а относительно востока, запада, юга или севера. Это реализуется за счет параметра «gravity», указанного в коде выше. Мы предоставляем Вам ссылку на сайт, посвященный этому плагину, там Вы сможете более подробно изучить его возможности и скачать плагин. …

    В заключение

    Если Вы скопировали весь код с этой статьи, пожалуйста, не меняйте структуру папок. Если Вы измените ее, то код не будет работать. Данный код является лишь примером создания выпадающей формы авторизации с помощью jQuery . Удачи в практике!

    Листаете вы себе этак веб-страницы, открывая самые среди них популярные. Располагая скоростным и надёжным Интернет-соединением, вы вполне уверены в том, что можете сразу открыть любой веб-сайт. И вдруг вы наталкиваетесь на него. На сайт, который не открывается по техническим причинам, требующим устранения. Это раздражает, правда? Посетителя/пользователя - конечно. А для владельца этого веб-сайта ситуация является гораздо более сложной. Способной повлечь за собой любые неприятности. Можно потерять подписчиков и, разумеется, снизить доходность ресурса. Таких случайностей не избежать, а предотвратить их невозможно. Однако, владельцы веб-страниц в силах предпринять кое-что для обеспечения непрерывного доступа своих посетителей и подписчиков к информации о ходе восстановления их сайтов.

    Шаблоны онлайн-страниц, готовящихся к запуску и находящихся на реконструкции, - вещи весьма полезные, помогающие удержать посетителей и подписчиков на сайте, несмотря на технические неполадки и затягивающиеся восстановительные работы. Кроме того, по-настоящему оригинальные или смелые оформительские решения также способны продлить терпение ваших посетителей.

    Сегодня мы предлагаем владельцам веб-сайтов и дизайнерам подборку из 50 опрятных шаблонов страниц, готовящихся к запуску и закрытых на реконструкцию, которая поможет им подстраховаться на случай сбоев в работе веб-сайта и прочих возможных неприятностей. Все перечисленные шаблоны платные , но стоят они совсем недорого. Не стесняйтесь просматривать этот замечательный список и пробовать образцы в работе.

    Особенности:
    Шесть различных цветовых вариантов на выбор
    Форма подписки на информационный бюллетень
    jQuery-метки для форм
    Хорошо отформатированные PSD-файлы, благодаря чему правка становится парой пустяков


    Особенности:
    Две цветовые схемы на выбор
    jQuery-счётчик времени до пуска
    Подписка на рассылки по электронной почте через сервис FeedBurner
    Возможность подключения к социальной сети


    Особенности:
    4 цветовых варианта
    Форма подписки с полем подтверждения и PHP
    Анимированное табло степени готовности с отображением её в процентах
    Валидный XHTML + CSS3-разметка


    Особенности:
    AJAX-форма подписки на рассылку по электронной почте
    6 цветовых вариантов
    Базирование на каркасе модульной сетки 960 Grid System
    Прошла XHTML-валидацию по стандарту промежуточной версии 1 .0


    Особенности:
    Лёгкий в адаптации счётчик времени до пуска
    Подключение Twitter-рассылки
    Три различные варианта цветового оформления


    Особенности:
    Анимированный jQuery-счётчик времени до пуска + табло степени готовности
    Автоматический вывод текстовой справки о степени готовности в процентах
    Текстовый файл-сводка с данными подписчиков (БАЗА ДАННЫХ НЕ НУЖНА)
    Полностью функциональная AJAX-форма обратной связи + валидация


    Особенности:
    Совместимые браузеры: FireFox 2, FireFox 3, IE6, IE7, IE8, Opera, Safari
    Закреплённая разметка
    Содержащиеся файлы: CSS-файлы, HTML-файлы, JPG-картинка, JS-файлы, PSD (послойно), PHP-файлы
    PSD-файл включён в комплект


    Особенности:
    Область прокрутки, построенная средствами jQuery, для добавления, при необходимости, больших массивов текста
    Простая в редактировании HTML-кодировка в комплекте с удобным файлом документации
    PSD-файл включён в комплект
    Аккуратный анимированный ползунок, отображающий прогресс реализации проекта (например, 50 % выполнено)


    Особенности:
    Качественная XHTML- и CSS-кодировка с поправками для IE6 и 7, обеспечивающими её функциональность во всех современных браузерах
    3 цветовые схемы – серая/голубая/красная
    Ajax-форма “Обновления по электронной почте”
    Полный PDF-комплект документации и инструкций


    Особенности:
    Надёжная HTML-кодировка
    Содержащиеся файлы: CSS-файлы, HTML-файлы, JS-файлы, PSD (послойно), PHP-файлы
    PSD-файл включён в комплект


    Особенности:
    Бестабличная CSS-вёрстка
    Межбраузерная совместимость и внешняя привлекательность
    Скорость и простота установки
    Автоответчик на базе Ajax


    Особенности:
    6 цветовых схем (гвоздичная, матово-синяя, бледно-зелёная, насыщенно-оранжевая, фиолетовая и цвета сухой травы)
    Подробный Photoshop-документ в послойном исполнении
    Универсальный счётчик времени до запуска вашего сайта
    Подключение к Twitter для рассылки ваших свежих заметок


    Особенности:
    Поддержка основных браузеров: Firefox, IE6, 7, 8, Safari 3, 4, Chrome, Opera 9, 10
    Качественная XHTML-разметка по стандарту промежуточной версии 1 .0/CSS
    Круговая диаграмма со значениями от 0 до 100% с ценой деления 10%, лёгкая в применении. Содержит полностью разложенный послойно PSD-файл
    (ссылка скачивания бесплатного шрифта содержится в документации)


    Особенности:
    HTML 5 + CSS3
    Полнофункциональная AJAX-форма подписки на электронную почтовую рассылку – база данных на основе MySql не нужна
    Смена шрифтов по методике CUFON
    Ряд программ распознавания для мобильных браузеров на выбор


    Особенности:
    Совместимые браузеры: FireFox 2, FireFox 3, IE6, IE7, IE8, Safari
    Отчётливость в оформлении
    PSD-файл включён в комплект
    Закреплённая разметка


    Особенности:
    PSD-файлы в послойном исполнении
    Совместимые браузеры: Chrome 4, Chrome 5, FireFox 2, FireFox 3, IE6, IE7, IE8, Opera, Safari
    Содержащиеся файлы: CSS-файлы, HTML-файлы, JPG-изображение, JS-файлы, PNG (послойно), PSD (послойно), PHP-файлы
    PSD-файл включён в комплект


    Особенности:
    Качественная XHTML- и CSS-разметка, прошедшая проверку на корректность и W3C-валидацию...
    jQuery-счётчик
    Встроенная почтовая PHP-программа для отправки электронных сообщений
    Бесплатный Cufon-шрифт


    Особенности:
    7 вариантов цветового решения: голубой, зелёный, жёлтый, красный, фиолетовый, серый, переливчатый
    jQuery-счётчик (с плавными переходами)
    AJAX /PHP-форма обратной связи
    Отличный встроенный механизм отправки Twitter-сообщений


    Особенности:
    Полнофункциональная, валидная PHP/Ajax-форма обратной связи
    Четыре различных цветовых варианта
    Отображение дней, часов, минут и даже секунд, оставшихся до запуска


    Особенности:
    XHTML 1 .0 промежуточная версия
    Шкала-табло степени готовности
    Счётчик-таймер
    Послойный PSD-файл включён в комплект


    Особенности:
    Табло степени готовности с javascript-анимацией
    Ajax-форма записи на получение обновлений (легко удаляется)
    Шаблон аттестован строго по версии 1 .0 XHTML-стандарта
    Отображение даты запуска ресурса


    Особенности:
    Настраиваемый jQuery-счётчик и табло степени готовности
    Подключение к социальным сетям
    Сохранение адресов электронной почты в базе данных MySQL и в XML-файле
    Индивидуальное оформление области заголовка и окна содержимого


    Особенности:
    Содержит хороший пакет документации
    Содержит PSD-файлы
    Программа-счётчик с анимацией
    Возможность бесплатного применения собственных шрифтов


    Особенности:
    Приводится в действие средствами jQuery
    Действующая функция приёма заявок на рассылку бюллетеней
    Содержит PHP/MySQL-файлы
    Смена страниц плавным переходом (домашняя страница, "О нас", "Обратная связь")


    Особенности:
    Валидный XHTML/CSS-шаблон
    jQuery-счётчик, построенный программными средствами
    Современный и отчётливый дизайн
    Раздел последних обновлений сайта


    Особенности:
    Полнофункциональная PHP/Ajax-форма обратной связи с полем подтверждения – просто введите свой адрес электронной почты!
    Счётчик индивидуальной конструкции
    Подвижная шкала-табло степени готовности
    Функция беглого редактирования Photoshop-файлов для их максимально лёгкой адаптации


    Особенности:
    Отчётливое и современное внешнее оформление с имитацией объёмности
    Действующая функция приёма PHP/Ajax-заявок на рассылку обновлений по электронной почте через форму с полем подтверждения
    PSD-файлы, послойно выполненные в Photoshop
    Качественная XHTML- и CSS-разметка


    Особенности:
    Иконки социальных сетей
    Twitter-подключение с отображением последней заметки
    Межбраузерная HTML-разметка
    Многослойный PSD-файл


    Особенности:
    Ajax-формы обратной связи и регистрации
    Обе Ajax-формы – наши популярные iPhorm"ы, которые по отдельности стоят $6! Бесплатно прилагается валидная HTML 5-разметка
    Совместимость со всеми основными браузерами
    Возможность многоязычного форматирования текстов в UTF-8


    Особенности:
    Валидная XHTML- и CSS-разметка
    Стилизованный jQuery-счётчик
    Ajax/PHP-форма подписки на рассылку по электронной почте (без повторного открытия страницы)
    jQuery-фиксатор для PNG-файлов в IE6


    Особенности:
    Поддержка всех основных браузеров: Firefox, IE6/7/8, Safari 3/4, Chrome, Opera 9/10
    Валидная XHTML-разметка по стандарту промежуточной версии 1 .0
    Смена шрифтов по методике CUFON
    Возможность совмещения в теме оформления иконок социальных сетей


    Особенности:
    Действующая AJAX-форма обратной связи
    Демонстрация картинок в окне, имитирующем Macbook Pro или iMac
    Macbook Pro и iMac послойно - http://images.naldzgraphics.net/2011/01 - содержатся в PSD-файле
    Лёгкий в адаптации счётчик-таймер - тёмный и светлый варианты


    Особенности:
    Статичный вариант и Flash-версия
    Валидная XHTML-разметка
    Простая программа-счётчик
    Совместимые браузеры: Chrome 4, Chrome 5, FireFox 2, FireFox 3, IE7, IE8, Opera, Safari


    Особенности:
    Полнофункциональная AJAX (jQuery)-форма подписки на бюллетень
    jQuery-счётчик/таймер и табло степени готовности
    Программа корректировки PNG-файлов для IE6
    Валидная (строго 4.01), межбраузерная HTML- и CSS-разметка


    Особенности:
    jQuery-счётчик, устанавливаемый на любую дату
    Содержит PHP/AJAX-форму
    jQuery-анимация иконок социальных сетей
    4 варианта цветового оформления


    Особенности:
    HTML- и WordPress-версии
    Подробная вспомогательная документация как для WordPress-, так и для HTML-версии
    Форма подписки на бюллетень
    Лёгкие в адаптации PSD-файлы в послойном исполнении, с маркировкой


    Особенности:
    Лёгкий в адаптации jQuery-счётчик/таймер
    Сверхтонкая шкала-табло степени готовности с красивым текстовым окном, содержащим пояснения
    Содержит комплект иконок социальных сетей
    Грамотно собранный PSD-файл

    JQuery-счётчик на программной основе
    Особенности:
    Фиксированная верстка 900 пикселей
    Работающая форма контакта
    Совместимые браузеры: Chrome 4, Chrome 5, FireFox 2, FireFox 3, IE7, IE8, Opera
    Содержащиеся файлы: CSS, HTML, JPG, JS, PSD отсортированный по слоям, PHP


    Особенности:
    Полностью готовый код (HTML, CSS, jQUERY, PHP, AJAX)
    Полностью работающая форма контакта на ajax
    Уникальные иконки, оптимизированные для черных и светлых фонов
    Работающий обратный отсчет на jQuery


    Особенности:
    Счетчик на jQuery
    Слайдер содержимого на jQuery
    Встроенная рабочая форма контакта
    Облегченная HTML-версия


    Особенности:
    Расширение посредством jQuery
    Плагин обратного отсчета
    Социальные иконки и подсказки
    Раздельные слои в PSD
    • Сергей Савенков

      какой то “куцый” обзор… как будто спешили куда то