Php регистрация пользователя: Как с помощью PHP и MySQL создать систему регистрации и авторизации пользователей
Как сделать систему авторизации и регистрации на PHP
// Проверяем нажата ли кнопка отправки формы
if (isset($_REQUEST[‘doGo’])) {
// Все последующие проверки, проверяют форму и выводят ошибку
// Проверка на совпадение паролей
if ($_REQUEST[‘pass’] !== $_REQUEST[‘pass_rep’]) {
$error = ‘Пароль не совпадает’;
}
// Проверка есть ли вообще повторный пароль
if (!$_REQUEST[‘pass_rep’]) {
$error = ‘Введите повторный пароль’;
}
// Проверка есть ли пароль
if (!$_REQUEST[‘pass’]) {
$error = ‘Введите пароль’;
}
// Проверка есть ли email
if (!$_REQUEST[’email’]) {
$error = ‘Введите email’;
}
// Проверка есть ли логин
if (!$_REQUEST[‘login’]) {
$error = ‘Введите login’;
}
// Если ошибок нет, то происходит регистрация
if (!$error) {
$login = $_REQUEST[‘login’];
$email = $_REQUEST[’email’];
// Пароль хешируется
$pass = password_hash($_REQUEST[‘pass’], PASSWORD_DEFAULT);
// Если день рождения не был указан, то будет самый последний год из доступных
$DOB = $_REQUEST[‘year_of_birth’];
// Добавление пользователя
mysqli_query($db, «INSERT INTO `users` (`login`, `email`, `password`, `DOB`) VALUES (‘» . $login . «‘,'» . $email . «‘,'» . $pass . «‘, ‘» . $DOB . «‘)»);
// Подтверждение что всё хорошо
echo ‘Регистрация прошла успешна’;
} else {
// Если ошибка есть, то выводить её
echo $error;
}
}
?>
<!DOCTYPE html>
<html lang=»ru»>
<head>
<meta charset=»UTF-8″>
<meta name=»viewport» content=»width=device-width, initial-scale=1. 0″>
<meta http-equiv=»X-UA-Compatible» content=»ie=edge»>
<title>Зарегистрироваться</title>
</head>
<body>
<form action=»<?= $_SERVER[‘SCRIPT_NAME’] ?>»>
<p>Логин: <input type=»text» name=»login»> <samp>*</samp></p>
<p>EMail: <input type=»email» name=»email»><samp>*</samp></p>
<p>Пароль: <input type=»password» name=»pass»><samp>*</samp></p>
<p>Повторите пароль: <input type=»password» name=»pass_rep»><samp>*</samp></p>
<?php $year = date(‘Y’); ?>
Год рождения:
<select name=»year_of_birth»>
<option value=»»>—-</option>
<?php for ($i = $year — 14; $i > $year — 14 — 100; $i—) { ?>
<option value=»<?= $i ?>»><?= $i ?></option>
<?php } ?>
</select>
<p><input type=»submit» value=»Зарегистрироваться» name=»doGo»></p>
</form>
</body>
</html>
lenchv/RegistrationForm: Форма регистрации и авторизации пользователя, MySQL, JS, PHP, AJAX
GitHub — lenchv/RegistrationForm: Форма регистрации и авторизации пользователя, MySQL, JS, PHP, AJAX
Форма регистрации и авторизации пользователя, MySQL, JS, PHP, AJAX
Files
Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
Форма регистрации и авторизации пользователя, MySQL, JS, PHP, AJAX.
После копирования на сервер директории registration-form, форма будет доступна по ссылке <название сайта>/registration-form. Также файлы с директории registration-form можно положить куда угодно на сервер, и форма будет доступна по соответствующей ссылке. Т.е. форма не завязана по абсолютному пути.
db.sql — дамп базы данных mysql.
Структура файлов:
css/ — файлы стилей
reset.css — сбрасывает все стандартные стили элементов
style.css — главный файл стилей формы и страницы пользователя
img/ico — используемые пиктограммы
js/ — java script файлы
main.js — содержит javascript управления регистрационной формой
php/language/ — файлы содержащие языковые конфиги
en.php, ru.php — английский и русский конфиги, соотвтетственно, состоят из ассоциативного массива, описывающего выводимые надписи на странице.
model/ — файлы обработки данных
validation.php — файл содержит класс, который проверяет введенные пользователем данные в регистрационной форме, и взводит флаги ошибок, в случае если что-то введено неверно, также, здесь же происходит обработка введенных данных.
Database.php — абстрактный класс для работы с базой данных.
MyDatabase.php — класс, наследуемый от Database, содержит методы для работы с базой данных mydb
view/ — файлы отображения
header.php — заголовочный файл, содержит доктайп, тайтл, подключение стилей.
lang-switch.php — файл содержит переключатель языка.
registration-form.php — формы регистрации и авторизации.
user.php — страница пользователя.
footer.php — подвал сайта.
uploads/img — файлы с изображениями пользователей.
index.php — главный файл, который выводит на страницу необходиымую информацию.
register.php — скрипт обработки регистрации.
auth.php — скрипт авторизации.
city.php — скрипт вывода списка городов из базы данных.
About
Форма регистрации и авторизации пользователя, MySQL, JS, PHP, AJAX
Resources
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session.
You signed out in another tab or window. Reload to refresh your session.
Как сделать Форму регистрации
Узнайте, как создать форму регистрации с помощью CSS.
Как создать форму регистра
Шаг 1) добавить HTML:
Используйте элемент <form> для обработки входных данных. Вы можете узнать больше об этом в нашем учебнике PHP. Затем добавьте входные данные (с соответствующей меткой) для каждого поля:
Пример
Register
Please fill in this form to create an account.
<label for=»email»><b>Email</b></label>
<input type=»text» placeholder=»Enter Email» name=»email» required>
<label for=»psw»><b>Password</b></label>
<input type=»password»
placeholder=»Enter Password» name=»psw» required>
<label for=»psw-repeat»><b>Repeat Password</b></label>
<input
type=»password» placeholder=»Repeat Password» name=»psw-repeat» required>
<hr>
<p>By creating an account you agree to
our <a href=»#»>Terms & Privacy</a>.</p>
<button type=»submit»>Register</button>
</div>
<div>
<p>Already
have an account? <a href=»#»>Sign in</a>.</p>
</div>
</form>
Шаг 2) добавить CSS:
Пример
* {box-sizing: border-box}
/* Add padding to containers */
. container {
padding: 16px;
}
/* Full-width input fields */
input[type=text],
input[type=password] {
width: 100%;
padding: 15px;
margin: 5px 0 22px 0;
display: inline-block;
border: none;
background: #f1f1f1;
}
input[type=text]:focus, input[type=password]:focus {
background-color: #ddd;
outline: none;
}
/* Overwrite default styles of hr */
hr
{
border: 1px solid #f1f1f1;
margin-bottom: 25px;
}
/* Set a
style for the submit/register button */
.registerbtn {
background-color:
#4CAF50;
color: white;
padding: 16px 20px;
margin: 8px 0;
border: none;
cursor: pointer;
width: 100%;
opacity: 0.9;
}
.registerbtn:hover
{
opacity:1;
}
/* Add a blue text color to links */
a {
color: dodgerblue;
}
/* Set a grey background color and center the
text of the «sign in» section */
.signin {
background-color:
#f1f1f1;
text-align: center;
}
Совет: Пойдите к нашему учебнику формы HTML для того чтобы выучить больше о формах HTML.
Совет: Перейдите в наш CSS Form учебник, чтобы узнать больше о том, как стиль элементов формы.
Система предварительной регистрации и приглашения Symfony2
Мы обсуждали разработку Symfony 2 в предыдущих статьях SitePoint и создали клон моего личного приложения Symfony (часть 1 , 2 и 3 ). Но Symfony 2 — гигантский фреймворк, и мы можем охватить еще немало тем.
В этой серии статей, состоящей из двух частей, мы поговорим об очень важной области разработки веб-приложений: аутентификации и авторизации . Symfony2 очень подробно проработал эти две темы в своей официальной документации . Любому, кто серьезно изучает это, рекомендуется ознакомиться с этим официальным документом после ознакомления с основами этого урока.
Типичный поток управления пользователями может иметь следующие задачи:
- Встроенный пользователь будет создан после установки приложения, и ему будет предоставлена привилегия
root
. - Любой новый пользователь может зарегистрироваться через форму или зарегистрироваться только по приглашению (этот подход обсуждается в этой статье).
- После регистрации пользовательская запись сохраняется в базовой базе данных / таблице.
- При желании приложение переведет этого нового пользователя в состояние ожидания и отправит подтверждение по электронной почте. Пользователь будет «активирован» только тогда, когда он щелкнет ссылку в электронном письме с токеном подтверждения. Этот подход не используется в этой статье, потому что мы приглашаем пользователей, а сайт является сайтом «замкнутого круга».
- Пользователь входит в систему. Приложение проверит имя пользователя и пароль.
- При желании приложение может выполнять некоторые действия после входа в систему. В этом случае мы обновим дату / время последнего входа пользователя в базу данных и перенаправим их.
- Пользователь может явно выбрать выход.
Основная
user
таблица
Хотя Symfony поддерживает аутентификацию пользователей в памяти, это не рекомендуется в реальных приложениях. В большинстве случаев мы будем использовать другие ресурсы (базы данных, LDAP и т. Д.), Чтобы сохранить учетные данные пользователя. Мы будем использовать базу данных SQL в нашем приложении.
Сначала давайте создадим таблицу для хранения информации о пользователе:
CREATE TABLE `user` ( `id` INT( 255 ) AUTO_INCREMENT NOT NULL, `username` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, `password` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, `email` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, `created` DATETIME NOT NULL, `logged` DATETIME NULL, `roles` VARCHAR( 25 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, `gravatar` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, `active` TINYINT( 1 ) NOT NULL, `homepage` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL, PRIMARY KEY ( `id` )
Из этих определенных полей username
и password
используются для предоставления / отклонения запроса на вход в систему. /, roles: [ROLE_USER, ROLE_ADMIN] }
Под security
у нас есть четыре подраздела:
providers
: ответственные за предоставление учетных данных пользователей
Мы будем хранить пользовательскую информацию в таблице, отображаемой в Symfony как сущность (класс PHP) с необходимыми средствами получения / установки для управления свойствами (полями таблицы).
В этом случае сущностью является AppBundle:User
, который происходит из src/AppBundle/Entity/User.php
а свойство, которое мы используем для проверки запроса на вход, исходит от имени username
.
Symfony поддерживает использование других полей или одного из нескольких полей в качестве идентификатора пользователя. Распространенным сценарием является возможность входа пользователя с использованием либо имени username
либо поля email
. Пожалуйста, обратитесь к официальной документации Symfony, если вы хотите узнать больше об этом.
Как кодируется пароль:
encoders
Хранение паролей в виде простого текста никогда не является хорошей идеей. В нашем случае мы указываем, что будем использовать метод bcrypt
с 12 циклами. Это создаст достаточно сильный хеш при разумных затратах (времени на машинное вычисление — чем больше времени требуется для создания хэша пароля, тем сложнее для успешной атаки методом перебора ).
Функции входа и выхода:
firewalls/default
Мы должны указать, как мы должны входить в систему. Symfony может использовать HTTP Basic login (который открывает диалоговое окно для ввода имени пользователя / пароля) или формы входа. В нашем случае мы используем форму:
form_login: login_path: /login check_path: /login_check
Конечно, мы даем пользователю возможность явно выйти из системы:
logout: path: /logout target: /login
Здесь настройка target
сообщает приложению, куда идти (в данном случае обратно на страницу login
) после выхода пользователя из системы.
Для правильной работы вышеуказанных настроек Symfony требуется три маршрута в файле routing.yml
:
logout: path: /logout login: path: /login defaults: { _controller: AppBundle:Security:login} login_check: path: /login_check
В частности, путь /login
должен быть связан с правильным действием в контроллере ( AppBundle:Security:login
). Два других могут быть определены с помощью имени и пути.
access_control
В этом подразделе мы определяем соответствие между шаблонами URI и требуемым уровнем доступа.
В целом у нас есть 3 разных уровня:
-
IS_AUTHENTICATED_ANONYMOUSLY
— это значит кого угодно. Контроль доступа не будет применяться при посещении URI с этим правом доступа. -
ROLE_USER
— обычный пользователь,ROLE_USER
проверку входа, может получить доступ к этому URI. -
ROLE_ADMIN
— суперпользователь, имеющий некоторые специальные привилегии, может получить доступ к этому URI.
Имена ( ROLE_USER
и ROLE_ADMIN
) являются искусственными. Разработчики могут применять свой собственный набор имен, которые будут использоваться в приложении (например, использование USER
и ADMIN
также хорошо).
Общая ошибка при определении контроля доступа делает контроль слишком строгим и непригодным для использования.
Независимо от того, насколько строгое приложение требует контроля доступа, приложение ДОЛЖНО по крайней мере разрешить анонимный доступ к странице login
в login
. Как и в случае с маршрутами Symfony, мы ДОЛЖНЫ определить более конкретные правила ранее.
Мы должны освободить доступ ко всем маршрутам, связанным с регистрацией пользователей ( register
, preregister
, create
) и входом в систему ( login
), чтобы разрешить анонимный доступ. / , за исключением тех шаблонов URI, которые были определены ранее) для всех, кроме «инсайдеров» ( ROLE_USER
или ROLE_ADMIN
).
AppBundle:User
объект
Я предпочитаю, чтобы AppBundle:User
объект создавался путем импорта существующей структуры БД. Этот объект сам по себе еще не может использоваться процессом аутентификации. Нам нужны дальнейшие модификации:
<?php namespace AppBundle\Entity; use Symfony\Component\Security\Core\User\UserInterface; class User implements UserInterface, \Serializable { private $id;
Класс User
должен реализовывать два интерфейса: Symfony\Component\Security\Core\User\UserInterface
и \Serializable
. Это потребует от нас определения дополнительных методов, включая eraseCredentials
, serialize
, unserialize
и getSalt
.
Примечание об определении метода getRoles
. roles
— это поле в нашей user
таблице, поэтому метод получения автоматически генерируется следующим образом:
public function getRoles() { return $this->roles; }
Это потому, что мы определяем поле roles
так же просто, как VARCHAR(255)
, который вернет сохраненную нами строку. Однако для Symfony требуются роли в формате массива, поэтому, несмотря на то, что для нашего пользователя на данный момент сохранена только одна строковая роль, мы учитываем систему с несколькими ролями и требование ролей как массив, разбивая эту строку. Таким образом, если мы хотим, чтобы у пользователя было несколько ролей, мы можем сохранить их в виде списка через запятую ( ROLE_ADMIN, ROLE_BLOGGER, ROLE_ACCOUNTANT
). Таким образом, мы настраиваем метод следующим образом:
public function getRoles() { return explode(',', $this->roles); }
Пришло время перейти к логике, но перед этим давайте создадим самого первого пользователя root с максимальными правами доступа.
Для пользователя легко заполнить все поля в user
таблице, кроме одного: поля password
. Мы используем bcrypt
для хэширования нашего пароля, поэтому мы не можем вставить в него простой текстовый пароль. Чтобы помочь нам справиться с этой утомительной задачей, мы используем этот онлайн-инструмент . Мой пример SQL INSERT оператора root (хэш, рассчитанный для пароля «test») приведен ниже:
INSERT INTO `user` (`username`, `password`, `email`, `roles`, `active`) VALUES ('root', '$2a$12$3INF/uK0.pmZAMFW0In0uOrfpq.yaVIK0xwmWO8Yjxhs4m8CC1Ei2', '[email protected]', 'ROLE_ADMIN', '1');
У вас есть приглашение от ADMIN
Когда администратор посещает страницу /invite
, он может ввести адрес электронной почты, чтобы пригласить кого-то. Затем приложение создаст письмо и отправит его. Письмо будет содержать ссылку для регистрации получателя и уникальный код приглашения, чтобы проверить, что приглашение поступает из надежного источника. Это все. В серверной части адрес электронной почты получателя, код приглашения и срок действия будут сохранены в таблице базы данных.
Код этого метода приведен ниже:
public function doinviteAction(Request $req) { $email = $req->get('email'); $userid = $req->get('user'); $hash = $this->setInvite($userid, $email); $this->sendMail($email, $hash); $url = $this->generateUrl('invite'); return $this->redirect($url); } private function setInvite($userid, $email) { $em = $this->getDoctrine()->getManager(); $user_repo = $em->getRepository('AppBundle:User'); $user = $user_repo->find($userid);
Мы получаем пользователя, который отправляет приглашение ( $userid
), и пользователя, которого они намереваются пригласить ( $email
). Затем мы создаем запись приглашения и генерируем случайное число, связанное с этим приглашением, в качестве кода приглашения. Вся информация, необходимая для отправки приглашения (включая код приглашения), будет сохранена и сохранена. Наконец, мы возвращаем код приглашения.
После того, как приглашение сохранено, мы отправляем электронное письмо. Я использую почтовый сервис Symfony по умолчанию для этого. Обратите внимание, что для тела письма я использую шаблон Twig для рендеринга богатого контента.
Поскольку только администратор может пригласить другого человека, нам нужно контролировать содержимое страницы на основе авторизации пользователя. Механизм шаблонов по умолчанию, используемый в Symfony, Twig, имеет помощника для этого:
{% if is_granted('ROLE_ADMIN') %} <li><a href="{{path('invite')}}"><i></i> Invite</a></li> {% endif %}
В этом шаблоне мы используем помощник is_granted
чтобы ограничить отображение пункта меню только для пользователей с is_granted
администратора.
Регистрация начинается
Когда получатель получает приглашение от администратора, он может щелкнуть ссылку и проверить приглашение.
Действующее приглашение должно удовлетворять следующим условиям:
- Письмо действительно приглашено.
- Срок действия приглашения не истек.
- Код подтверждения проверен и связан с этим электронным письмом.
Все вышеперечисленное делается в соответствующем действии контроллера:
public function preregisterAction(Request $req) { $email = $req->get('email'); $invitationCode = $req->get('code'); try { $this->verify($email, $invitationCode); } catch (\Exception $e) { $this->addFlash('error', $e->getMessage()); return $this->redirectToRoute('error'); } $registration = new User(); $form = $this->createForm(new RegistrationType(), $registration, ['action' => $this->generateUrl('create'), 'method' => 'POST']); return $this->render('AppBundle:Default:register2. html.twig', ['form' => $form->createView(), 'email' => $email]); } private function verify($email, $code) { $repo = $this->getDoctrine()->getManager()->getRepository('AppBundle:Invite'); $invites = $repo->findBy(['invited' => $email]); if (count($invites) == 0) { throw new \Exception("This email is not invited."); } $invite = $invites[0]; $exp = $invite->getExpires(); $now = new \DateTime(); if ($exp < $now) { throw new \Exception("Invitation expires."); } if ($invite->getCode() !== $code) { throw new \Exception('Wrong invitation code.'); } }
Метод verify
выполняет проверку и выдает исключение, если что-то не так. В методе preregisterAction
мы отловим это исключение и добавим флэш-сообщение на странице ошибок, чтобы предупредить пользователя. Однако, если проверка прошла успешно, процесс регистрации перейдет к следующему шагу, отображая регистрационную форму.
Вывод
Это подводит нас к концу первой части Symfony 2 Security Management, которая охватывает настройку приложения (database и security.yml
) и этап предварительной регистрации, на котором пользователь проверяет с помощью приложения, что они действительно приглашены.
В нашей части 2 мы рассмотрим следующие два шага: регистрация и вход в систему. Мы также разработаем наш обработчик после входа в систему для выполнения некоторых действий для конкретного приложения после успешного входа пользователя.
Будьте на связи!
Проведение авторизации и регистрации в системе Битрикс24
В большом количестве случаев возможность доступа на корпоративный портал ограничена кругом сотрудников компании. Помимо того, администратор портала настраивает способы как регистрации, так и авторизации на корпоративном портале.
Авторизация и регистрация.
Если в настройках портала указана возможность того, что неавторизованные пользователи имеют возможность ознакомится с содержанием портала, то на верхнем углу справа в портале располагается ссылка на Авторизацию, которая даёт возможность пользователю произвести авторизацию на портале и проводить на нём полноценную работу. На момент нажатия на ссылку произойдет открытие формы для авторизации:
Но если неавторизованные пользователи не имеют возможности осуществлять просмотр портала, то на момент открытия портала сразу будет отображена следующая форма для произведения авторизации:
Вам ввести в открывшейся перед вами форме для авторизации собственный Логин, Пароль и далее выполните нажатие на кнопку Войти. После чего страница обновится и на этот момент вы уже можете начать проводить какую-либо работу на портале.
Примечание : Чтобы произвести авторизачию на портале используя логины из социальных сетей, вам стоит предварительно произвести заполнение в разделе Профиль сотрудника соответствующие данной опции поля через раздел Социальные сети.
Примечание : Администратор портала имеет возможность выключить применение одноразовых паролей пользователем. О возможностях импользования данной опции пользователь должен предупредить администрацию портала заранее. Если данный режим для проведения авторизации включён, то вместо стандартного пути авторизации.
имеется возможность применение Bitrix OTP вместо устройства по умолчанию.
Но при условии того, что настройки портала дают возможность самостоятельной регистрации пользователей, то они могут воспользоваться ссылкой на регистрацию на портале через соответствующую ссылку Регистрация, которую можно найти в форме авторизации. Форма для произведения регистрации имеет подобный вид:
В форме вам стоит указать стандартные регистрационные данные: E-Mail, Фамилию, Имя, Пароль, Логин, Подтверждение пароля.
После заполнения нажмите на кнопку Регистрация, после чего произойдёт обновление страницы и у вас появится возможность приступить к работе на данном портале.
Примечание: при наличии указанного администрацией запрета на самостоятельную регистрацию, то возможность добавления нового пользователя будет произведена непосредственно лично администратором портала либо его сотрудником, уполномоченном в данном вопросе. В таком случае уполномоченный сотрудник либо администратор портала отправит вам приглашение по e-mail.
У вас появились какие либо вопросы при прочтении?
По всем вопросам и всему, что вам не понятно по теме Битрикс24 обращаетесь сюда:
Так же у вас имеется возможность отправить запрос и получить консультацию БЕСПЛАТНО! По нашей акции:
Подробнее ознакомиться с Битрикс24 и Terrasoft можно здесь:
Форма регистрации пользователя
| Регистрация пользователя с помощью PHP и MySQL
В этом уроке мы узнаем, как создать форму регистрации пользователя в файле PHP.
Регистрационная форма HTML позже будет использоваться для отправки данных в сценарий signup.php
.
Обзор урока
В этом уроке мы узнаем:
- Как создать регистрационную форму пользователя
- Мы рассмотрим необходимые поля формы для регистрации пользователя
Регистрация пользователя
Чтобы создать пользователя регистрации в приложении PHP, мы должны создать HTML-форму.Форма отвечает за предоставление пользователю возможности отправить необходимую для регистрации информацию.
Информация, которую мы собираемся обработать, следующая:
- Имя пользователя
- Электронная почта
- Пароль
- Подтвердите пароль
И имя пользователя, и пароль будут использоваться пользователем для входа в приложение. Электронная почта используется для отправки пользователю электронного письма с подтверждением, чтобы регистрацию можно было подтвердить, когда пользователь нажимает ссылку для подтверждения.
Исходный код
Это наша начальная разметка HTML для сценария register.php
:
Регистрация пользователя
Зарегистрироваться
После урока у вас должен быть скрипт register.php
, как показано ниже:
Регистрация пользователя
Зарегистрироваться
php "method =" POST ">
Имя пользователя:
Электронная почта:
Пароль:
Подтвердите пароль:
В результате в браузере мы должны увидеть нечто похожее на приведенную ниже Регистрационную форму.
В следующем уроке мы собираемся создать скрипт signup.php
для обработки отправленных пользовательских данных из формы регистрации пользователя, которую мы создали в текущем уроке.
Build PHP 8 Форма регистрации (регистрации) пользователя с MySQL
Узнайте, как создать базовую систему регистрации пользователей PHP 8, добавить проверку PHP в регистрационную форму, надежно хэшировать пароль и сохранить информацию о пользователе в базе данных MySQL.
Регистрация пользователя — важный процесс в веб-разработке, этот процесс инициирует учетную запись пользователя почти во всех веб-приложениях. Пользователь должен войти в веб-приложение или мобильное приложение, используя учетные данные для входа.
Вы также можете ознакомиться с нашим предыдущим руководством по созданию системы аутентификации пользователей в PHP и MySQL.
Папка и файлы проекта
В этом руководстве мы создадим простую форму регистрации пользователя с использованием PHP 8 и MySQL и рассмотрим следующие концепции:
- Создание регистрационной формы с помощью Bootstrap.
- Получить пользовательские значения из HTML-формы.
- Выполните обязательную проверку формы регистрации.
- Убедитесь, что пользователь уже зарегистрировался с текущим идентификатором электронной почты.
- Надежно хэшировать пароль.
- Глобальное управление сообщениями об успехах и ошибках.
- Сохранение значений регистрационной формы в базе данных MySQL.
\ - регистрация пользователя на php
| - конфигурация
| --- db.php
| - скрипты
| --- register.php
| - index.php
Создание базы данных и структуры таблицы
Используйте MAMP или XAMPP для создания базы данных и таблицы пользователей внутри базы данных.
Создать базу данных `database_name`
.
Создайте `table_name`
внутри базы данных.
Используйте следующий сценарий SQL для создания пользователей table:
CREATE TABLE `users` (
`id` int (11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
varchar (100) NOT NULL,
varchar (100) NOT NULL,
`email` varchar (50) НЕ NULL,
varchar (20) NOT NULL,
varchar (255) NOT NULL,
`date_time` datetime НЕ ПУСТО
) ДВИГАТЕЛЬ = ИННОДБ ДИАГРАММА ПО УМОЛЧАНИЮ = utf8;
Создание формы пользователя с помощью HTML и Bootstrap
Код HTML создает форму регистрации пользователя, которая позволяет пользователю вводить значения через эту форму.Мы использовали CSS-фреймворк Bootstrap, который ускоряет создание форм и делает их удобными для мобильных устройств.
Форма регистрации пользователя PHP
Конфигурация базы данных MySQL
Чтобы установить соединение с базой данных, поместите следующий код в файл config / database . php файл.
Php
$ hostname = "localhost";
$ username = "phpdemo";
$ password = "4Mu99BhzK8dr4vF1";
пытаться {
$ connection = новый PDO ("mysql: host = $ hostname; dbname = php_db", $ username, $ password);
$ connection-> setAttribute (PDO :: ATTR_ERRMODE, PDO :: ERRMODE_EXCEPTION);
} catch (PDOException $ e) {
echo "Ошибка подключения к базе данных:". $ e-> getMessage ();
}
?>
PHP 8 Сценарий регистрации пользователя
Поместите следующий код в скрипты / регистр .php .
Php
включить ('config / db.php');
global $ success_msg, $ email_exist, $ emptyError1, $ emptyError2, $ emptyError3, $ emptyError4, $ emptyError5;
if (isset ($ _ POST ["submit"])) {
$ firstname = $ _POST ["имя"];
$ lastname = $ _POST ["фамилия"];
$ email = $ _POST ["электронная почта"];
$ mobile = $ _POST ["мобильный"];
$ password = $ _POST ["пароль"];
$ emailCheck = $ connection-> query ("ВЫБРАТЬ * ОТ пользователей ГДЕ email = '{$ email}'");
$ rowCount = $ emailCheck-> fetchColumn ();
if (! empty ($ firstname) &&! empty ($ lastname) &&! empty ($ email) &&! empty ($ mobile) &&! empty ($ password)) {
if ($ rowCount> 0) {
$ email_exist = '
Пользователь с электронной почтой уже существует!
';
} еще {
$ password_hash = password_hash ($ пароль, PASSWORD_BCRYPT);
$ sql = $ connection-> query ("ВСТАВИТЬ пользователей (имя, фамилия, адрес электронной почты, мобильный телефон, пароль, дата_время)
ЗНАЧЕНИЯ ('{$ firstname}', '{$ lastname}', '{$ email}', '{$ mobile}', '{$ password_hash}', now ()) ");
if (! $ sql) {
die ("Ошибка запроса MySQL!". mysqli_error ($ соединение));
} еще {
$ success_msg = '
Пользователь успешно зарегистрировался!
';
}
}
} еще {
if (empty ($ firstname)) {
$ emptyError1 = '
Имя обязательно.
';
}
if (пусто ($ lastname)) {
$ emptyError2 = '
Фамилия обязательна. ';
}
if (empty ($ email)) {
$ emptyError3 = '
Электронная почта обязательна.
';
}
if (empty ($ mobile)) {
$ emptyError4 = '
Требуется номер мобильного телефона.
';
}
if (пусто ($ пароль)) {
$ emptyError5 = '
Необходим пароль.
';
}
}
}
?>
$ _POST Метод извлекает данные пользователя при нажатии на кнопку отправки.
Мы используем запрос SELECT, чтобы узнать адрес электронной почты пользователя. Если адрес электронной почты пользователя уже существует, мы отобразим сообщение пользователю.
Глобальная переменная используется для обертывания всех сообщений об ошибках и успехах, которые мы используем для предупреждения пользователя о конкретном обновлении.
Метод password_hash безопасно хеширует пароль и сохраняет его в длинной строке в базе данных.
Реализация сценария окончательной регистрации пользователя
Чтобы форма пользователя работала, включите сценариев / регистр.php в файле index.php .
Мы должны отобразить глобальные переменные сообщения, чтобы отобразить сообщения об ошибках и успешном выполнении.
Php include ('scripts / register. php'); ?>
Форма регистрации пользователя PHP
Заключение
Мы завершили руководство по регистрации пользователя PHP.В этом руководстве мы узнали, как создать пользовательскую форму, реализовать базовую проверку, безопасно хэшировать пароль и сохранить значения пользовательской формы с помощью HTML и PHP-формы в базе данных MySQL.
Вы можете найти полный код этого руководства на GitHub.
PHP 8 MySQL Tutorial: Создание системы входа и аутентификации пользователей
В этом руководстве мы узнаем, как создать безопасную систему аутентификации пользователей PHP 8 и входа в систему с базой данных MySQL, используя подход процедурного программирования.В следующей демонстрации вы можете проверить окончательный результат этого руководства по системе входа в PHP 8.
Аутентификация пользователя — это стандартный механизм безопасности. Он позволяет идентифицированным пользователям получать доступ к любому цифровому приложению или веб-сайту. Это строго предотвращает доступ неопознанных пользователей к веб-сайту или мобильному приложению.
В повседневной жизни мы используем цифровые продукты, такие как Facebook, Twitter, Gmail, и мы почти знакомы с механизмами регистрации пользователей и входа в систему.Вы создаете учетную запись перед входом в эти приложения, чтобы вы могли использовать их функции.
Что мы узнаем:
В этой статье мы выделим некоторые из основных функций, которые необходимы для создания полной системы входа и регистрации с помощью PHP и MySQL.
- Создание форм входа и регистрации с помощью Bootstrap 4
- Установление подключения к базе данных MySQL с помощью проекта PHP
- Управление данными пользователя в сеансе
- Проверка на стороне сервера PHP
- Обработка сообщений об ошибках
- Отправка сообщения электронной почты с подтверждением пользователя с помощью подключаемого модуля SwiftMailer
- Защита пароля с помощью механизма хеширования пароля
- Проверка пароля
- Перенаправление URL на основе состояния входа пользователя в систему
- Отображение данных пользователя, вошедшего в систему, с помощью сеанса PHP
- Выход из системы и разрушение сеанса
Структура файлов и папок PHP 8
Откройте MAMP или XAMPP и затем запустите свой веб-сервер, перейдите в папку htdocs и создайте следующую папку и файлы, которые необходимы для разработки нашей системы аутентификации пользователей.
\ - аутентификация пользователя php
| - конфигурация
| --- db.php
| - контроллеры
| --- login.php
| --- register.php
| --- user_activation.php
| - css
| --- style.css
| - lib
| --- Сторонние плагины
| - dashboard.php
| - header.php
| - index.php
| - logout.php
| - signup.php
| - user_verification.php
Создание базы данных и таблицы в MySQL
Наш локальный веб-сервер запущен и работает, перейдите в PHPMyAdmin.
Сначала создайте базу данных `your_database_name`
.
Создайте таблицу `table_name`
в базе данных MySQL.
Вы можете создать столбцы вручную или даже выполнить приведенный ниже sql-скрипт из вкладки SQL
, чтобы создать столбцы со следующими значениями.
СОЗДАТЬ ТАБЛИЦУ `users` (
`id` int (11) НЕ ПУСТО,
varchar (100) NOT NULL,
varchar (100) NOT NULL,
`email` varchar (50) НЕ NULL,
varchar (50) NOT NULL,
varchar (255) NOT NULL,
`token` varchar (255) НЕ NULL,
is_active enum ('0', '1') НЕ NULL,
date_time дата NOT NULL
) ДВИГАТЕЛЬ = ИННОДБ ДИАГРАММА ПО УМОЛЧАНИЮ = utf8;
Connect Database
Добавьте следующий код в config / db.php файл.
Php
ob_start ();
if (! isset ($ _ SESSION)) {
session_start ();
}
$ hostname = "localhost";
$ username = "phpdemo";
$ password = "4Mu99BhzK8dr4vF1";
$ dbname = "positronx_db";
$ connection = mysqli_connect ($ hostname, $ username, $ password, $ dbname) или die ("Соединение с базой данных не установлено.")
?>
Метод ob_start () следит за буферизацией вывода и позволяет нам использовать заголовок.
$ _SESSION позволяет нам сохранять данные, которые мы можем использовать в нашем приложении PHP, сеанс остается активным, пока открыто окно браузера.
Разработка пользовательского интерфейса формы регистрации и входа в систему с помощью Bootstrap 4
Для разработки пользовательского интерфейса формы регистрации и входа пользователя мы используем Bootstrap 4, добавляем ссылку Bootstrap CSS, JavaScript и jQuery в заголовок HTML-макета.
Добавьте следующий код в файл signup.php .
Пример системы регистрации пользователей PHP
Добавьте следующий код в индекс . php для создания макета формы входа.
Система входа в PHP
Чтобы добавить стиль в приложение аутентификации пользователей PHP, перейдите в css / style.css и добавьте следующий код.
* {
размер коробки: рамка-рамка;
}
тело {
font-weight: 400;
цвет фона: # EEEFF4;
}
тело,
html,
.Приложение,
.vertical-center {
ширина: 100%;
высота: 100%;
}
.navbar {
фон: # 1833FF! important;
ширина: 100%;
}
.btn-outline-primary {
цвет границы: # 1833FF;
цвет: # 1833FF;
}
.btn-outline-primary: hover {
цвет фона: # 1833FF;
цвет: #ffffff;
}
.vertical-center {
дисплей: гибкий;
выравнивание текста: слева;
justify-content: center;
flex-direction: столбец;
}
. inner-block {
ширина: 450 пикселей;
маржа: авто;
фон: #ffffff;
box-shadow: 0px 14px 80px rgba (34, 35, 58, 0,2);
отступ: 40px 55px 45px 55px;
переход: все .3s;
радиус границы: 20 пикселей;
}
.vertical-center .form-control: focus {
цвет границы: # 2554FF;
тень коробки: нет;
}
.vertical-center h4 {
выравнивание текста: центр;
маржа: 0;
высота строки: 1;
padding-bottom: 20 пикселей;
}
метка {
font-weight: 500;
}
Сборка системы регистрации пользователей
Чтобы создать безопасную систему регистрации пользователей, нам нужно проникнуть внутрь контроллеров / регистра .php и поместите в него следующий код.
Php
включить ('config / db.php');
require_once './lib/vendor/autoload.php';
global $ success_msg, $ email_exist, $ f_NameErr, $ l_NameErr, $ _emailErr, $ _mobileErr, $ _passwordErr;
global $ fNameEmptyErr, $ lNameEmptyErr, $ emailEmptyErr, $ mobileEmptyErr, $ passwordEmptyErr, $ email_verify_err, $ email_verify_success;
$ _first_name = $ _last_name = $ _email = $ _mobile_number = $ _password = "";
if (isset ($ _ POST ["submit"])) {
$ firstname = $ _POST ["имя"];
$ lastname = $ _POST ["фамилия"];
$ email = $ _POST ["электронная почта"];
$ mobilenumber = $ _POST ["mobilenumber"];
$ password = $ _POST ["пароль"];
$ email_check_query = mysqli_query ($ connection, «ВЫБРАТЬ * ОТ пользователей WHERE email = '{$ email}'»);
$ rowCount = mysqli_num_rows ($ email_check_query);
if (! empty ($ firstname) &&! empty ($ lastname) &&! empty ($ email) &&! empty ($ mobilenumber) &&! empty ($ password)) {
if ($ rowCount> 0) {
$ email_exist = '
Пользователь с электронной почтой уже существует!
';
} еще {
$ _first_name = mysqli_real_escape_string ($ connection, $ firstname);
$ _last_name = mysqli_real_escape_string ($ connection, $ lastname);
$ _email = mysqli_real_escape_string ($ connection, $ email);
$ _mobile_number = mysqli_real_escape_string ($ connection, $ mobilenumber);
$ _password = mysqli_real_escape_string ($ соединение, $ пароль);
if (! preg_match ("/ ^ [a-zA-Z] * $ /", $ _first_name)) {
$ f_NameErr = '
Допускаются только буквы и пробелы. & + = §! \?] {8,20} $ / ", $ _password))) {
$ токен = md5 (rand (). time ());
$ password_hash = password_hash ($ пароль, PASSWORD_BCRYPT);
$ sql = "ВСТАВИТЬ пользователей (имя, фамилия, адрес электронной почты, номер мобильного телефона, пароль, токен, is_active,
date_time) VALUES ('{$ firstname}', '{$ lastname}', '{$ email}', '{$ mobilenumber}', '{$ password_hash}',
'{$ token}', '0', сейчас ()) ";
$ sqlQuery = mysqli_query ($ соединение, $ sql);
if (! $ sqlQuery) {
die ("Ошибка запроса MySQL!".mysqli_error ($ соединение));
}
if ($ sqlQuery) {
$ msg = 'Щелкните ссылку активации, чтобы подтвердить свой адрес электронной почты.
Нажмите здесь, чтобы подтвердить электронную почту
';
$ transport = (новый Swift_SmtpTransport ('smtp.gmail.com ', 465,' ssl '))
-> setUsername ('ваш[email protected]')
-> setPassword ('your_email_password');
$ mailer = новый Swift_Mailer ($ транспорт);
$ message = (new Swift_Message ('Пожалуйста, подтвердите адрес электронной почты!'))
-> setFrom ([$ email => $ firstname. ''. $ lastname])
-> setTo ($ email)
-> addPart ($ msg, "текст / html")
-> setBody ('Привет! Пользователь');
$ result = $ mailer-> отправить ($ сообщение);
if (! $ result) {
$ email_verify_err = '
Письмо с подтверждением не может быть отправлено!
';
} еще {
$ email_verify_success = '
Письмо с подтверждением отправлено!
';
}
}
}
}
} еще {
if (empty ($ firstname)) {
$ fNameEmptyErr = '
Имя не может быть пустым. ';
}
if (пусто ($ lastname)) {
$ lNameEmptyErr = '
Фамилия не может быть пустым.
';
}
if (empty ($ email)) {
$ emailEmptyErr = '
Адрес электронной почты не может быть пустым.
';
}
if (empty ($ mobilenumber)) {
$ mobileEmptyErr = '
Номер мобильного телефона не может быть пустым. ';
}
if (пусто ($ пароль)) {
$ passwordEmptyErr = '
Пароль не может быть пустым.
';
}
}
}
?> Включить базу данных для обработки пользовательских данных. Метод isset () проверяет данные формы, когда пользователь нажимает кнопку отправки с тем же атрибутом имени, который мы передали в форме регистрации.
Извлеките данные пользователя, такие как имя, фамилия, адрес электронной почты, мобильный номер и пароль , используя метод HTTP $ _POST [”] .
Проверить, существует ли адрес электронной почты, предоставленный пользователем, в базе данных с помощью сценария SQL с помощью метода mysqli_query () .
Проверить, не пустые ли значения формы.
Убедитесь, что адрес электронной почты пользователя уже существует, затем отобразите ошибку с помощью компонента сообщения Bootstrap alert. Мы делаем сообщение об ошибке глобальной переменной, чтобы мы могли показать его пользователю.
Метод mysqli_real_escape_string () очищает данные перед отправкой в базу данных.
Метод preg_match () выполняет проверку PHP для имени, мобильного имени и пароля. Для проверки значения электронной почты мы использовали метод filter_var () . Мы обернули ошибки и также установили глобальные.
Нам нужно сгенерировать случайный токен с помощью метода md5 (rand (). Time ()) для отправки проверочного письма на адрес электронной почты пользователя.
Для надежного хеширования пароля мы использовали метод password_hash (). Password_hash () создает новый хэш пароля, используя безопасный односторонний алгоритм хеширования.6.0 «
Нам нужно импортировать библиотеку SwiftMailer и добавить сценарий SwiftMailer, а также определить шаблон электронной почты, который будет отправлен пользователю.
Теперь нам нужно реализовать логику аутентификации пользователя внутри файла signup.php .
Php include ('./ controllers / register.php');?>
Пример системы регистрации пользователей PHP
php include ('./ header.php'); ?>
Сценарий проверки электронной почты пользователя в PHP 8
Мы определили конфигурации SwiftMailer в регистре .php , теперь реализуем скрипт проверки пользователя для отправки проверочного электронного письма.
Добавьте следующий код в файл controllers / user_activation.php .
Php
включить ('./ config / db.php');
глобальные $ email_verified, $ email_already_verified, $ activate_error;
if (! empty ($ _ GET ['токен'])) {
$ token = $ _GET ['токен'];
} еще {
$ токен = "";
}
if ($ token! = "") {
$ sqlQuery = mysqli_query ($ connection, «ВЫБРАТЬ * ОТ пользователей WHERE token = '$ token'»);
$ countRow = mysqli_num_rows ($ sqlQuery);
if ($ countRow == 1) {
while ($ rowData = mysqli_fetch_array ($ sqlQuery)) {
$ is_active = $ rowData ['is_active'];
if ($ is_active == 0) {
$ update = mysqli_query ($ connection, «ОБНОВЛЕНИЕ пользователей SET is_active = '1' WHERE token = '$ token'»);
if ($ update) {
$ email_verified = '
Электронный адрес пользователя успешно подтвержден!
';
}
} еще {
$ email_already_verified = '
Электронный адрес пользователя уже подтвержден!
';
}
}
} еще {
$ Activation_error = '
Ошибка активации!
';
}
}
?>
Добавьте следующий код в user_verification.php файл.
Php include ('./ controllers / user_activation.php'); ?>
Подтверждение пользователя
Демонстрация подтверждения электронной почты пользователя
php echo $ email_already_verified; ?>
php echo $ email_verified; ?>
php echo $ activate_error; ?>
Если учетная запись пользователя подтверждена, нажмите следующую кнопку для входа.
Нажмите, чтобы войти
Сборка системы входа в PHP 8 с MySQL
Следующий код разрешает доступ только тем пользователям, которые подтвердили свой адрес электронной почты. Непроверенный пользователь не может получить доступ к приложению, и мы также сохраняем данные вошедшего в систему пользователя в сеансе PHP и с помощью заголовка («Location: page_url.php ») , перенаправляющий зарегистрированного пользователя на страницу dashboard.php.
Чтобы создать систему входа в систему PHP MySQL, добавьте следующий код в файл controllers / login.php .
Php
включить ('config / db.php');
global $ errorPwdErr, $ accountNotExistErr, $ emailPwdErr, $ verifyRequiredErr, $ email_empty_err, $ pass_empty_err;
if (isset ($ _ POST ['логин'])) {
$ email_signin = $ _POST ['email_signin'];
$ password_signin = $ _POST ['password_signin'];
$ user_email = filter_var ($ email_signin, FILTER_SANITIZE_EMAIL);
$ pswd = mysqli_real_escape_string ($ connection, $ password_signin);
$ sql = "ВЫБРАТЬ * От пользователей ГДЕ email = '{$ email_signin}'";
$ query = mysqli_query ($ соединение, $ sql);
$ rowCount = mysqli_num_rows ($ query);
if (! $ query) {
die ("Ошибка SQL-запроса:".& + = §! \?] {6,20} $ / ", $ pswd)) {
$ неправильноPwdErr = '
Пароль должен содержать от 6 до 20 символов, содержать как минимум один специальный символ, нижний регистр, верхний регистр и цифру.
';
}
if ($ rowCount <= 0) {
$ accountNotExistErr = '
Учетная запись пользователя не существует.
';
} еще {
while ($ row = mysqli_fetch_array ($ query)) {
$ id = $ row ['id'];
$ firstname = $ row ['имя'];
$ lastname = $ row ['фамилия'];
$ email = $ row ['электронная почта'];
$ mobilenumber = $ row ['номер мобильного'];
$ pass_word = $ row ['пароль'];
$ token = $ row ['токен'];
$ is_active = $ row ['is_active'];
}
$ password = password_verify ($ password_signin, $ pass_word);
if ($ is_active == '1') {
if ($ email_signin == $ email && $ password_signin == $ password) {
заголовок ("Местоположение:./dashboard.php ");
$ _SESSION ['id'] = $ id;
$ _SESSION ['firstname'] = $ firstname;
$ _SESSION ['lastname'] = $ lastname;
$ _SESSION ['email'] = $ email;
$ _SESSION ['mobilenumber'] = $ mobilenumber;
$ _SESSION ['токен'] = $ токен;
} еще {
$ emailPwdErr = '
Электронная почта или пароль неверны. ';
}
} еще {
$ verifyRequiredErr = '
Для входа в систему требуется подтверждение учетной записи.
';
}
}
} еще {
if (пусто ($ email_signin)) {
$ email_empty_err = "
Электронная почта не указана.
";
}
if (пусто ($ password_signin)) {
$ pass_empty_err = "
Пароль не указан. ";
}
}
}
?>
Чтобы реализовать логику входа на странице входа, добавьте следующий код в файл controllers / index.php .
Демонстрация системы регистрации и входа пользователей PHP
php include ('../ php-user-authentication / header.php'); ?>
php include ('./controllers/login.php '); ?>
Отображение данных вошедшего в систему пользователя и сценарий выхода
Добавьте следующий код на панель мониторинга .php для отображения пользовательских данных только авторизованным пользователям.
Php include ('config / db.php'); ?>
Пример системы регистрации пользователей PHP
Профиль пользователя
php echo $ _SESSION ['имя']; ?>
php echo $ _SESSION ['lastname']; ?>
Адрес электронной почты: php echo $ _SESSION ['email']; ?>
Мобильный номер: php echo $ _SESSION ['mobilenumber']; ?>
Выйти
Теперь нам нужно уничтожить сеанс, чтобы вывести пользователя из системы аутентификации пользователя. Мы уже передали ссылку logout.php на кнопку выхода из файла панели управления.
Откройте logout.php и поместите в него следующий код.
Php
session_start ();
session_destroy ();
header ("Расположение: http: // localhost: 8888 / php-user-authentication / index.php ")
;?>
Заключение
Итак, это было приложение для аутентификации и входа в систему PHP 8. Надеюсь, вы получили общее представление о том, как создать систему входа и авторизации с помощью PHP и MySQL. Мы рассмотрели некоторые важные темы, такие как отправка пользователю письма с подтверждением, безопасное хеширование пароля.
Полный код этого руководства можно найти на GitHub.
Создание системы входа в систему с использованием HTML, PHP и MySQL
Это руководство по созданию системы входа в систему с помощью HTML, PHP и MySQL.Ваш веб-сайт должен быть динамичным, и ваши посетители должны иметь к нему мгновенный доступ. Поэтому они хотят входить в систему как можно больше раз. Система аутентификации входа очень распространена для любого веб-приложения. Он позволяет зарегистрированным пользователям получать доступ к веб-сайту и функциям только для членов. Это также полезно, когда мы хотим хранить информацию для пользователей. Он охватывает все: от торговых сайтов, образовательных сайтов до членских сайтов и т. Д.
Это руководство состоит из 4 частей.
- Система регистрации
- Система входа в систему
- Страница приветствия
- Сценарий выхода из системы
1) Создание системы регистрации
В этой части мы создадим систему регистрации, которая позволит пользователям создавать новую учетную запись в системе.Наш первый шаг — создать регистрационную форму HTML. Форму довольно просто создать. Он запрашивает только имя, адрес электронной почты, пароль и пароль для подтверждения. Адреса электронной почты будут уникальными для каждого пользователя. Использование нескольких учетных записей для одного и того же адреса электронной почты не допускается. Он покажет сообщение об ошибке пользователям, которые попытаются создать несколько учетных записей с одним и тем же адресом электронной почты.
Шаг 1. Создание регистрационной формы в HTML
Мы создадим файл PHP с именем register.php со следующим кодом в нем.Это простая HTML-форма с некоторой базовой проверкой. Если вы не знакомы с HTML, вы можете получить его на многих интернет-сайтах, которые предоставляют готовые шаблоны форм входа в систему html5.
Вывод HTML-формы выше будет выглядеть следующим образом.
Зарегистрироваться
Все поля ввода обязательны с добавлением атрибута «обязательный»
, который является атрибутом HTML по умолчанию. Использование type = "email"
проверит адрес электронной почты, предоставленный пользователями, и выдаст ошибку, если адрес электронной почты недействителен.Для регистрационной формы мы использовали бутстрап для быстрой разработки. Если вы хотите сэкономить время на HTML-коде, вы всегда можете использовать несколько бесплатных шаблонов html5 для своего проекта.
Шаг 2. Создание таблицы базы данных MySQL
Вам нужно будет создать новую базу данных с любым подходящим именем. После этого выполните приведенный ниже SQL-запрос, чтобы создать таблицу пользователя внутри вашей вновь созданной базы данных MySQL.
Шаг 3. Создание файла конфигурации базы данных
Теперь мы создали таблицу пользователей.Давайте создадим новый файл PHP с именем config.php для подключения к базе данных MySQL. Вставьте следующий код в файл config.php и измените имя базы данных на любое, выбранное вами при создании базы данных.
Шаг 4: Создание файла сеанса
Создадим файл с именем session.php . В этом файле мы запустим сеанс и проверим, вошел ли уже пользователь в систему, если да, то мы перенаправим пользователя в файл welcome.php .
Шаг 5: Создайте регистрационную форму в PHP
Наконец, пришло время создать код PHP, который позволяет пользователям регистрировать свои учетные записи в системе. Этот код PHP будет предупреждать пользователей об ошибке, если какой-либо пользователь уже зарегистрирован с тем же адресом электронной почты.
Замените следующий код в файле register.php .
После того, как пользователь нажмет кнопку отправки, он проверит, установлена ли переменная $ _SERVER ["REQUEST_METHOD"] == "POST"
и $ _POST ['submit']
.Из соображений безопасности мы всегда рекомендуем не хранить пароль в базе данных в виде простого текста. Мы использовали функцию password_hash ()
, которая создает новый хэш пароля с использованием надежного одностороннего алгоритма хеширования.
Приведенный выше сценарий PHP проверяет, что ни один пользователь не зарегистрирован с тем же адресом электронной почты, а также проверяет пароль. После подтверждения проверки мы сохраняем предоставленную пользователем информацию в таблице пользователей и предупреждаем пользователя об успешной регистрации.
2) Создание системы входа в систему
В этой части мы создадим форму входа в систему, чтобы позволить пользователям получить доступ к ограниченной области системы. В нашем случае закрытая зона — это страница приветствия, о которой мы поговорим в следующей части.
Шаг 1. Создание формы входа в HTML
Ниже представлена HTML-форма для входа. Вставьте его в файл с именем login.php
Результат вышеупомянутого кода будет выглядеть так:
Войти
Шаг 2: Создание системы входа в PHP
После создания формы входа в систему в HTML мы напишем код для проверки учетных данных для входа.При отправке формы мы проверим, заполнены ли адрес электронной почты и пароль. Если они заполнились, мы выполним запрос SELECT
, чтобы найти запись в базе данных на основе адреса электронной почты и пароля. Если какая-либо запись будет найдена, мы сохраним «userID»
в сеансе, и пользователь будет перенаправлен в файл welcome.php , в противном случае пользователь получит сообщение об ошибке.
Давайте заменим следующий код в файле login.php .
3) Создание страницы приветствия
Ниже приведен код для файла welcome.php . Пользователи будут перенаправлены на эту страницу после успешного входа в систему. Мы добавили код вверху страницы, чтобы проверить, не вошел ли пользователь в систему, а затем перенаправить пользователя на страницу входа.
Давайте создадим файл welcome.php и вставим в него следующий код.
4) Сценарий выхода из системы
Наконец, давайте создадим выход из системы .php со следующим кодом в нем.
После того, как пользователь щелкнет ссылку Log Out , будет вызван приведенный выше сценарий, чтобы уничтожить сеанс и перенаправить пользователя к файлу login.php .
Заключение
В этом руководстве я объяснил, как создать систему входа в систему с помощью HTML, PHP и MySQL. Как только вы поймете, насколько просто создать систему входа в систему, вы можете добавить другие функции, такие как сброс пароля, забытый пароль, подтверждение адреса электронной почты, изменение профиля пользователя и т. Д.
michaelsoriano / user-registration-codeigniter: Система регистрации пользователей на основе PHP. Создан с использованием CodeIgniter и Bootstrap. Имеет проверку на основе токенов, функцию сброса пароля, страницу входа, страницу регистрации и многое другое.
GitHub — michaelsoriano / user-registration-codeigniter: система регистрации пользователей на основе PHP. Создан с использованием CodeIgniter и Bootstrap. Имеет проверку на основе токенов, функцию сброса пароля, страницу входа, страницу регистрации и многое другое.
Система регистрации пользователей на основе PHP.Создан с использованием CodeIgniter и Bootstrap. Имеет проверку на основе токенов, функцию сброса пароля, страницу входа, страницу регистрации и многое другое.
Файлы
Постоянная ссылка
Не удалось загрузить последнюю информацию о фиксации.
Тип
Имя
Последнее сообщение фиксации
Время фиксации
Простой двухэтапный процесс регистрации для пользователей, использующих CodeIgniter Framework.Шаги для регистрации ниже:
- Пользователь регистрируется с именем + адрес электронной почты
- Пользователь получает электронное письмо со ссылкой + токен для завершения регистрации
- Пользователь завершает регистрацию, вводя пароль
- Пользователь сейчас в приложении
В комплекте с формой входа в систему, формой сброса пароля и выходом из системы. Использует модель шифрования соль + для паролей, сеанс хранится в базе данных. Использует Bootstrap для форм.
Создан в основном для учебных целей: http: // michaelsoriano.com / building-a-user-registration-system-part-1-new-user-form /, но также хорош в качестве отправной точки для проектов
Как использовать:
- Клонировать репо
- Выполнить прикрепленный SQL
- Обновление .htaccess для базового каталога (его значение / user-registration-codeigniter /)
- Перейдите на ваш сайт
ВКЛЮЧАЕТ CODEIGNITER 3.0.2
Около
Система регистрации пользователей на основе PHP.Создан с использованием CodeIgniter и Bootstrap. Имеет проверку на основе токенов, функцию сброса пароля, страницу входа, страницу регистрации и многое другое.
Темы
ресурсов
Лицензия
Вы не можете выполнить это действие в настоящее время.
Вы вошли в систему с другой вкладкой или окном. Перезагрузите, чтобы обновить сеанс.
Вы вышли из системы на другой вкладке или в другом окне.Перезагрузите, чтобы обновить сеанс.
Регистрационная форма PHP с использованием методов GET, POST с примером
Что такое форма?
Когда вы входите на веб-сайт или в свой почтовый ящик, вы взаимодействуете с формой.
Формы используются для получения ввода от пользователя и отправки его на веб-сервер для обработки.
На схеме ниже показан процесс обработки формы.
Форма — это HTML-тег, который содержит элементы графического интерфейса пользователя, такие как поле ввода, переключатели флажков и т. Д.
Форма определяется с помощью тегов
, а элементы графического интерфейса пользователя определяются с помощью элементов формы, таких как ввод.
В этом руководстве вы узнаете:
Когда и почему мы используем формы?
- Формы пригодятся при разработке гибких и динамических приложений, принимающих ввод данных пользователем.
- Формы можно использовать для редактирования уже существующих данных из базы данных
Создать форму
Мы будем использовать HTML-теги для создания формы.Ниже приведен минимальный список вещей, необходимых для создания формы.
- Открытие и закрытие тегов формы
- Тип отправки формы POST или GET
- URL отправки, который будет обрабатывать отправленные данные
- Поля ввода, такие как поля ввода, текстовые области, кнопки, флажки и т. Д. .
Приведенный ниже код создает простую регистрационную форму
Регистрационная форма
Регистрационная форма
При просмотре приведенного выше кода в веб-браузере отображается следующая форма.
ЗДЕСЬ,
— теги открытия и закрытия формы
- action = «registration_form.php «method =» POST «> указывает целевой URL и тип отправки.
- Имя / Фамилия: метки для полей ввода
- теги поля ввода
- это тег новой строки
- — это скрытое значение, которое используется для проверки того, была ли форма отправлена или нет
- — это кнопка, при нажатии которой форма отправляется на сервер для обработки.
Отправка данных формы на сервер
Атрибут действия формы указывает URL-адрес отправки, обрабатывающий данные.Атрибут метода указывает тип отправки.
Метод PHP POST
- Это встроенная переменная суперглобального массива PHP, которая используется для получения значений, отправленных с помощью метода HTTP POST.
- К переменной массива можно получить доступ из любого скрипта в программе; он имеет глобальный охват.
- Этот метод идеален, если вы не хотите отображать значения сообщения формы в URL-адресе.
- Хорошим примером использования метода post является отправка данных для входа на сервер.
Он имеет следующий синтаксис.
Php
$ _POST ['имя_переменной'];
?>
ЗДЕСЬ,
- «$ _POST […]» — это массив PHP
- «’имя_переменной’» — имя переменной URL.
Метод PHP GET
- Это встроенная переменная суперглобального массива PHP, которая используется для получения значений, отправленных с помощью метода HTTP GET.
- К переменной массива можно получить доступ из любого скрипта в программе; он имеет глобальный охват.
- Этот метод отображает значения формы в URL-адресе.
- Идеально подходит для форм поисковых систем, поскольку позволяет пользователям отмечать результаты в закладках.
Он имеет следующий синтаксис.
Php
$ _GET ['имя_переменной'];
?>
ЗДЕСЬ,
- «$ _GET […]» — это массив PHP
- «’имя_переменной’» — имя переменной URL.
Методы GET и POST
POST GET Значения, не отображаемые в URL-адресе Значения, отображаемые в URL-адресе Не имеет ограничений на длину значений, поскольку они отправляются через тело HTTP Имеет ограничение на длину значений обычно 255 символов.Это потому, что значения отображаются в URL-адресе. Обратите внимание, что верхний предел символов зависит от браузера. Имеет более низкую производительность по сравнению с методом Php_GET из-за времени, затраченного на инкапсуляцию значений Php_POST в теле HTTP. Имеет высокую производительность по сравнению с методом POST из-за простой природы добавления значений в URL-адрес. Поддерживает множество различных типов данных, таких как строковые, числовые, двоичные и т. Д. Поддерживает только строковые типы данных, потому что значения отображаются в URL-адресе Результаты не могут быть отмечены книгой Результаты могут быть отмечены как книги для видимости значений в URL-адресе
На приведенной ниже диаграмме показана разница между get и post
Обработка данных регистрационной формы
Регистрационная форма отправляет данные себе, как указано в атрибут действия формы.
После отправки формы значения заполняются в суперглобальном массиве $ _POST.
Мы будем использовать функцию PHP isset, чтобы проверить, заполнены ли значения формы в массиве $ _POST, и обработать данные.
Мы изменим регистрационную форму, добавив в нее PHP-код, обрабатывающий данные. Ниже приведен измененный код
Регистрационная форма
php if (isset ($ _ POST ['form_submitted'])):?> // этот код выполняется при отправке формы
Спасибо
php echo $ _POST ['firstname']; ?>
Вы были зарегистрированы как
php echo $ _POST ['имя'].''. $ _POST ['фамилия']; ?>
Вернитесь назад к форме
php else:?>
Регистрационная форма
php endif; ? >
ЗДЕСЬ,
Дополнительные примеры
Простая поисковая машина
Мы спроектируем простую поисковую машину, которая использует метод PHP_GET в качестве типа отправки формы.
Для простоты мы будем использовать оператор PHP If для определения вывода.
Мы будем использовать тот же HTML-код для формы регистрации выше и вносить в нее минимальные изменения.
Простая поисковая система
php if (isset ($ _ GET ['form_submitted'])):?>
Результаты поиска для
php echo $ _GET ['search_term']; ?>
php if ($ _GET ['search_term'] == "GET"):?>
Метод GET отображает свои значения в URL-адресе
php else:?>
К сожалению, по вашему поисковому запросу совпадений не найдено
php endif; ?>
Перейдите на назад к форме
php else:?>
Простая поисковая система - введите GET
php endif; ?>
Просмотрите указанную выше страницу в веб-браузере.
Будет показана следующая форма.
Введите GET в верхнем регистре и нажмите кнопку «Отправить».
Будет показано следующее.
На диаграмме ниже показан URL-адрес для вышеуказанных результатов
Обратите внимание, что URL-адрес отображает значение search_term и form_submitted. Попробуйте ввести что-нибудь отличное от GET, затем нажмите кнопку отправки и посмотрите, какие результаты вы получите.
Работа с флажками, переключателями
Если пользователь не выбирает флажок или переключатель, значение не отправляется, если пользователь выбирает флажок или переключатель, отправляется значение единица (1) или истина .
Мы изменим код регистрационной формы и добавим кнопку проверки, которая позволяет пользователю согласиться с условиями обслуживания.
Регистрационная форма
php if (isset ($ _ POST ['form_submitted'])):?>
php if (! isset ($ _ POST ['согласен'])):?>
Вы не приняли наши условия использования
php else:?>
Спасибо
php echo $ _POST ['firstname']; ?>
Вы были зарегистрированы как
php echo $ _POST ['имя'].''. $ _POST ['фамилия']; ?>
Вернитесь назад к форме
php endif; ?>
php else:?>
Регистрационная форма
php endif; ?>
Просмотрите форму выше в браузере
Введите имя и фамилию
Обратите внимание, что флажок «Согласен с условиями обслуживания» не установлен.
Нажмите кнопку отправки
Вы получите следующие результаты
Нажмите на ссылку назад к форме и установите флажок
Нажмите кнопку отправки
Вы получите следующие результаты
Сводка
- Формы используются для получения данных от пользователей
- Формы создаются с использованием HTML-тегов
- Формы могут быть отправлены на сервер для обработки с использованием метода POST или GET
- Значения формы, отправленные через метод POST, инкапсулируются в Тело HTTP.
- Значения формы, отправленные с помощью метода GET, добавляются и отображаются в URL-адресе.
Создание системы регистрации пользователей с использованием PHP и Mysql.
Предпосылка
- PHP
- MySql
- Коннектор PHP-MySql
- Ubuntu (или любой другой дистрибутив Linux) (предполагается, что apache2 уже установлен.)
Настройка среды
- Шаг первый:
Установите PHP с помощью этой команды.
sudo apt-get install php
Войти в полноэкранный режимВыйти из полноэкранного режима
- Шаг второй:
Установите MySql с помощью этой команды.
sudo apt-get install mysql
Войти в полноэкранный режимВыйти из полноэкранного режима
- Шаг третий:
Установите MySql-Client с помощью этой команды.
sudo apt-get install mysql-client
Войти в полноэкранный режимВыйти из полноэкранного режима
- Шаг четвертый:
Установите PHP и MySql Connector.
sudo apt-get install php-mysql
Войти в полноэкранный режимВыйти из полноэкранного режима
Шаг пятый:
Откройте терминал и вставьте эту команду, чтобы открыть базу данных mysql;
mysql -u корень -p1234
Шаг шестой:
Создать ** базу данных **
создать базу данных logindetails;
использовать данные для входа;
- Шаг седьмой:
Создайте таблицу для хранения пользовательских данных
СОЗДАТЬ ТАБЛИЦУ `users` (
`id` int (11) NOT NULL ПЕРВИЧНЫЙ КЛЮЧ AUTO_INCREMENT,
varchar (100) NOT NULL,
`email` varchar (100) NOT NULL,
varchar (100) NOT NULL
) ДВИГАТЕЛЬ = ИННОДБ ДАННЫЕ ПО УМОЛЧАНИЮ = latin1;
Шаг восьмой:
Клонируйте этот репозиторий и скопируйте папку регистрации в / var / www / html /
sudo cp -r регистрация / var / www / html /
Перезагрузите сервер apache
sudo systemctl перезапустить apache2
- Шаг десятый:
Откройте этот URL в браузере
http: // localhost / registration
## Нажмите на страницу регистрации, чтобы создать учетную запись.