mirror of
				https://github.com/avecms/AVE.cms.git
				synced 2025-11-04 06:56:38 +00:00 
			
		
		
		
	Logs
This commit is contained in:
		@@ -53,33 +53,33 @@
 | 
			
		||||
	{
 | 
			
		||||
		global $AVE_Template;
 | 
			
		||||
 | 
			
		||||
		$logs = array();
 | 
			
		||||
		$logdata = array();
 | 
			
		||||
		$log404 = array();
 | 
			
		||||
		$logsql = array();
 | 
			
		||||
		$logs = [
 | 
			
		||||
			'logs' => 0,
 | 
			
		||||
			'404' => 0,
 | 
			
		||||
			'sql' => 0
 | 
			
		||||
		];
 | 
			
		||||
 | 
			
		||||
		$_404dir = BASE_DIR . '/tmp/logs/404.php';
 | 
			
		||||
		$_logdir = BASE_DIR . '/tmp/logs/log.php';
 | 
			
		||||
		$_sqldir = BASE_DIR . '/tmp/logs/sql.php';
 | 
			
		||||
		$_logdir = BASE_DIR . '/tmp/logs/log.csv';
 | 
			
		||||
		$_404dir = BASE_DIR . '/tmp/logs/404.csv';
 | 
			
		||||
		$_sqldir = BASE_DIR . '/tmp/logs/sql.csv';
 | 
			
		||||
 | 
			
		||||
		if (file_exists($_logdir))
 | 
			
		||||
			@eval(' ?>' . file_get_contents($_logdir) . '<?'.'php ');
 | 
			
		||||
		if (file_exists($_logdir)) {
 | 
			
		||||
			$fp = file($_logdir);
 | 
			
		||||
			$logs['logs'] = count($fp);
 | 
			
		||||
			fclose($fp);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		$logs['logs'] = count($logdata);
 | 
			
		||||
		if (file_exists($_404dir)) {
 | 
			
		||||
			$fp = file($_404dir);
 | 
			
		||||
			$logs['404'] = count($fp);
 | 
			
		||||
			fclose($fp);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (file_exists($_404dir))
 | 
			
		||||
			@eval(' ?>' . file_get_contents($_404dir) . '<?'.'php ');
 | 
			
		||||
 | 
			
		||||
		$logs['404'] = count($log404);
 | 
			
		||||
 | 
			
		||||
		if (file_exists($_sqldir))
 | 
			
		||||
			@eval(' ?>' . file_get_contents($_sqldir) . '<?'.'php ');
 | 
			
		||||
 | 
			
		||||
		$logs['sql'] = count($logsql);
 | 
			
		||||
 | 
			
		||||
		unset($logdata);
 | 
			
		||||
		unset($log404);
 | 
			
		||||
		unset($logsql);
 | 
			
		||||
		if (file_exists($_sqldir)) {
 | 
			
		||||
			$fp = file($_sqldir);
 | 
			
		||||
			$logs['sql'] = count($fp);
 | 
			
		||||
			fclose($fp);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// Передаем данные в шаблон для вывода
 | 
			
		||||
		$AVE_Template->assign('logs', $logs);
 | 
			
		||||
 
 | 
			
		||||
@@ -24,9 +24,9 @@
 | 
			
		||||
		 *
 | 
			
		||||
		 * @public
 | 
			
		||||
		 */
 | 
			
		||||
		public $_404dir = '/tmp/logs/404.php';
 | 
			
		||||
		public $_logdir = '/tmp/logs/log.php';
 | 
			
		||||
		public $_sqldir = '/tmp/logs/sql.php';
 | 
			
		||||
		public $_404dir = '/tmp/logs/404.csv';
 | 
			
		||||
		public $_logdir = '/tmp/logs/log.csv';
 | 
			
		||||
		public $_sqldir = '/tmp/logs/sql.csv';
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 *	Внутренние методы класса
 | 
			
		||||
@@ -41,21 +41,48 @@
 | 
			
		||||
		 * Метод, предназначенный для отображения всех записей Журнала событий
 | 
			
		||||
		 *
 | 
			
		||||
		 */
 | 
			
		||||
		function logList()
 | 
			
		||||
		function logList ()
 | 
			
		||||
		{
 | 
			
		||||
			global $AVE_Template;
 | 
			
		||||
 | 
			
		||||
			$logdata = array();
 | 
			
		||||
			$file_name = BASE_DIR . $this->_logdir;
 | 
			
		||||
			$_lines = [];
 | 
			
		||||
 | 
			
		||||
			$logfile = BASE_DIR.$this->_logdir;
 | 
			
		||||
			if (file_exists($file_name) && $fp = @fopen($file_name, 'rb'))
 | 
			
		||||
			{
 | 
			
		||||
				$_count = 10000;
 | 
			
		||||
 | 
			
		||||
			if(file_exists($logfile))
 | 
			
		||||
				@eval(' ?>'.file_get_contents($logfile).'<?php ');
 | 
			
		||||
				$_size = @filesize($file_name);
 | 
			
		||||
 | 
			
		||||
			arsort($logdata);
 | 
			
		||||
				$_slice = 10240;
 | 
			
		||||
 | 
			
		||||
				$_size > $_slice && fseek($fp, $_size - $_slice);
 | 
			
		||||
 | 
			
		||||
				while (!feof($fp))
 | 
			
		||||
				{
 | 
			
		||||
					$event = fgetcsv($fp, $_slice);
 | 
			
		||||
 | 
			
		||||
					if (empty($event[0]) || count($event) < 3) {
 | 
			
		||||
						continue;
 | 
			
		||||
					}
 | 
			
		||||
 | 
			
		||||
					$_lines[] = [
 | 
			
		||||
						'log_time'		=> $event['0'],
 | 
			
		||||
						'log_ip'		=> $event['1'],
 | 
			
		||||
						'log_url'		=> $event['2'],
 | 
			
		||||
						'log_user_id'	=> $event['3'],
 | 
			
		||||
						'log_user_name'	=> $event['4'],
 | 
			
		||||
						'log_text'		=> $event['5'],
 | 
			
		||||
						'log_type'		=> $event['6'],
 | 
			
		||||
						'log_rubric'	=> $event['7']
 | 
			
		||||
					];
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				count($_lines) > $_count && $_lines = array_slice($_lines, -$_count);
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// Передаем данные в шаблон для вывода и отображаем страницу
 | 
			
		||||
			$AVE_Template->assign('logs', $logdata);
 | 
			
		||||
			$AVE_Template->assign('logs', $_lines);
 | 
			
		||||
			$AVE_Template->assign('content', $AVE_Template->fetch('logs/logs.tpl'));
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
@@ -67,17 +94,42 @@
 | 
			
		||||
		{
 | 
			
		||||
			global $AVE_Template;
 | 
			
		||||
 | 
			
		||||
			$log404 = array();
 | 
			
		||||
			$file_name = BASE_DIR . $this->_404dir;
 | 
			
		||||
			$_lines = [];
 | 
			
		||||
 | 
			
		||||
			$logfile = BASE_DIR . $this->_404dir;
 | 
			
		||||
			if (file_exists($file_name) && $fp = @fopen($file_name, 'rb'))
 | 
			
		||||
			{
 | 
			
		||||
				$_count = 10000;
 | 
			
		||||
 | 
			
		||||
			if(file_exists($logfile))
 | 
			
		||||
				include($logfile);
 | 
			
		||||
				$_size = @filesize($file_name);
 | 
			
		||||
 | 
			
		||||
			arsort($log404);
 | 
			
		||||
				$_slice = 10240;
 | 
			
		||||
 | 
			
		||||
				$_size > $_slice && fseek($fp, $_size - $_slice);
 | 
			
		||||
 | 
			
		||||
				while (!feof($fp))
 | 
			
		||||
				{
 | 
			
		||||
					$event = fgetcsv($fp, $_slice);
 | 
			
		||||
 | 
			
		||||
					if (empty($event[0]) || count($event) < 3) {
 | 
			
		||||
						continue;
 | 
			
		||||
					}
 | 
			
		||||
 | 
			
		||||
					$_lines[] = [
 | 
			
		||||
						'log_time'		    => $event['0'],
 | 
			
		||||
						'log_ip'		    => $event['1'],
 | 
			
		||||
						'log_query'		    => $event['2'],
 | 
			
		||||
						'log_user_agent'	    => $event['3'],
 | 
			
		||||
						'log_user_referer'	    => $event['4'],
 | 
			
		||||
						'log_request_uri'		=> $event['5']
 | 
			
		||||
					];
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				count($_lines) > $_count && $_lines = array_slice($_lines, -$_count);
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// Передаем данные в шаблон для вывода и отображаем страницу
 | 
			
		||||
			$AVE_Template->assign('logs', $log404);
 | 
			
		||||
			$AVE_Template->assign('logs', $_lines);
 | 
			
		||||
			$AVE_Template->assign('content', $AVE_Template->fetch('logs/404.tpl'));
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
@@ -89,17 +141,42 @@
 | 
			
		||||
		{
 | 
			
		||||
			global $AVE_Template;
 | 
			
		||||
 | 
			
		||||
			$logsql = array();
 | 
			
		||||
			$file_name = BASE_DIR . $this->_sqldir;
 | 
			
		||||
			$_lines = [];
 | 
			
		||||
 | 
			
		||||
			$logfile = BASE_DIR . $this->_sqldir;
 | 
			
		||||
			if (file_exists($file_name) && $fp = @fopen($file_name, 'rb'))
 | 
			
		||||
			{
 | 
			
		||||
				$_count = 10000;
 | 
			
		||||
 | 
			
		||||
			if(file_exists($logfile))
 | 
			
		||||
				include($logfile);
 | 
			
		||||
				$_size = @filesize($file_name);
 | 
			
		||||
 | 
			
		||||
			arsort($logsql);
 | 
			
		||||
				$_slice = 10240;
 | 
			
		||||
 | 
			
		||||
				$_size > $_slice && fseek($fp, $_size - $_slice);
 | 
			
		||||
 | 
			
		||||
				while (!feof($fp))
 | 
			
		||||
				{
 | 
			
		||||
					$event = fgetcsv($fp, $_slice);
 | 
			
		||||
 | 
			
		||||
					if (empty($event[0]) || count($event) < 3) {
 | 
			
		||||
						continue;
 | 
			
		||||
					}
 | 
			
		||||
 | 
			
		||||
					$_lines[] = [
 | 
			
		||||
						'log_time'		=> $event['0'],
 | 
			
		||||
						'log_ip'		=> $event['1'],
 | 
			
		||||
						'log_url'		=> $event['2'],
 | 
			
		||||
						'log_user_id'	=> $event['3'],
 | 
			
		||||
						'log_user_name'	=> $event['4'],
 | 
			
		||||
						'log_text'		=> unserialize(base64_decode($event['5']))
 | 
			
		||||
					];
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				count($_lines) > $_count && $_lines = array_slice($_lines, -$_count);
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// Передаем данные в шаблон для вывода и отображаем страницу
 | 
			
		||||
			$AVE_Template->assign('logs', $logsql);
 | 
			
		||||
			$AVE_Template->assign('logs', $_lines);
 | 
			
		||||
			$AVE_Template->assign('content', $AVE_Template->fetch('logs/sql.tpl'));
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
@@ -171,48 +248,20 @@
 | 
			
		||||
		{
 | 
			
		||||
			global $AVE_Template;
 | 
			
		||||
 | 
			
		||||
			// Определяем тип файла (CSV), формат имени файла, разделители и т.д.
 | 
			
		||||
			$datstring = '';
 | 
			
		||||
			$dattype = 'text/csv';
 | 
			
		||||
			$datname = 'system_log_' . date('dmyhis', time()) . '.csv';
 | 
			
		||||
 | 
			
		||||
			$separator = ';';
 | 
			
		||||
			$enclosed = '"';
 | 
			
		||||
 | 
			
		||||
			// Выполняем запрос к БД на получение списка всех системных сообщений
 | 
			
		||||
			$logdata=array();
 | 
			
		||||
			$logfile = BASE_DIR.$this->_logdir;
 | 
			
		||||
			if(file_exists($logfile))
 | 
			
		||||
				@eval(' ?>'.file_get_contents($logfile).'<?php ');
 | 
			
		||||
			arsort($logdata);
 | 
			
		||||
			$fieldcount = count($logdata[0]);
 | 
			
		||||
 | 
			
		||||
			foreach($logdata[0] as $k=>$v)
 | 
			
		||||
				$datstring .= $enclosed . $k . $enclosed . $separator;
 | 
			
		||||
			$datstring .= PHP_EOL;
 | 
			
		||||
 | 
			
		||||
			// Циклически обрабатываем данные и формируем CSV файл с учетом указаны выше параметров
 | 
			
		||||
			foreach($logdata as $k=>$v)
 | 
			
		||||
			{
 | 
			
		||||
				foreach ($v as $key => $val)
 | 
			
		||||
				{
 | 
			
		||||
					$val = ($key=='log_time') ? date('d-m-Y, H:i:s', $val) : $val;
 | 
			
		||||
					$datstring .= ($val == '') ? $separator : $enclosed . stripslashes($val) . $enclosed . $separator;
 | 
			
		||||
				}
 | 
			
		||||
				$datstring .= PHP_EOL;
 | 
			
		||||
			}
 | 
			
		||||
			$file_name = BASE_DIR . $this->_logdir;
 | 
			
		||||
			$dateName = 'system_log_' . date('dmyhis', time()) . '.csv';
 | 
			
		||||
 | 
			
		||||
			// Определяем заголовки документа
 | 
			
		||||
			header('Content-Encoding: windows-1251');
 | 
			
		||||
			header('Content-type: text/csv; charset=windows-1251');
 | 
			
		||||
			header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT');
 | 
			
		||||
			header('Content-Disposition: attachment; filename="' . $datname . '"');
 | 
			
		||||
			header('Content-Length: ' . strlen($datstring));
 | 
			
		||||
			header('Content-Disposition: attachment; filename="' . $dateName . '"');
 | 
			
		||||
			header('Content-Length: ' . filesize($file_name));
 | 
			
		||||
			header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
 | 
			
		||||
			header('Pragma: public');
 | 
			
		||||
 | 
			
		||||
			// Выводим данные
 | 
			
		||||
			echo mb_convert_encoding($datstring, 'windows-1251', 'UTF-8');
 | 
			
		||||
			readfile($file_name);
 | 
			
		||||
 | 
			
		||||
			// Сохраняем системное сообщение в журнал
 | 
			
		||||
			reportLog($AVE_Template->get_config_vars('LOGS_EXPORT'));
 | 
			
		||||
@@ -228,56 +277,23 @@
 | 
			
		||||
		{
 | 
			
		||||
			global $AVE_Template;
 | 
			
		||||
 | 
			
		||||
			// Определяем тип файла (CSV), формат имени файла, разделители и т.д.
 | 
			
		||||
			$datstring = '';
 | 
			
		||||
			$dattype = 'text/csv';
 | 
			
		||||
			$datname = 'system_log_' . date('dmyhis', time()) . '.csv';
 | 
			
		||||
 | 
			
		||||
			$separator = ';';
 | 
			
		||||
			$enclosed = '"';
 | 
			
		||||
 | 
			
		||||
			// Выполняем запрос к БД на получение списка всех системных сообщений
 | 
			
		||||
			$log404 = array();
 | 
			
		||||
 | 
			
		||||
			$logfile = BASE_DIR.$this->_404dir;
 | 
			
		||||
 | 
			
		||||
			if(file_exists($logfile))
 | 
			
		||||
				include($logfile);
 | 
			
		||||
 | 
			
		||||
			arsort($log404);
 | 
			
		||||
 | 
			
		||||
			$fieldcount = count($log404[0]);
 | 
			
		||||
 | 
			
		||||
			foreach($log404[0] as $k=>$v)
 | 
			
		||||
				$datstring .= $enclosed . $k . $enclosed . $separator;
 | 
			
		||||
 | 
			
		||||
			$datstring .= PHP_EOL;
 | 
			
		||||
 | 
			
		||||
			// Циклически обрабатываем данные и формируем CSV файл с учетом указаны выше параметров
 | 
			
		||||
			foreach($log404 as $k=>$v)
 | 
			
		||||
			{
 | 
			
		||||
				foreach ($v as $key => $val)
 | 
			
		||||
				{
 | 
			
		||||
					$val = ($key=='log_time') ? date('d-m-Y, H:i:s', $val) : $val;
 | 
			
		||||
					$datstring .= ($val == '') ? $separator : $enclosed . stripslashes($val) . $enclosed . $separator;
 | 
			
		||||
				}
 | 
			
		||||
				$datstring .= PHP_EOL;
 | 
			
		||||
			}
 | 
			
		||||
			$file_name = BASE_DIR . $this->_404dir;
 | 
			
		||||
			$dateName = 'system_log_' . date('dmyhis', time()) . '.csv';
 | 
			
		||||
 | 
			
		||||
			// Определяем заголовки документа
 | 
			
		||||
			header('Content-Encoding: windows-1251');
 | 
			
		||||
			header('Content-type: text/csv; charset=windows-1251');
 | 
			
		||||
			header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT');
 | 
			
		||||
			header('Content-Disposition: attachment; filename="' . $datname . '"');
 | 
			
		||||
			header('Content-Length: ' . strlen($datstring));
 | 
			
		||||
			header('Content-Disposition: attachment; filename="' . $dateName . '"');
 | 
			
		||||
			header('Content-Length: ' . filesize($file_name));
 | 
			
		||||
			header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
 | 
			
		||||
			header('Pragma: public');
 | 
			
		||||
 | 
			
		||||
			// Выводим данные
 | 
			
		||||
			echo mb_convert_encoding(strip_tags($datstring), 'windows-1251', 'UTF-8');
 | 
			
		||||
			readfile($file_name);
 | 
			
		||||
 | 
			
		||||
			// Сохраняем системное сообщение в журнал
 | 
			
		||||
			reportLog($AVE_Template->get_config_vars('LOGS_404_EXPORT'));
 | 
			
		||||
			reportLog($AVE_Template->get_config_vars('LOGS_EXPORT'));
 | 
			
		||||
 | 
			
		||||
			exit;
 | 
			
		||||
		}
 | 
			
		||||
@@ -290,60 +306,24 @@
 | 
			
		||||
		{
 | 
			
		||||
			global $AVE_Template;
 | 
			
		||||
 | 
			
		||||
			// Определяем тип файла (CSV), формат имени файла, разделители и т.д.
 | 
			
		||||
			$datstring = '';
 | 
			
		||||
			$dattype = 'text/csv';
 | 
			
		||||
			$datname = 'system_log_' . date('dmyhis', time()) . '.csv';
 | 
			
		||||
 | 
			
		||||
			$separator = ';';
 | 
			
		||||
			$enclosed = '"';
 | 
			
		||||
 | 
			
		||||
			// Выполняем запрос к БД на получение списка всех системных сообщений
 | 
			
		||||
			$logsql = array();
 | 
			
		||||
 | 
			
		||||
			$logfile = BASE_DIR . $this->_sqldir;
 | 
			
		||||
 | 
			
		||||
			if(file_exists($logfile))
 | 
			
		||||
				include($logfile);
 | 
			
		||||
 | 
			
		||||
			arsort($logsql);
 | 
			
		||||
 | 
			
		||||
			$fieldcount = count($logsql[0]);
 | 
			
		||||
 | 
			
		||||
			foreach($logsql[0] as $k=>$v)
 | 
			
		||||
				$datstring .= $enclosed . $k . $enclosed . $separator;
 | 
			
		||||
 | 
			
		||||
			$datstring .= PHP_EOL;
 | 
			
		||||
 | 
			
		||||
			// Циклически обрабатываем данные и формируем CSV файл с учетом указаны выше параметров
 | 
			
		||||
			foreach($logsql as $k => $v)
 | 
			
		||||
			{
 | 
			
		||||
				foreach ($v as $key => $val)
 | 
			
		||||
				{
 | 
			
		||||
					$val = ($key == 'log_time') ? date('d-m-Y, H:i:s', $val) : $val;
 | 
			
		||||
					$val = ($key == 'log_text') ? serialize($val) : $val;
 | 
			
		||||
					$datstring .= ($val == '') ? $separator : $enclosed . stripslashes($val) . $enclosed . $separator;
 | 
			
		||||
				}
 | 
			
		||||
				$datstring .= PHP_EOL;
 | 
			
		||||
			}
 | 
			
		||||
			$file_name = BASE_DIR . $this->_sqldir;
 | 
			
		||||
			$dateName = 'system_log_' . date('dmyhis', time()) . '.csv';
 | 
			
		||||
 | 
			
		||||
			// Определяем заголовки документа
 | 
			
		||||
			header('Content-Encoding: windows-1251');
 | 
			
		||||
			header('Content-type: text/csv; charset=windows-1251');
 | 
			
		||||
			header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT');
 | 
			
		||||
			header('Content-Disposition: attachment; filename="' . $datname . '"');
 | 
			
		||||
			header('Content-Length: ' . strlen($datstring));
 | 
			
		||||
			header('Content-Disposition: attachment; filename="' . $dateName . '"');
 | 
			
		||||
			header('Content-Length: ' . filesize($file_name));
 | 
			
		||||
			header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
 | 
			
		||||
			header('Pragma: public');
 | 
			
		||||
 | 
			
		||||
			// Выводим данные
 | 
			
		||||
			echo mb_convert_encoding(strip_tags($datstring), 'windows-1251', 'UTF-8');
 | 
			
		||||
			readfile($file_name);
 | 
			
		||||
 | 
			
		||||
			// Сохраняем системное сообщение в журнал
 | 
			
		||||
			reportLog($AVE_Template->get_config_vars('LOGS_SQL_EXPORT'));
 | 
			
		||||
			reportLog($AVE_Template->get_config_vars('LOGS_EXPORT'));
 | 
			
		||||
 | 
			
		||||
			exit;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
?>
 | 
			
		||||
	}
 | 
			
		||||
@@ -18,95 +18,95 @@
 | 
			
		||||
	 * @param string $message Текст сообщения
 | 
			
		||||
	 * @param int $typ тип сообщения
 | 
			
		||||
	 * @param int $rub номер рубрики
 | 
			
		||||
	 * @return
 | 
			
		||||
	 * @return void
 | 
			
		||||
	 */
 | 
			
		||||
	function reportLog($message, $typ = 0, $rub = 0)
 | 
			
		||||
	function reportLog(string $message, int $typ = 0, int $rub = 0)
 | 
			
		||||
	{
 | 
			
		||||
		$logdata=array();
 | 
			
		||||
		$logfile = BASE_DIR . '/tmp/logs/log.csv';
 | 
			
		||||
 | 
			
		||||
		$logfile = BASE_DIR . '/tmp/logs/log.php';
 | 
			
		||||
 | 
			
		||||
		if (file_exists($logfile))
 | 
			
		||||
			@eval(' ?'.'>' . file_get_contents($logfile) . '<?'.'php ');
 | 
			
		||||
 | 
			
		||||
		$logdata[]=array(
 | 
			
		||||
		$logData = [
 | 
			
		||||
			'log_time'		=> time(),
 | 
			
		||||
			'log_ip'		=> $_SERVER['REMOTE_ADDR'],
 | 
			
		||||
			'log_url'		=> $_SERVER['REQUEST_URI'],
 | 
			
		||||
			'log_user_id'	=> (isset($_SESSION['user_id']) ? $_SESSION['user_id'] : '0'),
 | 
			
		||||
			'log_user_name'	=> (isset($_SESSION['user_name']) ? $_SESSION['user_name'] : 'Anonymous'),
 | 
			
		||||
			'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
 | 
			
		||||
		);
 | 
			
		||||
		];
 | 
			
		||||
 | 
			
		||||
		$messlimit = 1000;
 | 
			
		||||
		if ($f_log = @fopen($logfile, 'ab'))
 | 
			
		||||
		{
 | 
			
		||||
			if (flock($f_log, LOCK_EX))
 | 
			
		||||
			{
 | 
			
		||||
				fputcsv($f_log, $logData);
 | 
			
		||||
				flock($f_log, LOCK_UN);
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
		$logdata = array_slice($logdata,-1*$messlimit);
 | 
			
		||||
 | 
			
		||||
		file_put_contents($logfile,'<?php $logdata=' . var_export($logdata,true) . ' ?>');
 | 
			
		||||
			fclose($f_log);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Запись события в лог для Sql ошибок
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param string $message Текст сообщения
 | 
			
		||||
	 * @return
 | 
			
		||||
	 * @return void
 | 
			
		||||
	 */
 | 
			
		||||
	function reportSqlLog($message)
 | 
			
		||||
	{
 | 
			
		||||
		$logsql = array();
 | 
			
		||||
		$logfile = BASE_DIR . '/tmp/logs/sql.csv';
 | 
			
		||||
 | 
			
		||||
		$logfile = BASE_DIR . '/tmp/logs/sql.php';
 | 
			
		||||
 | 
			
		||||
		if (file_exists($logfile))
 | 
			
		||||
			@eval(' ?'.'>' . file_get_contents($logfile) . '<?'.'php ');
 | 
			
		||||
 | 
			
		||||
		$logsql[] = array(
 | 
			
		||||
		$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'		=> $message
 | 
			
		||||
		);
 | 
			
		||||
			'log_text'		=> base64_encode(serialize($message))
 | 
			
		||||
		];
 | 
			
		||||
 | 
			
		||||
		$messlimit = 1000;
 | 
			
		||||
		if ($f_log = @fopen($logfile, 'ab'))
 | 
			
		||||
		{
 | 
			
		||||
			if (flock($f_log, LOCK_EX))
 | 
			
		||||
			{
 | 
			
		||||
				fputcsv($f_log, $logData);
 | 
			
		||||
				flock($f_log, LOCK_UN);
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
		$logsql = array_slice($logsql,-1*$messlimit);
 | 
			
		||||
 | 
			
		||||
		file_put_contents($logfile, '<?php $logsql = ' . var_export($logsql, true) . ' ?>');
 | 
			
		||||
			fclose($f_log);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Запись события в лог для 404 ошибок
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param string $message Текст сообщения
 | 
			
		||||
	 * @return
 | 
			
		||||
	 * @return void
 | 
			
		||||
	 */
 | 
			
		||||
	function report404()
 | 
			
		||||
	{
 | 
			
		||||
		$log404 = array();
 | 
			
		||||
		$logfile = BASE_DIR . '/tmp/logs/404.csv';
 | 
			
		||||
 | 
			
		||||
		$logfile = BASE_DIR . '/tmp/logs/404.php';
 | 
			
		||||
 | 
			
		||||
		if (file_exists($logfile))
 | 
			
		||||
			@include($logfile);
 | 
			
		||||
 | 
			
		||||
		$log404[] = array(
 | 
			
		||||
		$logData = [
 | 
			
		||||
			'log_time' 			=> time(),
 | 
			
		||||
			'log_ip' 			=> @$_SERVER['REMOTE_ADDR'],
 | 
			
		||||
			'log_query' 		=> @$_SERVER['REQUEST_URI'],
 | 
			
		||||
			'log_user_agent' 	=> @$_SERVER['HTTP_USER_AGENT'],
 | 
			
		||||
			'log_user_referer' 	=> (isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : ''),
 | 
			
		||||
			'log_user_referer' 	=> ($_SERVER['HTTP_REFERER'] ?? ''),
 | 
			
		||||
			'log_request_uri' 	=> @$_SERVER['REQUEST_URI']
 | 
			
		||||
		);
 | 
			
		||||
		];
 | 
			
		||||
 | 
			
		||||
		$messlimit = 1000;
 | 
			
		||||
		if ($f_log = @fopen($logfile, 'ab'))
 | 
			
		||||
		{
 | 
			
		||||
			if (flock($f_log, LOCK_EX))
 | 
			
		||||
			{
 | 
			
		||||
				fputcsv($f_log, $logData);
 | 
			
		||||
				flock($f_log, LOCK_UN);
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
		$log404 = array_slice($log404, -1*$messlimit);
 | 
			
		||||
 | 
			
		||||
		file_put_contents($logfile,'<?php $log404=' . var_export($log404, true) . ' ?>');
 | 
			
		||||
			fclose($f_log);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
		Reference in New Issue
	
	Block a user