From 4ac392a9ab2fc80e691f3468116151cf9e3b5f50 Mon Sep 17 00:00:00 2001 From: Alex Cube Date: Mon, 10 Aug 2026 15:29:14 +0300 Subject: [PATCH] Add favicon; fix two server bugs found deploying to socoban.08h.ru MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Favicon: 🚀 emoji via inline SVG data URI, both sokoban.html and php/index.php - api.php: mb_substr() -> substr() (mbstring not enabled on the server) - api.php: MariaDB rejects LIMIT directly inside NOT IN(...) (error 1235) — wrap the top-5 subquery in an extra derived-table SELECT Verified live against the deployed MySQL/MariaDB DB: whoami, set_name, submit (insert + dedup + trim-to-5), top all round-trip correctly. --- php/api.php | 10 +++++++--- php/index.php | 1 + sokoban.html | 1 + 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/php/api.php b/php/api.php index cc57e74..377b534 100644 --- a/php/api.php +++ b/php/api.php @@ -45,7 +45,7 @@ switch ($action) { case 'set_name': { $body = read_json_body(); - $name = trim(mb_substr((string)($body['name'] ?? ''), 0, 40)); + $name = trim(substr((string)($body['name'] ?? ''), 0, 40)); if ($name === '') { http_response_code(400); echo json_encode(['error' => 'empty name']); break; } $u = current_user($pdo); if ($u) { @@ -102,10 +102,14 @@ switch ($action) { // UNIQUE(level_name, move_key) — та же последовательность уже есть, не ошибка } - // держим только топ-5 по числу ходов на уровень + // держим только топ-5 по числу ходов на уровень. MariaDB не даёт + // LIMIT прямо внутри NOT IN(...) (ошибка 1235) — оборачиваем + // подзапрос ещё одним SELECT (derived table), это разрешено. $pdo->prepare(' DELETE FROM solutions WHERE level_name = ? AND id NOT IN ( - SELECT id FROM solutions WHERE level_name = ? ORDER BY move_count ASC LIMIT 5 + SELECT id FROM ( + SELECT id FROM solutions WHERE level_name = ? ORDER BY move_count ASC LIMIT 5 + ) AS keep_ids ) ')->execute([$level, $level]); diff --git a/php/index.php b/php/index.php index df8d5ca..ed46e73 100644 --- a/php/index.php +++ b/php/index.php @@ -4,6 +4,7 @@ Sokoban — 60 Levels +