prepare("SELECT id FROM users WHERE email = ?"); $stmt->execute([$email]); if ($stmt->fetch()) { throw new Exception('Diese E-Mail-Adresse ist bereits registriert.'); } $password_hash = password_hash($password, PASSWORD_ARGON2ID); $stmt = $pdo->prepare("INSERT INTO users (username, email, password_hash) VALUES (?, ?, ?)"); $stmt->execute([$username, $email, $password_hash]); echo json_encode(['success' => true, 'message' => 'Konto erfolgreich erstellt! Du kannst dich jetzt einloggen.']); } elseif ($action === 'login') { // --- Login --- $email = $data['email'] ?? ''; $password = $data['password'] ?? ''; if (!filter_var($email, FILTER_VALIDATE_EMAIL) || empty($password)) { throw new Exception('Bitte gib E-Mail und Passwort ein.'); } $stmt = $pdo->prepare("SELECT id, username, password_hash FROM users WHERE email = ?"); $stmt->execute([$email]); $user = $stmt->fetch(); if ($user && password_verify($password, $user['password_hash'])) { // Passwort ist korrekt, starte die Session session_regenerate_id(true); // Wichtig für die Sicherheit $_SESSION['user_id'] = $user['id']; $_SESSION['username'] = $user['username']; echo json_encode(['success' => true, 'message' => 'Login erfolgreich!']); } else { throw new Exception('E-Mail oder Passwort ist falsch.'); } } elseif ($action === 'logout') { // --- Logout --- session_destroy(); echo json_encode(['success' => true, 'message' => 'Du wurdest ausgeloggt.']); } else { throw new Exception('Ungültige Aktion.'); } } catch (Exception $e) { http_response_code(400); // Bad Request echo json_encode(['success' => false, 'error' => $e->getMessage()]); } ?>