Path: blob/main/static/src/gs/public/pacman/data/db-handler.php
1324 views
<?php header('Content-Type: application/json');12/* IMPORTANT:3* change this to the main url of where you host the application, otherwise, every entry will be marked as a cheater4*/5$hostdomain = 'pacman.platzh1rsch.ch';67if (isset($_POST['action'])) {8switch ($_POST['action']) {9case 'get':10if(isset($_POST['page'])) {11echo getHighscore($_POST['page']);12} else {13echo getHighscore();14}15break;16case 'add':17if(isset($_POST['name']) || isset($_POST['score']) || isset($_POST['level']))18echo addHighscore($_POST['name'],$_POST['score'], $_POST['level']);19break;20case 'reset':21echo resetHighscore();22break;23}24} else if (isset($_GET['action'])) {25if ($_GET['action'] == 'get') {26if(isset($_GET['page'])) {27echo getHighscore($_GET['page']);28} else {29echo getHighscore();30}31}32} else echo "define action to call";333435function getHighscore($page = 1) {3637$db = new SQLite3('pacman.db');38createDataBase($db);39$results = $db->query('SELECT name, score FROM highscore WHERE cheater = 0 AND name != "" ORDER BY score DESC LIMIT 10 OFFSET ' . ($page-1)*10);40while ($row = $results->fetchArray()) {41$tmp["name"] = htmlspecialchars($row['name']);42$tmp["score"] = strval($row['score']);43$response[] = $tmp;44}45if (!isset($response) || is_null($response)) {46return "[]";47} else {48return json_encode($response);49}50}5152function addHighscore($name, $score, $level) {5354$db = new SQLite3('pacman.db');55$date = date('Y-m-d h:i:s', time());56createDataBase($db);57$ref = isset($_SERVER[ 'HTTP_REFERER']) ? $_SERVER[ 'HTTP_REFERER'] : "";58$ua = isset($_SERVER[ 'HTTP_USER_AGENT']) ? $_SERVER[ 'HTTP_USER_AGENT'] : "";59$remA = isset($_SERVER[ 'REMOTE_ADDR']) ? $_SERVER[ 'REMOTE_ADDR'] : "";60$remH = isset($_SERVER[ 'REMOTE_HOST']) ? $_SERVER[ 'REMOTE_HOST'] : "";6162// some simple checks to avoid cheaters63$ref_assert = preg_match('/http(s)?:\/\/.*' . $hostdomain . '/', $ref) > 0;64$ua_assert = ($ua != "");65$cheater = 0;66if (!$ref_assert || !$ua_assert) {67$cheater = 1;68}6970$maxlvlpoints_pills = 104 * 10;71$maxlvlpoints_powerpills = 4 * 50;72$maxlvlpoints_ghosts = 4 * 4 * 100;73// check if score is even possible74if ($level < 1) {75$cheater = 1;76} else if (($score / $level) > (1600 + 1240)) {77$cheater = 1;78}7980$name_clean = htmlspecialchars($name);81$score_clean = htmlspecialchars($score);8283$db->exec('INSERT INTO highscore (name, score, level, date, log_referer, log_user_agent, log_remote_addr, log_remote_host, cheater) '84. 'VALUES ("'85. $name . '", '86. $score . ', '87. $level . ', "'88. $date . '", "'89. $ref .'", "'90. $ua . '", "'91. $remA .'", "'92. $remH . '", "'93. $cheater94.'")'95);9697$response['status'] = "success";98$response['level'] = $level;99$response['name'] = $name;100$response['score'] = $score;101$response['cheater'] = $cheater;102return json_encode($response);103}104105function resetHighscore() {106$db = new SQLite3('pacman.db');107$date = date('Y-m-d h:i:s', time());108$db->exec('DROP TABLE IF EXISTS highscore');109createDataBase($db);110}111112function createDataBase($db) {113$db->exec('CREATE TABLE IF NOT EXISTS highscore(name VARCHAR(60),score INT, level INT, date DATETIME, log_referer VARCHAR(200), log_user_agent VARCHAR(200), log_remote_addr VARCHAR(200), log_remote_host VARCHAR(200), cheater BOOLEAN)');114}115116?>117118119