Авторизация и регистрация на PHP на примерах

Авторизация и регистрация на PHP на примерах

Базовые механизмы практически любого web-проекта — авторизация и регистрация на php. Потому как они позволяют управлять доступом пользователей, хранить персональные данные и обеспечивать безопасность сайта. Сейчас подробно разберём как сделать регистрацию и авторизацию на сайте PHP, с понятными примерами кода и объяснениями.

Навигация по статье

Что такое авторизация и регистрация на PHP

Регистрация это процесс создания новой учётной записи пользователя и сохранения его данных в базе данных.
Авторизация это процесс входа пользователя на сайт с проверкой логина и пароля.

Обычно авторизация и регистрация на PHP в себя включают:

  • HTML формы с заполняемыми полями
  • Обработку данных средствами PHP
  • Базу данных (чаще всего MySQL) для хранения информации
  • Сессии ($_SESSION) либо куки ($_COOKIE)
  • Хеширование паролей (зашифровка полученного с формы)

Кстати, у нас есть уже несколько статей которые объяснят что такое sql, что такое session, что такое cookie.

Как сделать регистрацию на сайте PHP

Для регистрации на сайте первым делом создаётся html форма, через которую пользователь вводит свои данные. Вот пример простой формы:

<form method="post" action="register.php">
    <input type="text" name="login" placeholder="Логин">
    <input type="email" name="email" placeholder="Email">
    <input type="password" name="password" placeholder="Пароль">
    <button type="submit">Зарегистрироваться</button>
</form>

После отправки формы данные передаются в скрипт php, который сохраняет пользователя в базе данных. В данном случае скрипт находится в файле register.php потому как именно он указан в атрибуте формы action.

Как сделать регистрацию на PHP

Регистрация на PHP начинается с обработки данных, полученных от пользователя, и сохранения их в базе данных. Основные этапы регистрации:

  • Получение данных из формы
  • Валидация (проверка)
  • Хеширование (шифрование) пароля
  • Запись данных в БД (Базу Данных)

Пример таблицы пользователей:

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    login VARCHAR(100) NOT NULL,
    email VARCHAR(150) NOT NULL,
    password VARCHAR(255) NOT NULL
);

Пример php кода подключения к БД и записи в нее полученных данных.

$login = $_POST['login'];
$email = $_POST['email'];
$password = $_POST['password'];

$hash = password_hash($password, PASSWORD_DEFAULT);

$conn = new mysqli("localhost", "user", "password", "database");

$sql = "INSERT INTO users (login, email, password)
        VALUES ('$login', '$email', '$hash')";

$conn->query($sql);

Как сделать авторизацию на PHP

Авторизация на PHP это проверка логина и пароля пользователя и создание сессии, при которой он будет всегда авторизован не вводя каждый раз данные для входа. Основные шаги авторизации:

  • Получение логина и пароля из формы
  • Поиск пользователя в БД
  • Проверка пароля
  • Запуск сессии

Пример кода авторизации:

session_start();

$login = $_POST['login'];
$password = $_POST['password'];

$conn = new mysqli("localhost", "user", "password", "database");

$result = $conn->query("SELECT * FROM users WHERE login='$login'");
$user = $result->fetch_assoc();

if ($user && password_verify($password, $user['password'])) {
    $_SESSION['user_id'] = $user['id'];
    $_SESSION['login'] = $user['login'];
    echo "Вы успешно вошли";
} else {
    echo "Неверный логин или пароль";
}

Проверка авторизованного пользователя

После авторизации важно проверять, вошёл ли пользователь в систему. Потому как не все страницы должны быть доступны всем пользователям, есть защита авторизации. Пример кода проверки сессии:

session_start();

if (!isset($_SESSION['user_id'])) {
    header("Location: login.php");
    exit;
}

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

Выход пользователя

Для выхода пользователя из системы, достаточно уничтожить сессию. Пример logout-скрипта:

session_start();
session_destroy();
header("Location: login.php");
exit;

Рекомендации по безопасности

При реализации авторизации и регистрации на PHP рекомендуется:

  • Использовать password_hash() и password_verify()
  • Защищаться от SQL инъекций (prepared statements)
  • Валидировать входные данные
  • Использовать HTTPS
  • Ограничивать количество попыток входа

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