Add exact application files

This commit is contained in:
2026-01-21 02:10:12 +03:00
parent d25a8abc80
commit df33488ad7
7 changed files with 1586 additions and 0 deletions

43
src/Db.php Normal file
View File

@@ -0,0 +1,43 @@
<?php
namespace App;
use PDO;
use PDOException;
class Db
{
// Простая фабрика PDO по логину/паролю MariaDB из сессии
public static function connectFromSession(): PDO
{
if (empty($_SESSION['db_user']) || empty($_SESSION['db_pass'])) {
throw new \RuntimeException('Not authenticated');
}
$user = $_SESSION['db_user'];
$pass = $_SESSION['db_pass'];
// TODO: вынести host/port/charset в конфиг .env
$dsn = 'mysql:host=localhost;port=3306;charset=utf8mb4';
$pdo = new PDO($dsn, $user, $pass, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_EMULATE_PREPARES => false, // важная настройка [web:28][web:25]
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
]);
return $pdo;
}
public static function testConnection(string $user, string $pass): void
{
$dsn = 'mysql:host=localhost;port=3306;charset=utf8mb4'; // MariaDB совместим [web:22][web:28]
try {
new PDO($dsn, $user, $pass, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_EMULATE_PREPARES => false,
]);
} catch (PDOException $e) {
throw new \RuntimeException('Connection failed: ' . $e->getMessage());
}
}
}