83 lines
2.5 KiB
PHP
83 lines
2.5 KiB
PHP
<?php
|
|
session_start();
|
|
header('Content-Type: application/json');
|
|
include 'Connection.php';
|
|
|
|
// Pastikan user sudah login
|
|
if (!isset($_SESSION['username'])) {
|
|
echo json_encode(["status" => "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();
|
|
?>
|