Skip to content

Commit c987f35

Browse files
authored
Merge pull request #8751 from jdarwood007/3.0/errorLoggingSSIurls
[3.0] Improve error logging URLs for SSI
2 parents a5ae934 + e598b11 commit c987f35

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

Sources/ErrorHandler.php

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -239,18 +239,20 @@ public static function log(string $error_message, string|bool $error_type = 'gen
239239
$file = str_replace('\\', '/', $file);
240240

241241
// Find the best path and query string we can...
242-
if (str_starts_with(($_SERVER['REQUEST_URL'] ?? ''), Config::$boardurl)) {
243-
$query_string = substr($_SERVER['REQUEST_URL'], \strlen(Config::$boardurl));
242+
if (SMF === 'SSI') {
243+
$request_url = ($_SERVER['REQUEST_SCHEME'] ?? 'http') . '://' . ($_SERVER['SERVER_NAME'] ?? 'unknown') . '/' . ltrim($_SERVER['REQUEST_URI'] ?? (($_SERVER['DOCUMENT_URI'] ?? $_SERVER['SCRIPT_NAME'] ?? 'unknown.php') . !empty($_SERVER['QUERY_STRING']) ? '?' . $_SERVER['QUERY_STRING'] : ''), '/');
244+
} elseif (str_starts_with(($_SERVER['REQUEST_URL'] ?? ''), Config::$boardurl)) {
245+
$request_url = substr($_SERVER['REQUEST_URL'], \strlen(Config::$boardurl));
244246
} else {
245-
$query_string = ($_SERVER['REQUEST_URL'] ?? '');
247+
$request_url = ($_SERVER['REQUEST_URL'] ?? '');
246248
}
247249

248250
// Don't log the session hash in the url twice, it's a waste.
249-
$query_string = Utils::htmlspecialchars(preg_replace(['~([?&;]sesc)=[^&;]+~', '~' . session_name() . '=' . session_id() . '[&;]~'], ['$1', ''], $query_string));
251+
$request_url = Utils::htmlspecialchars(preg_replace(['~([?&;]sesc)=[^&;]+~', '~' . session_name() . '=' . session_id() . '[&;]~'], ['$1', ''], $request_url));
250252

251253
// Just so we know what board error messages are from.
252-
if (isset($_POST['board']) && !isset($_GET['board'])) {
253-
$query_string .= ($query_string == '' ? 'board=' : ';board=') . $_POST['board'];
254+
if (isset($_POST['board']) && !isset($_GET['board']) && SMF !== 'SSI') {
255+
$request_url .= ($request_url == '' ? 'board=' : ';board=') . $_POST['board'];
254256
}
255257

256258
// This prevents us from infinite looping if the hook or call produces an error.
@@ -277,6 +279,7 @@ public static function log(string $error_message, string|bool $error_type = 'gen
277279
User::$me->id ?? User::$my_id ?? 0,
278280
time(),
279281
User::$me->ip ?? IP::getUserIP(),
282+
$request_url,
280283
$query_string,
281284
$error_message,
282285
(string) (User::$sc ?? ''),

0 commit comments

Comments
 (0)