PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false, ]; try { $pdo = new PDO($dsn, $user, $pass, $options); } catch (\PDOException $e) { http_response_code(500); // Internal Server Error echo json_encode(['status' => 'error', 'message' => 'Gagal koneksi database.']); exit; } // --- 2. Ambil Data dari JavaScript (AJAX) --- $data = json_decode(file_get_contents('php://input'), true); if (!isset($data['action']) || $data['action'] !== 'simpan_score') { http_response_code(400); // Bad Request echo json_encode(['status' => 'error', 'message' => 'Aksi tidak valid.']); exit; } $score = filter_var($data['score'] ?? 0, FILTER_SANITIZE_NUMBER_INT); $userId = 1; // Contoh: Asumsikan ID pengguna 1 (Anda harus mengambilnya dari sesi atau input) if (!is_numeric($score) || $score < 0) { http_response_code(400); echo json_encode(['status' => 'error', 'message' => 'Score tidak valid.']); exit; } // --- 3. Simpan ke Database (menggunakan Prepared Statements) --- try { $sql = "INSERT INTO scores (user_id, score, created_at) VALUES (?, ?, NOW())"; $stmt = $pdo->prepare($sql); $stmt->execute([$userId, $score]); // Berikan respons sukses ke JavaScript echo json_encode(['status' => 'success', 'message' => 'Score berhasil disimpan.']); } catch (\PDOException $e) { http_response_code(500); echo json_encode(['status' => 'error', 'message' => 'Gagal menyimpan score ke DB: ' . $e->getMessage()]); } ?>