Создание системы регистрации и авторизации на 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, внедрять двухфакторную аутентификацию, обрабатывать ошибки и исключения, и т.д.