Konto erstellen

3–30 Zeichen, Buchstaben, Zahlen, _

Bereits registriert? Jetzt anmelden

if (is_logged_in()) { redirect('/profil'); } $errors = []; $vals = []; if ($_SERVER['REQUEST_METHOD'] === 'POST') { // ── Bot-Erkennung ───────────────────────────────────────── if (honeypot_check('website')) { flash('success', 'Registrierung erfolgreich. Bitte E-Mail bestätigen.'); redirect('/login'); } // ── CSRF ───────────────────────────────────────────────── if (!csrf_verify('register')) { $errors[] = 'Ungültige Anfrage.'; } if (empty($errors)) { // ── Rate Limiting ──────────────────────────────────── $ip_key = 'reg:' . get_client_ip(); if (!rate_limit_ok($ip_key, 5, 3600)) { $errors[] = 'Zu viele Registrierungsversuche. Bitte 1 Stunde warten.'; } } if (empty($errors)) { $username = trim($_POST['username'] ?? ''); $email = trim($_POST['email'] ?? ''); $password = $_POST['password'] ?? ''; $password2 = $_POST['password2'] ?? ''; $vals = compact('username', 'email'); // ── Validierung ────────────────────────────────────── if (!validate_username($username)) { if (is_reserved_username($username)) { $errors[] = 'Dieser Benutzername ist reserviert.'; } else { $errors[] = 'Benutzername: 3–30 Zeichen, nur Buchstaben, Zahlen und _.'; } } if (!validate_email($email)) { $errors[] = 'Ungültige E-Mail-Adresse.'; } // Passwort gegen konfigurierte Richtlinie prüfen $pw_errors = check_password_policy($password); array_push($errors, ...$pw_errors); if ($password !== $password2) { $errors[] = 'Passwörter stimmen nicht überein.'; } // ── Eindeutigkeit prüfen ───────────────────────────── if (empty($errors)) { if (get_user_by_username($username)) { $errors[] = 'Benutzername bereits vergeben.'; } if (get_user_by_email($email)) { $errors[] = 'E-Mail-Adresse bereits registriert.'; } } // ── Benutzer anlegen ───────────────────────────────── if (empty($errors)) { $user_id = create_user([ 'username' => $username, 'email' => $email, 'password' => $password, ]); if ($user_id) { rate_limit_hit($ip_key); // Verifikations-E-Mail senden $token = $GLOBALS['_verify_token']; send_verification_email($email, $username, $token); event_trigger('onRegister', [ 'user_id' => $user_id, 'email' => $email, ]); flash('success', 'Registrierung erfolgreich! Bitte prüfe deine E-Mails und bestätige deine Adresse.'); redirect('/login'); } else { $errors[] = 'Fehler beim Erstellen des Kontos. Bitte erneut versuchen.'; } } } } $page_title = 'Registrieren'; require __DIR__ . '/../themes/default/header.php'; require __DIR__ . '/../themes/default/navbar.php'; ?>

Konto erstellen

3–30 Zeichen, Buchstaben, Zahlen, _
Mind. 8 Zeichen, Groß- & Kleinbuchstaben, Zahl

Bereits registriert? Jetzt anmelden