Советы по строительству и ремонту

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

В статье будут рассмотрены основные способы добавления пароля на компьютер. Они все уникальны и позволяют войти в систему даже с использованием пароля от учетной записи Майкрософт, но данная защита не гарантирует 100% безопасности от проникновения посторонних личностей.

Способ 1: Добавление пароля в «Панели управления»

Способ запароливания через «Панель управления» — один из самых простых и часто используемых. Прекрасно подходит для новичков и неопытных юзеров, не требует запоминания команд и создания дополнительных профилей.

  1. Нажмите на «Меню пуск» и кликните «Панель управления» .
  2. Выберите вкладку «Учетные записи пользователей и семейная безопасность» .
  3. Кликните на «Изменение пароля Windows» в разделе «Учетные записи пользователей» .
  4. Из списка действий над профилем выберите «Создание пароля» .
  5. В новом окне есть 3 формы для ввода основных данных, которые необходимы для создания пароля.
  6. Форма «Новый пароль» предназначена для кодового слова или выражения, которое будет запрашиваться при запуске компьютера, обратите внимание на режим «Caps Lock» и раскладку клавиатуры при его заполнении. Не создавайте очень простые пароли вроде «12345», «qwerty», «йцукен» . Придерживайтесь рекомендаций Microsoft по выбору секретного ключа:
    • Секретное выражение не может вмещать логин учетной записи пользователя или любую его составляющую;
    • Пароль должен состоять более чем из 6 символов;
    • В пароле желательно применить заглавные и прописные буквы алфавита;
    • В пароле рекомендуется использовать десятичные цифры и неалфавитные символы.
  7. «Подтверждение пароля» — поле, в которое требуется ввести ранее придуманное кодовое слово, чтобы исключить ошибки и случайные нажатия, так как введенные символы скрыты.
  8. Форма «Введите подсказку для пароля» создана для напоминания пароля, если вы его не сможете вспомнить. Используйте в подсказке данные известные только вам. Это поле необязательное, но рекомендуем его заполнить, иначе существует риск лишится вашей учетной записи и доступа к ПК.
  9. Когда заполните обязательные данные, нажмите «Создать пароль» .
  10. На этом этапе процедура установки пароля окончена. Посмотреть статус вашей защиты можно в окне внесения изменений в учетную запись. После перезагрузки, Windows потребует секретное выражение для входа. Если у вас всего лишь один профиль с привилегиями администратора, то не зная пароля, доступ к Windows получить будет невозможно.

Способ 2: Аккаунт Microsoft

Данный способ позволит вам получать доступ к компьютеру при помощи пароля от профиля Microsoft. Кодовое выражение можно будет сменить с помощью электронного адреса или номера телефона.

  1. Найдите «Параметры компьютера» в стандартных приложениях Windows «Меню пуск» (так это выглядит на 8-ке, в Виндовс 10 получить доступ к «Параметрам» можно по нажатию соответствующей кнопки в меню «Пуск» или посредством использования комбинации клавиш Win+I ).
  2. Из списка параметров выберите раздел «Учетные записи» .
  3. В боковом меню кликните на «Ваша учетная запись» , далее «Подключиться к учетной записи Майкрософт» .
  4. Если у вас уже есть аккаунт Майкрософт, введите e-mail, номер телефона или имя пользователя Skype и пароль.
  5. В противном случае создайте новую учетную запись, введя запрашиваемые данные.
  6. После авторизации потребуется подтверждение уникальным кодом из СМС.
  7. После всех манипуляций Windows будет запрашивать пароль от учетной записи Майкрософт для входа.

Способ 3: Командная строка

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

Заключение

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

Иногда на сайте часть контента или скачивание каких-либо файлов нужно сделать доступным, только для зарегистрированных пользователей. И тут встает вопрос: «Как же осуществить регистрацию пользователей на сайте?». На самом деле все не так уж и сложно, как кажется. Вся работа будет состоять из двух шагов. В первой части мы сделаем регистрацию пользователей, а во второй осуществим вход зарегистрированных пользователей на сайт.
Для начала мы создадим главную страницу index.php , на которой у нас будет отображаться форма для входа (о ней поговорим чуть позже, пока просто ее создадим) и на ней будет ссылка на страницу регистрации нового пользователя:

