false, 'error' => 'Email and password are required.']); exit; } if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { echo json_encode(['success' => false, 'error' => 'Invalid email format.']); exit; } $hashedPassword = password_hash($password, PASSWORD_DEFAULT); try { $stmt = db()->prepare("INSERT INTO users (email, password_hash) VALUES (?, ?)"); if ($stmt->execute([$email, $hashedPassword])) { $_SESSION['user_id'] = db()->lastInsertId(); $_SESSION['email'] = $email; echo json_encode(['success' => true]); } } catch (PDOException $e) { if ($e->getCode() == 23000) { echo json_encode(['success' => false, 'error' => 'Email is already registered.']); } else { echo json_encode(['success' => false, 'error' => 'Database error: ' . $e->getMessage()]); } }