'danger', 'message' => 'Please fill out all fields.']; } else { try { $pdo = db(); $stmt = $pdo->prepare('SELECT id FROM users WHERE username = ?'); $stmt->execute([$username]); if ($stmt->fetch()) { $_SESSION['flash_message'] = ['type' => 'danger', 'message' => 'Username already exists.']; } else { $hashed_password = password_hash($password, PASSWORD_DEFAULT); $stmt = $pdo->prepare('INSERT INTO users (username, password, phone_number, role) VALUES (?, ?, ?, ?)'); $stmt->execute([$username, $hashed_password, $phone_number, 'customer']); $user_id = $pdo->lastInsertId(); $verification_code = str_pad(rand(0, 999999), 6, '0', STR_PAD_LEFT); $stmt = $pdo->prepare('UPDATE users SET two_factor_secret = ? WHERE id = ?'); $stmt->execute([$verification_code, $user_id]); require_once 'mail/SmsService.php'; SmsService::sendSms($phone_number, "Your verification code is: {$verification_code}"); $_SESSION['user_id_to_verify'] = $user_id; header('Location: verify_phone.php'); exit; } } catch (PDOException $e) { error_log('Registration Error: ' . $e->getMessage()); $_SESSION['flash_message'] = ['type' => 'danger', 'message' => 'A database error occurred. Please try again.']; } } header('Location: register.php'); exit; } ?>