Система входа в ООП PHP с аутентификацией по базе данных: методы и примеры кода

Ниже приведены несколько методов реализации системы входа в систему PHP OOP, которая позволяет пользователям аутентифицироваться в базе данных. Каждый метод включает пример кода:

Метод 1: использование PDO (объекты данных PHP) для операций с базой данных

<?php
class Database
{
    private $host = 'localhost';
    private $username = 'your_username';
    private $password = 'your_password';
    private $database = 'your_database';
    private $connection;
    public function __construct()
    {
        try {
            $this->connection = new PDO("mysql:host=$this->host;dbname=$this->database", $this->username, $this->password);
            $this->connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        } catch (PDOException $e) {
            echo "Connection failed: " . $e->getMessage();
        }
    }
    public function authenticateUser($username, $password)
    {
        $query = "SELECT * FROM users WHERE username = :username AND password = :password";
        $stmt = $this->connection->prepare($query);
        $stmt->bindParam(':username', $username);
        $stmt->bindParam(':password', $password);
        $stmt->execute();
        if ($stmt->rowCount() > 0) {
            return true; // Authentication successful
        } else {
            return false; // Authentication failed
        }
    }
}
// Usage
$database = new Database();
if ($database->authenticateUser($username, $password)) {
    echo "Authentication successful";
} else {
    echo "Authentication failed";
}
?>

Метод 2: использование MySQLi (улучшенная версия MySQL) для операций с базой данных

<?php
class Database
{
    private $host = 'localhost';
    private $username = 'your_username';
    private $password = 'your_password';
    private $database = 'your_database';
    private $connection;
    public function __construct()
    {
        $this->connection = new mysqli($this->host, $this->username, $this->password, $this->database);
        if ($this->connection->connect_error) {
            die("Connection failed: " . $this->connection->connect_error);
        }
    }
    public function authenticateUser($username, $password)
    {
        $query = "SELECT * FROM users WHERE username = '$username' AND password = '$password'";
        $result = $this->connection->query($query);
        if ($result->num_rows > 0) {
            return true; // Authentication successful
        } else {
            return false; // Authentication failed
        }
    }
}
// Usage
$database = new Database();
if ($database->authenticateUser($username, $password)) {
    echo "Authentication successful";
} else {
    echo "Authentication failed";
}
?>

Метод 3: использование подготовленных операторов с MySQLi

<?php
class Database
{
    private $host = 'localhost';
    private $username = 'your_username';
    private $password = 'your_password';
    private $database = 'your_database';
    private $connection;
    public function __construct()
    {
        $this->connection = new mysqli($this->host, $this->username, $this->password, $this->database);
        if ($this->connection->connect_error) {
            die("Connection failed: " . $this->connection->connect_error);
        }
    }
    public function authenticateUser($username, $password)
    {
        $query = "SELECT * FROM users WHERE username = ? AND password = ?";
        $stmt = $this->connection->prepare($query);
        $stmt->bind_param("ss", $username, $password);
        $stmt->execute();
        $result = $stmt->get_result();
        if ($result->num_rows > 0) {
            return true; // Authentication successful
        } else {
            return false; // Authentication failed
        }
    }
}
// Usage
$database = new Database();
if ($database->authenticateUser($username, $password)) {
    echo "Authentication successful";
} else {
    echo "Authentication failed";
}
?>