PHP скрипт регистрации и авторизации с использованием mysql 48

Создание системы регистрации и авторизации на PHP с использованием MySQL — это довольно стандартная задача в веб-разработке. Ниже приведен простой пример скрипта, который выполняет эту задачу. Пожалуйста, учтите, что в продакшн-коде необходимо внедрить более надежные меры безопасности, такие как защита от SQL-инъекций, XSS и CSRF атак, а также более сложную обработку паролей и сессий.

1. Создайте базу данных и таблицу пользователей:

CREATE DATABASE my_database;

USE my_database;

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(255) NOT NULL UNIQUE,
    password VARCHAR(255) NOT NULL
);

2. Создайте файл для подключения к базе данных (`db.php`):

<?php
$host = 'localhost';
$dbname = 'my_database';
$user = 'root'; // замените на своего пользователя
$password = ''; // замените на свой пароль

try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname", $user, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    die("Could not connect to the database: " . $e->getMessage());
}
?>

3. Создайте файл для регистрации (`register.php`):

<?php
require 'db.php';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $username = $_POST['username'];
    $password = password_hash($_POST['password'], PASSWORD_BCRYPT);

    $stmt = $pdo->prepare('INSERT INTO users (username, password) VALUES (:username, :password)');
    $stmt->execute(['username' => $username, 'password' => $password]);

    echo "Registration successful!";
}
?>

<form method="post" action="register.php">
    <input type="text" name="username" placeholder="Username" required>
    <input type="password" name="password" placeholder="Password" required>
    <button type="submit">Register</button>
</form>

4. Создайте файл для авторизации (`login.php`):

<?php
session_start();
require 'db.php';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $username = $_POST['username'];
    $password = $_POST['password'];

    $stmt = $pdo->prepare('SELECT * FROM users WHERE username = :username');
    $stmt->execute(['username' => $username]);
    $user = $stmt->fetch();

    if ($user && password_verify($password, $user['password'])) {
        $_SESSION['user_id'] = $user['id'];
        echo "Login successful!";
    } else {
        echo "Invalid username or password!";
    }
}
?>

<form method="post" action="login.php">
    <input type="text" name="username" placeholder="Username" required>
    <input type="password" name="password" placeholder="Password" required>
    <button type="submit">Login</button>
</form>

5. Создайте файл для выхода (`logout.php`):

<?php
session_start();
session_destroy();
echo "You have been logged out!";
?>

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

You might like