Files
ave-cms-alt/functions/func.logs.php

115 lines
3.0 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/**
* AVE.cms
*
* @package AVE.cms
* @version 4.x
* @filesource
* @copyright © 2007-2025 AVE.cms, https://www.ave.gitget.ru
*
* @license GPL v.2
*/
/**
* Запись события в лог
*
* @param string $message Текст сообщения
* @param int $typ тип сообщения
* @param int $rub номер рубрики
* @return void
*/
function reportLog(string $message, int $typ = 0, int $rub = 0)
{
$logfile = BASE_DIR . '/tmp/logs/log.csv';
$logData = [
'log_time' => time(),
'log_ip' => $_SERVER['REMOTE_ADDR'],
'log_url' => $_SERVER['REQUEST_URI'],
'log_user_id' => ($_SESSION['user_id'] ?? '0'),
'log_user_name' => ($_SESSION['user_name'] ?? 'Anonymous'),
'log_text' => $message,
'log_type' => (int)$typ,
'log_rubric' => (int)$rub
];
if ($f_log = @fopen($logfile, 'ab'))
{
if (flock($f_log, LOCK_EX))
{
// Исправлено: Явно указаны разделитель (','), ограничитель ('"') и символ экранирования ('\\') для совместимости с PHP 8.1+
fputcsv($f_log, $logData, ',', '"', '\\');
flock($f_log, LOCK_UN);
}
fclose($f_log);
}
}
/**
* Запись события в лог для Sql ошибок
*
* @param string $message Текст сообщения
* @return void
*/
function reportSqlLog($message)
{
$logfile = BASE_DIR . '/tmp/logs/sql.csv';
$logData = [
'log_time' => time(),
'log_ip' => $_SERVER['REMOTE_ADDR'],
'log_url' => $_SERVER['REQUEST_URI'],
'log_user_id' => $_SESSION['user_id'],
'log_user_name' => $_SESSION['user_name'],
'log_text' => base64_encode(serialize($message))
];
if ($f_log = @fopen($logfile, 'ab'))
{
if (flock($f_log, LOCK_EX))
{
// Исправлено: Явно указаны разделитель (','), ограничитель ('"') и символ экранирования ('\\') для совместимости с PHP 8.1+
fputcsv($f_log, $logData, ',', '"', '\\');
flock($f_log, LOCK_UN);
}
fclose($f_log);
}
}
/**
* Запись события в лог для 404 ошибок
*
* @param string $message Текст сообщения
* @return void
*/
function report404()
{
$logfile = BASE_DIR . '/tmp/logs/404.csv';
$logData = [
'log_time' => time(),
'log_ip' => @$_SERVER['REMOTE_ADDR'],
'log_query' => @$_SERVER['REQUEST_URI'],
'log_user_agent' => @$_SERVER['HTTP_USER_AGENT'],
'log_user_referer' => ($_SERVER['HTTP_REFERER'] ?? ''),
'log_request_uri' => @$_SERVER['REQUEST_URI']
];
if ($f_log = @fopen($logfile, 'ab'))
{
if (flock($f_log, LOCK_EX))
{
// Исправлено: Явно указаны разделитель (','), ограничитель ('"') и символ экранирования ('\\') для совместимости с PHP 8.1+
fputcsv($f_log, $logData, ',', '"', '\\');
flock($f_log, LOCK_UN);
}
fclose($f_log);
}
}
?>