Создание системы входа с использованием PHP, MySQL и HTML

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

Управление и безопасность корпоративных систем | Запишитесь на бесплатный курс*

*Партнёрская ссылка. См. Условия использования.

Это учебное пособие состоит из 5 частей.

Содержание


  1. Требования
  2. Система регистрации
  3. Система входа
  4. Страница приветствия
  5. Скрипт выхода

1) Требования для создания системы входа на PHP

Для успешного выполнения этого учебного пособия и создания системы входа в PHP вам необходимо иметь и знать следующее:

  • Сервер, который поддерживает PHP для запуска вашего кода
  • Знание и опыт работы с HTML и CSS
  • Установленная на вашем устройстве база данных MySQL и знание ее использования
  • Возможность добавить все необходимые меры безопасности в вашу систему входа

Если у вас есть все эти базовые требования и знания, то вы готовы перейти к следующим шагам по созданию вашей системы входа в PHP.

2) Создание Системы Регистрации

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

Шаг 1: Создание Регистрационной Формы в HTML

Мы создадим файл PHP  с именем register.php со следующим кодом. Это простая HTML-форма с базовой валидацией. Если вы не знакомы с HTML, вы можете найти готовые шаблоны html5 для формы входа на многих онлайн-сайтах.

HTML

 

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Sign Up</title>
        <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
    </head>
    <body>
        <div class="container">
            <div class="row">
                <div class="col-md-12">
                    <h2>Register</h2>
                    <p>Please fill this form to create an account.</p>
                    <form action="" method="post">
                        <div class="form-group">
                            <label>Full Name</label>
                            <input type="text" name="name" class="form-control" required>
                        </div>    
                        <div class="form-group">
                            <label>Email Address</label>
                            <input type="email" name="email" class="form-control" required />
                        </div>    
                        <div class="form-group">
                            <label>Password</label>
                            <input type="password" name="password" class="form-control" required>
                        </div>
                        <div class="form-group">
                            <label>Confirm Password</label>
                            <input type="password" name="confirm_password" class="form-control" required>
                        </div>
                        <div class="form-group">
                            <input type="submit" name="submit" class="btn btn-primary" value="Submit">
                        </div>
                        <p>Already have an account? <a href="login.php">Login here</a>.</p>
                    </form>
                </div>
            </div>
        </div>    
    </body>
</html>

Вывод вышеуказанной HTML-формы будет выглядеть так.

Sign Up

Все поля ввода обязательны, добавив атрибут "required", который является атрибутом по умолчанию в HTML. Использование type="email" позволит проверить адрес электронной почты, введенный пользователями, и выдать ошибку, если адрес электронной почты недействителен. Для формы регистрации мы использовали bootstrap для быстрого развития. Если вы хотите сэкономить время на написании HTML-кода, всегда можно воспользоваться бесплатными шаблонами html5 для вашего проекта.

Шаг 2: Создание таблицы базы данных MySQL

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

MySQL

 

