"error", "message" => "Belum login"]); exit; } $username = $_SESSION['username']; $score = intval($_POST['score'] ?? 0); // Validasi score if ($score <= 0) { echo json_encode(["status" => "error", "message" => "Skor tidak valid"]); exit; } // Validasi score maksimal (opsional, sesuaikan dengan game Anda) if ($score > 999999) { echo json_encode(["status" => "error", "message" => "Skor terlalu tinggi"]); exit; } // Cek apakah user sudah punya record $checkStmt = $conn->prepare("SELECT score FROM leaderboard WHERE username = ?"); $checkStmt->bind_param("s", $username); $checkStmt->execute(); $result = $checkStmt->get_result(); if ($result->num_rows > 0) { // User sudah ada, cek apakah score baru lebih tinggi $row = $result->fetch_assoc(); $oldScore = $row['score']; if ($score > $oldScore) { // Update dengan score yang lebih tinggi $updateStmt = $conn->prepare("UPDATE leaderboard SET score = ? WHERE username = ?"); $updateStmt->bind_param("is", $score, $username); if ($updateStmt->execute()) { echo json_encode([ "status" => "success", "message" => "Skor berhasil diperbarui!", "newHighScore" => true, "score" => $score ]); } else { echo json_encode(["status" => "error", "message" => "Gagal memperbarui skor"]); } $updateStmt->close(); } else { // Score baru lebih rendah, tidak perlu update echo json_encode([ "status" => "success", "message" => "Skor tidak diperbarui (skor lama lebih tinggi)", "newHighScore" => false, "currentHighScore" => $oldScore ]); } } else { // User belum ada, insert baru $insertStmt = $conn->prepare("INSERT INTO leaderboard (username, score) VALUES (?, ?)"); $insertStmt->bind_param("si", $username, $score); if ($insertStmt->execute()) { echo json_encode([ "status" => "success", "message" => "Skor berhasil disimpan!", "newHighScore" => true, "score" => $score ]); } else { echo json_encode(["status" => "error", "message" => "Gagal menyimpan skor"]); } $insertStmt->close(); } $checkStmt->close(); $conn->close(); ?>