diff --git a/register.php b/register.php new file mode 100644 index 0000000..74c6fc2 --- /dev/null +++ b/register.php @@ -0,0 +1,123 @@ + $pending['username'], + 'role' => 'user' + ]; + header('Location: index.php'); + exit; + } + + $errors[] = 'Registration failed. The username or email may already be in use.'; + } + } else { + $username = trim((string) ($_POST['username'] ?? '')); + $email = trim((string) ($_POST['email'] ?? '')); + $password = (string) ($_POST['password'] ?? ''); + $confirmPassword = (string) ($_POST['confirm_password'] ?? ''); + + if ($username === '' || $email === '' || $password === '' || $confirmPassword === '') { + $errors[] = 'Please fill in all fields.'; + } elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) { + $errors[] = 'Please enter a valid email address.'; + } elseif ($password !== $confirmPassword) { + $errors[] = 'Passwords do not match.'; + } elseif (findUserByUsername($username) !== null || findUserByEmail($email) !== null) { + $errors[] = 'That username or email is already in use.'; + } else { + $code = generateRegistrationCode(); + if (savePendingRegistration($username, $email, $password, $code)) { + $message = 'A verification code has been sent to ' . htmlspecialchars($email) . '. Please enter it below.'; + $message .= ' (For demo purposes, the code is: ' . htmlspecialchars($code) . ')'; + } else { + $errors[] = 'Unable to start registration.'; + } + } + } + } +} +?> + + + + + + Register - KaI + + + +
+

Create account

+ +
', $errors)); ?>
+ + +
+ + + +
+ + + + +
+ +
+ + + + + + + + + + + + + + +
+ + +
Back to login
+
+ +