From eb495f2525f88ed413e9bd2ae9ff5ba544ab77e5 Mon Sep 17 00:00:00 2001 From: danpros Date: Sat, 16 Dec 2023 13:12:50 +0700 Subject: [PATCH] Fix too long cache filename $_SERVER['REQUEST_URI'] is always url-encoded so we decoded it back before save it as a cache file. --- system/includes/dispatch.php | 2 +- system/includes/functions.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/system/includes/dispatch.php b/system/includes/dispatch.php index 833a829..e2a474a 100644 --- a/system/includes/dispatch.php +++ b/system/includes/dispatch.php @@ -333,7 +333,7 @@ function render($view, $locals = null, $layout = null) { $login = login(); if (!$login) { - $c = str_replace('/', '#', str_replace('?', '~', $_SERVER['REQUEST_URI'])); + $c = str_replace('/', '#', str_replace('?', '~', rawurldecode($_SERVER['REQUEST_URI']))); $dir = 'cache/page'; $cachefile = $dir . '/' . $c . '.cache'; if (is_dir($dir) === false) { diff --git a/system/includes/functions.php b/system/includes/functions.php index 3c434a1..e7d24bb 100644 --- a/system/includes/functions.php +++ b/system/includes/functions.php @@ -3040,7 +3040,7 @@ function file_cache($request) $now = time(); - $c = str_replace('/', '#', str_replace('?', '~', $request)); + $c = str_replace('/', '#', str_replace('?', '~', rawurldecode($request))); $cachefile = 'cache/page/' . $c . '.cache'; if (file_exists($cachefile)) { if ($now - filemtime($cachefile) >= 60 * 60 * $hour) {