CREATE TABLE `users` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(75) NOT NULL,
  `password` varchar(255) NOT NULL,
  `email` varchar(100) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `email` (`email`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1;

Шаг 3: Создание файла конфигурации базы данных

Теперь мы создали таблицу пользователей. Давайте создадим новый файл PHP с именем config.php для подключения к базе данных MySQL. Вставьте следующий код в файл config.php и измените имя базы данных на то, которое вы выберете при создании базы данных.

PHP

 

Шаг 4: Создание файла сеанса

Создадим файл с именем session.php. В этом файле мы начнем сеанс и проверим, вошел ли пользователь, если да, то перенаправим пользователя на файл welcome.php.

PHP

 

Шаг 5: Создание формы регистрации в PHP

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

Замените следующий код в файле register.php.

PHP

 

prepare("SELECT * FROM users WHERE email = ?")) {
        $error = '';
        // Привязка параметров (s = строка, i = целое число, b = blob и т. д.), в нашем случае имя пользователя является строкой, поэтому мы используем "s"
	$query->bind_param('s', $email);
	$query->execute();
	// Сохранить результат, чтобы мы могли проверить существует ли учетная запись в базе данных.
	$query->store_result();
        if ($query->num_rows > 0) {
            $error .= '

The email address is already registered!

'; } else { // Проверка пароля if (strlen($password ) < 6) { $error .= '

Password must have atleast 6 characters.

'; } // Проверка подтверждения пароля if (empty($confirm_password)) { $error .= '

Please enter confirm password.

'; } else { if (empty($error) && ($password != $confirm_password)) { $error .= '

Password did not match.

'; } } if (empty($error) ) { $insertQuery = $db->prepare("INSERT INTO users (name, email, password) VALUES (?, ?, ?);"); $insertQuery->bind_param("sss", $fullname, $email, $password_hash); $result = $insertQuery->execute(); if ($result) { $error .= '

Your registration was successful!

'; } else { $error .= '

Something went wrong!

'; } } } } $query->close(); $insertQuery->close(); // Закрыть соединение с БД mysqli_close($db); } ?> Sign Up

Register

Please fill this form to create an account.

Already have an account? Login here.

Как только пользователь нажмет на кнопку отправки, будет проверено, установлено ли $_SERVER["REQUEST_METHOD"] == "POST" и установлена ли переменная $_POST['submit']. В целях безопасности мы всегда рекомендуем не хранить пароль в виде обычного текста в базе данных. Мы использовали функцию password_hash(), которая создает новый хеш пароля с использованием надежного одностороннего хеширующего алгоритма.

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

3) Создание системы входа

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

Шаг 1: Создание формы входа в HTML

Ниже приведена форма входа в HTML. Вставьте ее в файл с именем login.php

HTML

 

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Login</title>
        <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
    </head>
    <body>
        <div class="container">
            <div class="row">
                <div class="col-md-12">
                    <h2>Login</h2>
                    <p>Please fill in your email and password.</p>
                    <form action="" method="post">
                        <div class="form-group">
                            <label>Email Address</label>
                            <input type="email" name="email" class="form-control" required />
                        </div>    
                        <div class="form-group">
                            <label>Password</label>
                            <input type="password" name="password" class="form-control" required>
                        </div>
                        <div class="form-group">
                            <input type="submit" name="submit" class="btn btn-primary" value="Submit">
                        </div>
                        <p>Don't have an account? <a href="register.php">Register here</a>.</p>
                    </form>
                </div>
            </div>
        </div>    
    </body>
</html>

Результатом вышеуказанного кода будет следующее

Login

Шаг 2: Создание системы входа в PHP

После создания формы входа в HTML мы напишем код для проверки учетных данных при входе. При отправке формы мы будем проверять, заполнены ли электронная почта и пароль. Если они заполнены, то выполним запрос SELECT для поиска записи в базе данных на основе электронной почты и пароля. Если запись найдена, то мы сохраним "userID" в сессии, и пользователь будет перенаправлен на страницу welcome.php, в противном случае пользователю будет показано сообщение об ошибке.

Давайте заменим следующий код в файле login.php.

PHP

 

Please enter email.';
    }

    // проверить, заполнено ли поле пароля
    if (empty($password)) {
        $error .= '

Please enter your password.

'; } if (empty($error)) { if($query = $db->prepare("SELECT * FROM users WHERE email = ?")) { $query->bind_param('s', $email); $query->execute(); $row = $query->fetch(); if ($row) { if (password_verify($password, $row['password'])) { $_SESSION["userid"] = $row['id']; $_SESSION["user"] = $row; // Перенаправить пользователя на страницу приветствия header("location: welcome.php"); exit; } else { $error .= '

The password is not valid.

'; } } else { $error .= '

No User exist with that email address.

'; } } $query->close(); } // Закрыть соединение mysqli_close($db); } ?> Login

Login

Please fill in your email and password.

Don't have an account? Register here.

4) Создание страницы приветствия

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

Давайте создадим файл welcome.php и вставим в него следующий код.

PHP

 







Welcome <?php echo $_SESSION["name"]; ?>



Hello, . Welcome to demo site.

Log Out

5) Скрипт выхода

Наконец, давайте создадим файл logout.php с следующим кодом.

PHP

 

Как только пользователь нажимает на ссылку Выход, будет вызван указанный выше скрипт для уничтожения сеанса и перенаправления пользователя на файл login.php.

Заключение

В этом учебнике я объяснил, как можно создать систему входа с использованием HTML, PHP и MySQL. Как только вы поймете, насколько просто создать систему входа, вы сможете добавить другие функции, такие как сброс пароля, восстановление пароля, подтверждение адреса электронной почты, редактирование профиля пользователя и т. д.

Source:
https://dzone.com/articles/create-a-login-system-using-php