Вход:












Логин:
Пароль:
>

Регистрация

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






























Логин * : >
Пароль *: >
Подтверждения пароля * : >
E-mail * : >
Имя: >
Фамилия: >
colspan ="2" >"Зарегистроваться" name ="submit" >


Поля со значком * обязательны для заполнения

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

include_once ("bd.php" );

if (isset ($_POST ["submit" ])){
if (empty ($_POST ["login" ])) {
echo "
Введите логин!"
;
}
elseif (!preg_match ("/^\w{3,}$/", $_POST ["login" ])) {
echo "
В поле "Логин" введены недопустимые символы! Только буквы, цифры и подчеркивание!"
;
}
elseif (empty ($_POST ["password" ])) {
echo "
Введите пароль!"
;
}
elseif (!preg_match ("/\A(\w){6,20}\Z/", $_POST ["password" ])) {
echo "
Пароль слишком короткий! Пароль должен быть не менее 6 символов! "
;
}
elseif (empty ($_POST ["password2" ])) {
echo "
Введите подтверждение пароля!"
;
}
elseif ($_POST ["password" ] != $_POST ["password2" ]) {
echo "
Введенные пароли не совпадают!"
;
}
elseif (empty ($_POST ["email" ])) {
echo "
Введите E-mail! "
;
}
elseif (!preg_match ("/^ (+\.)+{2,6}$/", $_POST ["email" ])) {
echo "
E-mail имеет недопустимий формат! Например, ! "
;
}

else {
$login = $_POST ["login" ];

$mdPassword = md5 ($password );
$password2 = $_POST ["password2" ];
$email = $_POST ["email" ];
$rdate = date ("d-m-Y в H:i" );
$name = $_POST ["name" ];
$lastname = $_POST ["lastname" ];

$query = ("SELECT id FROM users WHERE login="$login"" );
$sql = mysql_query ($query ) or die (mysql_error ());

if (mysql_num_rows ($sql ) > 0 ) {
echo "Пользователь с таким логином зарегистрирован!" ;
}
else {
$query2 = ("SELECT id FROM users WHERE email="$email"" );
$sql = mysql_query ($query2 ) or die (mysql_error ());
if (mysql_num_rows ($sql ) > 0 ){
echo "Пользователь с таким e-mail уже зарегистрирован!" ;
}
else {
$query = "INSERT INTO users (login, password, email, reg_date, name_user, lastname)
VALUES ("$login", "$mdPassword", "$email", "$rdate", "$name", "$lastname")"
;
$result = mysql_query ($query ) or die (mysql_error ());;
echo "Вы успешно зарегистрировались!
На главную"
;
}
}
}
}
?>

В самом начале мы подключаем файл bd.php , содержащий подключение к базе данных.

mysql_connect ("localhost","user","password" );
mysql_select_db ("reg" );

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

Теперь создадим таблицу users в нашей базе данных:

CREATE TABLE `users` (
`id` INT NOT NULL AUTO_INCREMENT ,
`login` VARCHAR(20) NOT NULL ,
`password` VARCHAR(35) NOT NULL ,
`email` VARCHAR(50) NOT NULL ,
`reg_date` VARCHAR(32) NOT NULL ,
`name_user` VARCHAR(32) NOT NULL ,
`lastname` VARCHAR(32) NOT NULL ,
PRIMARY KEY (`id`)
);

Далее у нас осуществляется проверка введенных данных, если они не корректны, то выдается ошибка. Если все проходит удачно, то превращаем глобальные переменные в обычные, а так же шифруем пароль. Затем мы проверяем, нет ли у нас пользователя с таким же логином и email, если есть, то выдаем ошибку. Если эти проверки были пройдены успешно, заносим нового пользователя в базу данных и сообщаем об успешно регистрации.

