[FÁZE-1][config] Přidán konfigurační soubor systému přihlašování

[FÁZE-1][db] Přidáno připojení k databázi přes PDO
[FÁZE-1][install] Přidán instalační skript s tvorbou tabulek a prvního admina
This commit is contained in:
stepan
2026-03-16 23:08:28 +01:00
parent b24b0720f6
commit c4ec313eeb
3 changed files with 518 additions and 0 deletions
+48
View File
@@ -0,0 +1,48 @@
<?php
// ============================================================
// PŘIPOJENÍ K DATABÁZI
// ============================================================
// Tento soubor vytvoří připojení k MySQL databázi přes PDO.
// PDO je modernější a bezpečnější způsob práce s databází než
// starší mysqli (které bylo použito v původním projektu).
//
// Výsledkem je proměnná $pdo, kterou pak používají ostatní
// soubory pro dotazy na databázi.
// ============================================================
// Pokud config.php ještě není načtený, načteme ho
if (!defined('DB_HOST')) {
require_once __DIR__ . '/config.php';
}
// DSN = Data Source Name řetězec popisující připojení k DB
// utf8mb4 = plná podpora Unicode (diakritika, emoji, ...)
// utf8mb4_unicode_ci = správné řazení a porovnávání znaků
$dsn = 'mysql:host=' . DB_HOST
. ';dbname=' . DB_NAME
. ';charset=utf8mb4';
// Nastavení chování PDO
$moznosti = [
// Při chybě vyhoď výjimku (exception) místo tichého selhání
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
// Výsledky vrací jako asociativní pole (např. $radek['email'])
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
// Vypne emulovné prepared statements používáme pravé,
// které chrání před SQL injection na úrovni databáze
PDO::ATTR_EMULATE_PREPARES => false,
];
// Pokus o připojení k databázi
try {
$pdo = new PDO($dsn, DB_USER, DB_PASS, $moznosti);
} catch (PDOException $e) {
// Při chybě připojení zobrazíme obecnou chybovou hlášku.
// Detailní chybu NEZOBRAZUJEME uživateli mohla by prozradit
// citlivé informace o struktuře serveru.
// Chybu ale zalogujeme do PHP error logu pro administrátora.
error_log('Chyba připojení k databázi: ' . $e->getMessage());
die('Nepodařilo se připojit k databázi. Zkuste to prosím později.');
}