/
Francuz
/
DailyPort
Обзор
Документация
Войти
/
Francuz
/
DailyPort
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/User.php
86 строк
3 KB
Francuz
docs: подробные комментарии ко всем PHP-файлам проекта
15 июн 2026, 08:08
15 июн 2026, 08:08
594585d
Код
Авторство
О чём код?
<?php /** * Класс User — модель пользователя для аутентификации. * * Отвечает за: * - хранение данных пользователя (id, логин, пароль, права) * - хеширование пароля через MD5 * - валидацию логина (проверка на спецсимволы) * - аутентификацию через запрос к БД */ class User { /** @var int ID пользователя в БД */ public int $id = 0; /** @var string Логин пользователя */ public string $login = ''; /** @var string Хэш пароля (MD5) */ public string $password = ''; /** @var int Уровень прав доступа (999 = максимум) */ public int $permission = 0; /** * Хеширует пароль через MD5 и сохраняет в свойство password. * * @param string $password Открытый пароль */ public function setPassword(string $password): void { $this->password = md5($password); } /** * Валидирует логин — проверяет отсутствие спецсимволов. * * @return bool true если логин корректен, false если содержит спецсимволы */ public function validateLogin(): bool { $clean = htmlspecialchars($this->login, ENT_HTML5); if ($clean !== $this->login) { echo 'В логине запрещено использовать спецсимволы!'; return false; } return true; } /** * Выполняет аутентификацию пользователя по логину и паролю. * * Запрашивает БД: SELECT * FROM users WHERE name = ? AND password = ? * При успешном поиске заполняет свойства id, login, permission из БД. * * @param Database $db Экземпляр подключения к БД * @return bool true если аутентификация успешна */ public function authenticate(Database $db): bool { if (!$this->validateLogin()) { return false; } $login = $db->escape($this->login); $pass = $db->escape($this->password); $result = $db->query( "SELECT * FROM users WHERE name = '$login' AND password = '$pass'" ); if (!$result || $result->num_rows === 0) { echo 'Логин и/или пароль неверные!'; return false; } // Заполняем данные пользователя из БД $row = $result->fetch_assoc(); $this->id = (int)$row['id']; $this->login = $row['name']; $this->permission = (int)$row['permission']; return true; } }