diff --git a/Save_Score.php b/Save_Score.php index 581670b..d880aeb 100644 --- a/Save_Score.php +++ b/Save_Score.php @@ -10,23 +10,74 @@ if (!isset($_SESSION['username'])) { } $username = $_SESSION['username']; -$score = $_POST['score'] ?? 0; +$score = intval($_POST['score'] ?? 0); +// Validasi score if ($score <= 0) { echo json_encode(["status" => "error", "message" => "Skor tidak valid"]); exit; } -// Simpan ke database -$stmt = $conn->prepare("INSERT INTO leaderboard (username, score) VALUES (?, ?)"); -$stmt->bind_param("si", $username, $score); - -if ($stmt->execute()) { - echo json_encode(["status" => "success", "message" => "Skor berhasil disimpan"]); -} else { - echo json_encode(["status" => "error", "message" => "Gagal menyimpan skor"]); +// Validasi score maksimal (opsional, sesuaikan dengan game Anda) +if ($score > 999999) { + echo json_encode(["status" => "error", "message" => "Skor terlalu tinggi"]); + exit; } -$stmt->close(); +// 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(); ?> \ No newline at end of file