2025-12-05 12:50:38 +07:00

59 lines
1.9 KiB
PHP

<?php
session_start();
header('Content-Type: application/json'); // Penting: Beri tahu klien bahwa respons adalah JSON
// --- 1. Koneksi Database (Ganti dengan detail Anda) ---
$host = 'localhost';
$db = 'nama_database_anda';
$user = 'user_db';
$pass = 'password_db';
$charset = 'utf8mb4';
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$options = [
PDO::ATTR_ERRMODE => 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()]);
}
?>