81 lines
2.4 KiB
PHP

<?php
session_start();
require_once 'koneksi.php';
header('Content-Type: application/json');
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
http_response_code(405);
echo json_encode(['status' => 'error', 'message' => 'Metode tidak diizinkan.']);
exit;
}
if (!isset($_SESSION['id_user']) && !isset($_SESSION['username'])) {
http_response_code(401);
echo json_encode(['status' => 'error', 'message' => 'Anda harus login untuk menyimpan skor.']);
exit;
}
$input = json_decode(file_get_contents('php://input'), true);
$final_score = (int)($input['score'] ?? 0);
if ($final_score <= 0) {
http_response_code(400);
echo json_encode(['status' => 'error', 'message' => 'Skor tidak valid atau 0.']);
exit;
}
$user_id = null;
if (isset($_SESSION['id_user'])) {
$user_id = $_SESSION['id_user'];
} elseif (isset($_SESSION['username'])) {
$username = $_SESSION['username'];
$getID_sql = "SELECT id_user FROM users WHERE username = '$username'";
$result_id = mysqli_query($koneksi, $getID_sql);
if ($result_id && mysqli_num_rows($result_id) > 0) {
$row = mysqli_fetch_assoc($result_id);
$user_id = $row['id_user'];
}
}
if (!$user_id) {
http_response_code(401);
echo json_encode(['status' => 'error', 'message' => 'ID pengguna tidak ditemukan.']);
exit;
}
$sql = "UPDATE users SET score = ? WHERE id_user = ? AND score < ?";
if ($stmt = mysqli_prepare($koneksi, $sql)) {
mysqli_stmt_bind_param($stmt, "iii", $final_score, $user_id, $final_score);
$exec = mysqli_stmt_execute($stmt);
if ($exec) {
$rows_affected = mysqli_stmt_affected_rows($stmt);
if ($rows_affected > 0) {
$message = 'Skor berhasil diperbarui. Ini adalah Highscore baru!';
} else {
$message = 'Skor berhasil dikirim, tetapi skor tidak lebih tinggi dari Highscore sebelumnya.';
}
echo json_encode([
'status' => 'success',
'message' => $message,
'skor_terkirim' => $final_score
]);
} else {
http_response_code(500);
echo json_encode(['status' => 'error', 'message' => 'Gagal menjalankan kueri update: ' . mysqli_stmt_error($stmt)]);
}
mysqli_stmt_close($stmt);
} else {
http_response_code(500);
echo json_encode(['status' => 'error', 'message' => 'Gagal mempersiapkan statement: ' . mysqli_error($koneksi)]);
}
?>