Files
stepan c4ec313eeb [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
2026-03-16 23:08:28 +01:00

48 lines
1.9 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?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.');
}