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

Если необходимо предоставить пользователям возможность входить в систему, указывая свое имя и пароль, возникает потребность в следующих компонентах:

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