From f8900b1fdcd0bc10bc1f4266f1e12842269eee46 Mon Sep 17 00:00:00 2001 From: Emil Zhai Date: Mon, 5 Dec 2022 08:14:19 +0000 Subject: [PATCH] feat: auto escape sql like when switch fuzzy mode --- Access_Logs.php | 4 ++-- page/routes/logs/index.js | 28 +++++++++++++++++++++++++++- page/routes/logs/index.php | 2 +- 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/Access_Logs.php b/Access_Logs.php index 91ef6c9..5a1c5a0 100644 --- a/Access_Logs.php +++ b/Access_Logs.php @@ -48,13 +48,13 @@ class Access_Logs { if ($ua !== $empty) { $query->where('ua' . $compare, $ua); } - if ($cid !== $empty) { + if ($cid !== '') { $query->where('content_id' . $compare, $cid); } if ($path !== $empty) { $query->where('path' . $compare, $path); } - if ($robot !== $empty) { + if ($robot !== '') { $query->where('robot = ?', $robot); } } diff --git a/page/routes/logs/index.js b/page/routes/logs/index.js index 8612036..d7f378b 100644 --- a/page/routes/logs/index.js +++ b/page/routes/logs/index.js @@ -195,7 +195,7 @@ $(document).ready(function () { }, error: function (xhr, status, error) { if (!silent) { - $('body').loadingModal('hide'); + $('.typecho-list').loadingModal('hide'); } swal({ icon: "error", @@ -228,6 +228,7 @@ $(document).ready(function () { } $('button[data-action="filter-apply"]').click(function() { + setPageNum(1); fetchLogs(); hideFilters(); }); @@ -243,6 +244,31 @@ $(document).ready(function () { toggleFilters(); }); + $('[name="filter-fuzzy"]').change(function(e) { + var filters = getFilters(); + var inputKeys = ['ua', 'ip', 'path']; + if (e.target.value === '1') { + $(inputKeys).each(function(_, k) { + if (filters[k] === '') { + filters[k] = '%'; + } else { + // MySQL escape: https://dev.mysql.com/doc/refman/8.0/en/string-comparison-functions.html + filters[k] = filters[k].replace(/[%_]/gu, function(s) { return '\\' + s; }); + } + }); + } else { + $(inputKeys).each(function(_, k) { + if (filters[k] === '%') { + filters[k] = ''; + } else { + // MySQL escape: https://dev.mysql.com/doc/refman/8.0/en/string-comparison-functions.html + filters[k] = filters[k].replace(/\\[%_]/gu, function(s) { return s.substring(1); }); + } + }); + } + setFilters(filters); + }); + $('input[name="page-jump"]').on('keypress', function(e) { if (e.which == 13) { setPageNum(e.target.value); diff --git a/page/routes/logs/index.php b/page/routes/logs/index.php index d95a512..d035726 100644 --- a/page/routes/logs/index.php +++ b/page/routes/logs/index.php @@ -50,7 +50,7 @@