index.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. <?php
  2. require_once ($_SERVER['DOCUMENT_ROOT']."/inc/auth.php");
  3. require_once ($_SERVER['DOCUMENT_ROOT']."/inc/languages/" . HTML_LANG . ".php");
  4. require_once ($_SERVER['DOCUMENT_ROOT']."/inc/header.php");
  5. require_once ($_SERVER['DOCUMENT_ROOT']."/inc/datetimefilter.php");
  6. require_once ($_SERVER['DOCUMENT_ROOT']."/inc/loglevelfilter.php");
  7. require_once ($_SERVER['DOCUMENT_ROOT']."/inc/logfilter.php");
  8. $fuser_ip = getParam('user_ip', $page_url, '');
  9. $_SESSION[$page_url]['user_ip'] = $fuser_ip;
  10. print_log_submenu($page_url);
  11. ?>
  12. <div id="cont">
  13. <br>
  14. <form action="<?=$_SERVER['PHP_SELF']?>" method="post">
  15. <?php print_date_fields($date1,$date2,$date_shift); ?>
  16. <?php echo WEB_log_level_display; ?>:<?php print_loglevel_select('display_log_level',$display_log_level); ?>
  17. <?php print WEB_rows_at_page."&nbsp"; print_row_at_pages('rows',$displayed); ?>
  18. <input type="submit" value="<?php echo WEB_btn_show; ?>"><br><br>
  19. <?php echo WEB_log_filter_source; ?>:&nbsp<input name="customer" value="<?php echo $fcustomer; ?>" /> &nbsp
  20. <?php echo WEB_log_event; ?>:&nbsp<input name="message" value="<?php echo $fmessage; ?>" /> &nbsp
  21. <?php echo WEB_msg_IP; ?>:&nbsp<input name="user_ip" value="<?php echo $fuser_ip; ?>" /><br>
  22. </form>
  23. <?php
  24. // === 1. Формируем базовые параметры и условия ===
  25. $params = [$date1, $date2];
  26. $conditions = [];
  27. // Уровень логирования
  28. if ($display_log_level == L_ERROR) {
  29. $conditions[] = "level = ?";
  30. $params[] = L_ERROR;
  31. } elseif ($display_log_level == L_WARNING) {
  32. $conditions[] = "level <= ?";
  33. $params[] = L_WARNING;
  34. } elseif ($display_log_level == L_INFO) {
  35. $conditions[] = "level <= ?";
  36. $params[] = L_INFO;
  37. } elseif ($display_log_level == L_VERBOSE) {
  38. $conditions[] = "level <= ?";
  39. $params[] = L_VERBOSE;
  40. }
  41. // L_DEBUG: не добавляем условие (показываем всё)
  42. // Остальные фильтры — ВСЕ через параметры!
  43. if (!empty($fcustomer)) {
  44. $conditions[] = "customer LIKE ?";
  45. $params[] = '%' . $fcustomer . '%';
  46. }
  47. if (!empty($fmessage)) {
  48. $conditions[] = "message LIKE ?";
  49. $params[] = '%' . $fmessage . '%';
  50. }
  51. if (!empty($fuser_ip)) {
  52. $conditions[] = "ip LIKE ?";
  53. $params[] = '%' . $fuser_ip . '%';
  54. }
  55. // Собираем WHERE-часть
  56. $whereClause = !empty($conditions) ? ' AND ' . implode(' AND ', $conditions) : '';
  57. // === 2. Подсчёт общего количества записей ===
  58. $countSQL = "SELECT COUNT(*) FROM worklog WHERE ts >= ? AND ts < ?" . $whereClause;
  59. $count_records = (int)get_single_field($db_link, $countSQL, $params);
  60. // === 3. Пагинация ===
  61. $total = ceil($count_records / $displayed);
  62. $page = max(1, min($page, $total)); // корректное ограничение страницы
  63. $start = ($page - 1) * $displayed; // исправлено: OFFSET должен быть (page-1)*limit
  64. print_navigation($page_url, $page, $displayed, $count_records, $total);
  65. // === 4. Запрос данных с пагинацией ===
  66. // Добавляем LIMIT и OFFSET как параметры (приводим к int!)
  67. $limit = (int)$displayed;
  68. $offset = (int)$start;
  69. $dataParams = array_merge($params, [$limit, $offset]);
  70. $sSQL = "
  71. SELECT * FROM worklog
  72. WHERE ts >= ? AND ts < ?" . $whereClause . "
  73. ORDER BY ts DESC
  74. LIMIT ? OFFSET ?
  75. ";
  76. $userlog = get_records_sql($db_link, $sSQL, $dataParams);
  77. ?>
  78. <br>
  79. <table class="data">
  80. <tr align="center">
  81. <td class="data" width=150><b><?php echo WEB_log_time; ?></b></td>
  82. <td class="data"><b><?php echo WEB_log_filter_source; ?></b></td>
  83. <td class="data"><b><?php echo WEB_msg_IP; ?></b></td>
  84. <td class="data"><b><?php echo WEB_log_level; ?></b></td>
  85. <td class="data"><b><?php echo WEB_log_event; ?></b></td>
  86. </tr>
  87. <?php
  88. foreach ($userlog as $row) {
  89. print "<tr align=center class=\"tr1\" onmouseover=\"className='tr2'\" onmouseout=\"className='tr1'\">\n";
  90. print "<td class=\"data\">" . get_datetime_display($row['ts']) . "</td>\n";
  91. print "<td class=\"data\">" . $row['customer'] . "</td>\n";
  92. $msg_level = 'INFO';
  93. if ($row['level'] == L_ERROR) { $msg_level='ERROR'; }
  94. if ($row['level'] == L_WARNING) { $msg_level='WARNING'; }
  95. if ($row['level'] == L_DEBUG) { $msg_level='DEBUG'; }
  96. if ($row['level'] == L_VERBOSE) { $msg_level='VERBOSE'; }
  97. print "<td class=\"data\">" . $row['ip'] . "</td>\n";
  98. print "<td class=\"data\">" . $msg_level . "</td>\n";
  99. $print_msg = expand_log_str($db_link, $row['message']);
  100. print "<td class=\"data\" align=left>" . $print_msg . "</td>\n";
  101. print "</tr>\n";
  102. }
  103. print "</table>\n";
  104. print_navigation($page_url,$page,$displayed,$count_records,$total);
  105. require_once ($_SERVER['DOCUMENT_ROOT']."/inc/footer.php");
  106. ?>