'', 'displayName' => '' ]; if ($_SERVER['REQUEST_METHOD'] === 'POST') { $email = trim((string)(isset($_POST['email']) ? $_POST['email'] : '')); $displayName = trim((string)(isset($_POST['displayName']) ? $_POST['displayName'] : '')); $pw = (string)(isset($_POST['pw']) ? $_POST['pw'] : ''); $pw2 = (string)(isset($_POST['pw2']) ? $_POST['pw2'] : ''); $values['email'] = $email; $values['displayName'] = $displayName; // Validierung if ($email === '' || !filter_var($email, FILTER_VALIDATE_EMAIL)) { $errors[] = 'Bitte eine gültige E-Mail-Adresse eingeben.'; } if ($displayName === '' || mb_strlen($displayName) < 3 || mb_strlen($displayName) > 50) { $errors[] = 'Bitte einen Benutzernamen mit 3–50 Zeichen eingeben.'; } if ($pw === '' || mb_strlen($pw) < 8) { $errors[] = 'Bitte ein Passwort mit mindestens 8 Zeichen wählen.'; } if ($pw !== $pw2) { $errors[] = 'Die Passwörter stimmen nicht überein.'; } // Duplicate-Checks if (!$errors) { $stmt = mysqli_prepare($conn, 'SELECT userID FROM users WHERE email = ? LIMIT 1'); if (!$stmt) { $errors[] = 'Datenbankfehler.'; } else { mysqli_stmt_bind_param($stmt, 's', $email); mysqli_stmt_execute($stmt); $result = mysqli_stmt_get_result($stmt); if ($result && mysqli_fetch_assoc($result)) { $errors[] = 'Diese E-Mail ist bereits registriert.'; } mysqli_stmt_close($stmt); } } if (!$errors) { $stmt = mysqli_prepare($conn, 'SELECT userID FROM users WHERE displayName = ? LIMIT 1'); if (!$stmt) { $errors[] = 'Datenbankfehler.'; } else { mysqli_stmt_bind_param($stmt, 's', $displayName); mysqli_stmt_execute($stmt); $result = mysqli_stmt_get_result($stmt); if ($result && mysqli_fetch_assoc($result)) { $errors[] = 'Dieser Benutzername ist bereits vergeben.'; } mysqli_stmt_close($stmt); } } // Insert if (!$errors) { $hash = password_hash($pw, PASSWORD_DEFAULT); $stmt = mysqli_prepare( $conn, 'INSERT INTO users (email, passwordHash, displayName, isActive, createdAt) VALUES (?, ?, ?, 1, NOW())' ); if (!$stmt) { $errors[] = 'Datenbankfehler.'; } else { mysqli_stmt_bind_param($stmt, 'sss', $email, $hash, $displayName); $ok = mysqli_stmt_execute($stmt); mysqli_stmt_close($stmt); if ($ok) { mysqli_close($conn); header('Location: login.php?registered=1'); exit; } $errors[] = 'Registrierung fehlgeschlagen.'; } } } include 'header.php'; ?> Registrierung E-Mail Username Passwort Passwort wiederholen Schon registriert? Einloggen
Schon registriert? Einloggen