- Подход с использованием единой таблицы базы данных.
В этом методе все пользовательские данные хранятся в одной таблице базы данных. Каждому пользователю присваивается уникальный идентификатор, например имя пользователя или адрес электронной почты. Вот пример:
// Create users table
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(255) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL UNIQUE
);
// Register a new user
$username = $_POST['username'];
$password = $_POST['password'];
$email = $_POST['email'];
// Hash the password for security
$hashedPassword = password_hash($password, PASSWORD_DEFAULT);
// Insert user data into the table
$sql = "INSERT INTO users (username, password, email) VALUES (?, ?, ?)";
$stmt = $pdo->prepare($sql);
$stmt->execute([$username, $hashedPassword, $email]);
- Подход с использованием отдельных таблиц пользователей и учетных записей.
Этот метод предполагает создание отдельных таблиц для пользователей и учетных записей пользователей. В таблице пользователей хранится общая информация о пользователе, а в таблице учетных записей — данные, специфичные для учетной записи. Вот пример:
// Create users table
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(255) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL UNIQUE
);
// Create accounts table
CREATE TABLE accounts (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
account_number VARCHAR(255) NOT NULL UNIQUE,
balance DECIMAL(10, 2) DEFAULT 0,
FOREIGN KEY (user_id) REFERENCES users(id)
);
// Register a new user and create an account
$username = $_POST['username'];
$password = $_POST['password'];
$email = $_POST['email'];
$accountNumber = generateAccountNumber(); // Custom function to generate a unique account number
// Hash the password for security
$hashedPassword = password_hash($password, PASSWORD_DEFAULT);
// Insert user data into the users table
$sql = "INSERT INTO users (username, password, email) VALUES (?, ?, ?)";
$stmt = $pdo->prepare($sql);
$stmt->execute([$username, $hashedPassword, $email]);
// Get the newly created user's ID
$userId = $pdo->lastInsertId();
// Insert account data into the accounts table
$sql = "INSERT INTO accounts (user_id, account_number) VALUES (?, ?)";
$stmt = $pdo->prepare($sql);
$stmt->execute([$userId, $accountNumber]);
- Подход управления доступом на основе ролей (RBAC).
Этот метод включает в себя назначение ролей пользователям и управление их разрешениями на основе этих ролей. Вот упрощенный пример:
// Create users table
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(255) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL UNIQUE,
role VARCHAR(255) NOT NULL DEFAULT 'user'
);
// Check user role for authorization
function isAuthorized($requiredRole) {
// Get the currently logged-in user's role from the session or database
$userRole = $_SESSION['user_role']; // Example
// Compare the required role with the user's role
return $userRole === $requiredRole;
}
// Usage example
if (isAuthorized('admin')) {
// Perform admin-specific actions
} else {
// Display an error or redirect unauthorized users
}