Теперь, когда пользователь зарегистрировался ему нужно войти на сайт. Форму для ввода логина и пароля мы уже сделали в самом начале. При нажатии кнопки войти мы отправляем все наши данные файлу login.php , который проверяет есть ли такой пользователь.

if (isset ($_POST ["login" ])){
$login = $_POST ["login" ];
if ($login == "" ) {
unset ($login );
exit ("Введите пожалуйста логин!" );
}
}
if (isset ($_POST ["password" ])){
$password = $_POST ["password" ];
if ($password == "" ) {
unset ($password );
exit ("Введите пароль" );
}
}
$login = stripslashes ($login );
$login = htmlspecialchars ($login );
$password = stripslashes ($password );
$password = htmlspecialchars ($password );

$login = trim ($login );
$password = trim ($password );
$password = md5 ($password );//шифруем пароль
$user = mysql_query ("SELECT id FROM users WHERE login="$login" AND password="$password"" );
$id_user = mysql_fetch_array ($user );
if (empty ($id_user ["id" ])){
exit ("Извините, введённый вами логин или пароль неверный." );
}
else {
$_SESSION ["password" ] = $password ;
$_SESSION ["login" ] = $login ;
$_SESSION ["id" ] = $id_user ["id" ];
}
echo "" ;
?>

Этот файл проверяет нашего пользователя на существование и запускает для него сессию, т.к. весь вход построен именно на них. Эти переменные будут «висеть» в браузере до тех пор пока его не закроешь или их не уничтожишь (на этом основан выход). Теперь чтобы сессии работали нужно в файле bd.php дописать такую строчку session_start() ; Для удобства использования переменных сессии будем присваивать их обычным переменным

$login = $_SESSION ["login" ];
$password = $_SESSION ["password" ];
$id_user = $_SESSION ["id" ];

Теперь чтобы вошедший пользователь мог видеть контент для зарегистрированных пользователей, мы создадим такое условие:

if (empty ($login ) and empty ($password )){
echo "Вам необходимо зарегистрироваться, чтобы видеть этот контент" ;
}
else {
echo "Привет, ".$login." | Выход
Контент для зарегистрированных пользователей"
;
}

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

unset ($_SESSION ["password" ]);
unset ($_SESSION ["login" ]);
unset ($_SESSION ["id" ]);

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

Здравствуйте Друзья! В этой статье будем делать автоматический вход в систему Windows 7 .

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

control userpasswords2 илиnetplwiz

Второй способ. Назначить одного из пользователей для автоматического входа.

В редакторе реестра слева в дереве переходим по пути

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon

1. Для активации автоматического входа в систему необходимо установить значение AutoAdminLogon = 1.

Для изменение значения дважды кликаем по параметру (в нашем случае AutoAdminLogon) в поле Значение пишем 1 и жмем ОК

Значение параметра изменено.

2. Необходимо задать имя пользователя для автоматического входа DefaultUserName

3. Если у вас пользователь с паролем, необходимо задать этот пароль в параметре DefaultPassword . У меня пользователи без пароля, поэтому этого параметра нет.

Если у вас нет какого-либо параметра необходимо его создать.

Для этого на пустом месте жмем правой кнопкой

В этой статье вы узнаете, как создать форму регистрации и авторизации , используя 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 существуют данные отправленные из формы и заключаем переданные данные в обычные переменные.*/ 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 для соединения с БД.

//Объявляем ячейку для добавления ошибок, которые могут возникнуть при обработке формы. $_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"] .= "

Поле для ввода почтового адреса(email) не должна быть пустой.

"; //Возвращаем пользователя на страницу регистрации header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_register.php"); //Останавливаем скрипт exit(); } }else{ // Сохраняем в сессию сообщение об ошибке. $_SESSION["error_messages"] .= "

Отсутствует поле для ввода Email

"; //Возвращаем пользователя на страницу авторизации 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):

  1. Создаем HTML структуру для формы авторизации
  2. Обрабатываем полученные данные
  3. Выводим приветствие пользователя в шапку сайта

Понравилась статья?



Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter
ПОДЕЛИТЬСЯ:
Советы по строительству и ремонту