Quellcode durchsuchen

log login & ip from $_POST|$_GET or server headers if SESSION is empty

root vor 2 Monaten
Ursprung
Commit
4cc5623b5d
1 geänderte Dateien mit 19 neuen und 3 gelöschten Zeilen
  1. 19 3
      html/inc/common.php

+ 19 - 3
html/inc/common.php

@@ -3592,9 +3592,25 @@ function write_log($db, $msg, $level = L_INFO, $auth_id = 0)
 {
     if (!isset($msg)) { return; }
 
-    // Безопасное получение данных сессии
-    $currentIp = filter_var($_SESSION['ip'] ?? '127.0.0.1', FILTER_VALIDATE_IP) ?: '127.0.0.1';
-    $currentLogin = htmlspecialchars($_SESSION['login'] ?? 'http', ENT_QUOTES, 'UTF-8');
+    // Получаем текущий IP
+    $currentIp = null;
+    if (!empty($_SESSION['ip'])) {
+        $currentIp = filter_var($_SESSION['ip'], FILTER_VALIDATE_IP);
+    }
+    if (!$currentIp && function_exists('get_client_ip')) {
+        $currentIp = filter_var(get_client_ip(), FILTER_VALIDATE_IP);
+    }
+    $currentIp = $currentIp ?: '127.0.0.1';
+
+    // Получаем текущий логин
+    $currentLogin = null;
+    if (!empty($_SESSION['login'])) {
+        $currentLogin = $_SESSION['login'];
+    }
+    if (!$currentLogin) {
+        $currentLogin = getParam('login', null, null) ?: getParam('api_login', null, null);
+    }
+    $currentLogin = htmlspecialchars($currentLogin ?: 'http', ENT_QUOTES, 'UTF-8');
 
     // Для уровня L_DEBUG пишем в error_log
     if ($level === L_DEBUG) {