From a3aaaa3dcaffe95423d6b9bfc5eea2576bb4ddb0 Mon Sep 17 00:00:00 2001 From: aldo Date: Tue, 16 Dec 2025 01:20:04 +0700 Subject: [PATCH] perbaikan --- db.php | 16 +++------ leaderboard.php | 42 ++++++++++++---------- login.php | 46 +++++++++++------------- register.php | 33 ++++++++++-------- save_score.php | 19 +++++----- setup.php | 93 +++++++++++++++++++++++-------------------------- 6 files changed, 121 insertions(+), 128 deletions(-) diff --git a/db.php b/db.php index 31ae715..e2f20a2 100644 --- a/db.php +++ b/db.php @@ -1,20 +1,12 @@ PDO::ERRMODE_EXCEPTION, - PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, - PDO::ATTR_EMULATE_PREPARES => false, -]; +$conn = mysqli_connect($host, $user, $pass, $db); -try { - $conn = new PDO($dsn, $user, $pass, $options); -} catch (\PDOException $e) { - throw new \PDOException($e->getMessage(), (int)$e->getCode()); +if (!$conn) { + die("Connection failed: " . mysqli_connect_error()); } ?> \ No newline at end of file diff --git a/leaderboard.php b/leaderboard.php index 600401a..ab8e2e2 100644 --- a/leaderboard.php +++ b/leaderboard.php @@ -2,20 +2,18 @@ require_once 'db.php'; -try { - $checkTable = $conn->query("SHOW TABLES LIKE 'leaderboard_sudoku'"); - if ($checkTable->rowCount() == 0) { - $createSql = " - CREATE TABLE leaderboard_sudoku ( - id INT AUTO_INCREMENT PRIMARY KEY, - username VARCHAR(50), - difficulty VARCHAR(10), - time_seconds INT, - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP - )"; - $conn->exec($createSql); - } -} catch (PDOException $e) { +// Check table existence (using MySQLi) +$checkTable = mysqli_query($conn, "SHOW TABLES LIKE 'leaderboard_sudoku'"); +if (mysqli_num_rows($checkTable) == 0) { + $createSql = " + CREATE TABLE leaderboard_sudoku ( + id INT AUTO_INCREMENT PRIMARY KEY, + username VARCHAR(50), + difficulty VARCHAR(10), + time_seconds INT, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP + )"; + mysqli_query($conn, $createSql); } function getLeaderboard($conn, $difficulty) { @@ -27,13 +25,21 @@ function getLeaderboard($conn, $difficulty) { $sql = " SELECT username, time_seconds, created_at FROM leaderboard_sudoku - WHERE difficulty = :difficulty + WHERE difficulty = ? ORDER BY time_seconds ASC LIMIT 10 "; - $stmt = $conn->prepare($sql); - $stmt->execute(['difficulty' => $difficulty]); - return $stmt->fetchAll(PDO::FETCH_ASSOC); + + $stmt = mysqli_prepare($conn, $sql); + mysqli_stmt_bind_param($stmt, "s", $difficulty); + mysqli_stmt_execute($stmt); + $result = mysqli_stmt_get_result($stmt); + + $rows = []; + while ($row = mysqli_fetch_assoc($result)) { + $rows[] = $row; + } + return $rows; } if (isset($_GET['api']) && isset($_GET['difficulty'])) { diff --git a/login.php b/login.php index dbd63e9..36273d5 100644 --- a/login.php +++ b/login.php @@ -16,36 +16,31 @@ if (isset($_POST['login'])) { if ($username_input === '' || $pass === '') { $err = "Username dan password harus diisi."; } else { - try { - // 1. Ambil data user berdasarkan username - // Menggunakan Prepared Statement - $stmt = $conn->prepare("SELECT id, username, password FROM users WHERE username = ?"); - $stmt->execute([$username_input]); - $user_data = $stmt->fetch(PDO::FETCH_ASSOC); + // 1. Ambil data user berdasarkan username + // Menggunakan Prepared Statement MySQLi + $stmt = mysqli_prepare($conn, "SELECT id, username, password FROM users WHERE username = ?"); + mysqli_stmt_bind_param($stmt, "s", $username_input); + mysqli_stmt_execute($stmt); + $result = mysqli_stmt_get_result($stmt); + $user_data = mysqli_fetch_assoc($result); - // 2. Verifikasi Password - // password_verify akan mencocokkan input user dengan HASH di database - if ($user_data && password_verify($pass, $user_data['password'])) { - - // Regenerasi ID Session - session_regenerate_id(true); + // 2. Verifikasi Password + if ($user_data && password_verify($pass, $user_data['password'])) { + + session_regenerate_id(true); - // Simpan data ke session - $_SESSION['user_id'] = $user_data['id']; - $_SESSION['username'] = $user_data['username']; - $_SESSION['login'] = true; + $_SESSION['user_id'] = $user_data['id']; + $_SESSION['username'] = $user_data['username']; + $_SESSION['login'] = true; - // Arahkan ke halaman game - header("Location: sudoku.php"); - exit(); + header("Location: sudoku.php"); + exit(); - } else { - $err = "Username atau password salah."; - } - - } catch (PDOException $e) { - $err = "Terjadi kesalahan sistem database."; + } else { + $err = "Username atau password salah."; } + + mysqli_stmt_close($stmt); } } ?> @@ -53,7 +48,6 @@ if (isset($_POST['login'])) { Login