0, 'path' => '/', 'httponly' => true, 'samesite' => 'Strict', // 'secure' => true, ]); session_start(); // ------------------------------------------------------------ // KONTROLA: Je registrace povolena? // ------------------------------------------------------------ if (!REGISTRACE_OTEVRENA) { die('
Registrace nových uživatelů není momentálně dostupná.
'); } // Pokud je uživatel již přihlášen, přesměrujeme ho if (isset($_SESSION['uzivatel_id'])) { header('Location: ' . AUTH_REDIRECT_PO_PRIHLASENI); exit; } // ------------------------------------------------------------ // CSRF TOKEN // ------------------------------------------------------------ if (empty($_SESSION['csrf_token'])) { $_SESSION['csrf_token'] = bin2hex(random_bytes(32)); } $csrf_token = $_SESSION['csrf_token']; // ------------------------------------------------------------ // ZPRACOVÁNÍ FORMULÁŘE // ------------------------------------------------------------ $chyba = ''; $uspech = false; $email_hodnota = ''; if ($_SERVER['REQUEST_METHOD'] === 'POST') { $csrf_z_formulare = $_POST['csrf_token'] ?? ''; if (!hash_equals($csrf_token, $csrf_z_formulare)) { $chyba = 'Neplatný požadavek. Zkuste stránku obnovit a zkusit znovu.'; } if (empty($chyba)) { $email = trim($_POST['email'] ?? ''); $heslo = $_POST['heslo'] ?? ''; $heslo2 = $_POST['heslo2'] ?? ''; $email_hodnota = htmlspecialchars($email); if (empty($email)) { $chyba = 'Email nesmí být prázdný.'; } elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $chyba = 'Email není platná emailová adresa.'; } } if (empty($chyba)) { if (empty($heslo)) { $chyba = 'Heslo nesmí být prázdné.'; } elseif (mb_strlen($heslo) < HESLO_MIN_DELKA) { $chyba = 'Heslo musí mít alespoň ' . HESLO_MIN_DELKA . ' znaků.'; } elseif ($heslo !== $heslo2) { $chyba = 'Hesla se neshodují.'; } } if (empty($chyba)) { $stmt = $pdo->prepare(" SELECT COUNT(*) AS pocet FROM `" . DB_TABULKA_UZIVATELE . "` WHERE `email` = :email "); $stmt->execute([':email' => $email]); if ($stmt->fetch()['pocet'] > 0) { $chyba = 'Tento email je již registrován.'; } } if (empty($chyba)) { try { $heslo_hash = password_hash($heslo, PASSWORD_DEFAULT); $stmt = $pdo->prepare(" INSERT INTO `" . DB_TABULKA_UZIVATELE . "` (`email`, `heslo`, `admin`) VALUES (:email, :heslo, 0) "); $stmt->execute([ ':email' => $email, ':heslo' => $heslo_hash, ]); $novy_uzivatel_id = $pdo->lastInsertId(); if (DB_TABULKA_SLUZBA !== '') { $stmt2 = $pdo->prepare(" INSERT INTO `" . DB_TABULKA_SLUZBA . "` (`uzivatel_id`) VALUES (:uzivatel_id) "); $stmt2->execute([':uzivatel_id' => $novy_uzivatel_id]); } $uspech = true; } catch (PDOException $e) { error_log('Chyba při registraci: ' . $e->getMessage()); $chyba = 'Při registraci došlo k chybě. Zkuste to prosím znovu.'; } } } // ------------------------------------------------------------ // HTML VÝSTUP // ------------------------------------------------------------ ?>Registrace proběhla úspěšně!
Můžeš se nyní přihlásit.
Chyba: