Добро пожаловать на BlackSAMP - ФОРУМ

  • Приватные и секретные разделы доступны только зарегистрированным пользователям.

    Вся важная информация в нашем ТГ: t.me/gtablack

    На данном форуме запрещено публиковать контент нарушающий Российское законодательство, за это последует блокировка ФА.

Простейшая авторизация + БД

Количество просмотров: 76
Уровень сложности
Легко

IlyaMarkinV

Редактор
Редактор
Регистрация
13 Июн 2025
Сообщения
2
Реакции
1
Баллы
3
Приветствую!

Хочу поделиться готовой реализацией простейшей системы авторизации на PHP и MySQL. Всё разложено по полочкам: SQL-структура базы данных, РНР-код для входа, пояснения и рекомендации.

1. Создание базы данных

Для работы нужна БД auth_db и таблица users.

SQL-запросы (выполнить в phpMyAdmin или через консоль MySQL):



Код:
CREATE DATABASE IF NOT EXISTS auth_db

DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;


USE auth_db;


CREATE TABLE IF NOT EXISTS users (
  id INT AUTO_INCREMENT PRIMARY KEY,
  username VARCHAR(50) NOT NULL UNIQUE,
  password VARCHAR(255) NOT NULL,
  email VARCHAR(100) NOT NULL UNIQUE,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Добавляем тестового пользователя (логин: admin, пароль: password)
INSERT INTO users (username, password, email)
VALUES (
  'admin',
  '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', -- хеш от "password"
  'admin@example.com'
);

PHP-скрипт авторизации
(login.php)



php:
<?php

session_start();



// Подключение к БД

$host = 'localhost';

$user = 'root';

$pass = '';

$db = 'auth_db';



$conn = new mysqli($host, $user, $pass, $db);



if ($conn->connect_error) {

    die("Ошибка подключения: " . $conn->connect_error);

}



// Если форма отправлена

if (isset($_POST['login'])) {

    $username = $_POST['username'];

    $password = $_POST['password'];

 

    // Защита от SQL-инъекций (используем подготовленные запросы)

    $stmt = $conn->prepare("SELECT id, password FROM users WHERE username = ?");

    $stmt->bind_param("s", $username);

    $stmt->execute();

    $stmt->store_result();

 

    // Если пользователь найден

    if ($stmt->num_rows > 0) {

        $stmt->bind_result($id, $hashed_password);

        $stmt->fetch();

 

        // Проверяем пароль

        if (password_verify($password, $hashed_password)) {

            $_SESSION['user_id'] = $id; // Записываем ID в сессию

            header("Location: dashboard.php"); // Перенаправляем

            exit();

        } else {

            echo "Неверный пароль!";

        }

    } else {

        echo "Пользователь не найден!";

    }

 

    $stmt->close();

}

$conn->close();

?>


И не большая HTML-форма для входа
(login_form.html)


Html:
<form action="login.php" method="POST">

    <h2>Вход в систему</h2>

    <input type="text" name="username" placeholder="Логин" required><br>

    <input type="password" name="password" placeholder="Пароль" required><br>

    <button type="submit" name="login">Войти</button>

</form>

4. Как это работает?

1. База данных:

Таблица users хранит логины, хеши паролей (не plain-text!) и email.

Пароль "password" захеширован через password_hash().

2. Авторизация:

Пользователь вводит логин/пароль РНР проверяет их в БД.

Если пароль верный, ID пользователя сохраняется в сессии ($_SESSION).

3. Безопасность:

Пароли никогда не хранятся в открытом виде.

Используются подготовленные запросы (защита от SQL-инъекций).
 
Последнее редактирование:
Сверху Снизу