Почему не работают логи?

Ссылка скопирована
PHP
9 февраля 2026 1 ответ

У меня такая проблема, делал все по ролику - https://youtu.be/hwgxDHgML7A и пишет ошибку постоянно - https://logi.arz-avondale.ru

Fatal error: Uncaught Error: Undefined constant "hash" in /var/www/u2387962/data/www/logi.arz-avondale.ru/inc/header.php:15 Stack trace: #0 /var/www/u2387962/data/www/logi.arz-avondale.ru/upload/index.php(22): include() #1 {main} thrown in /var/www/u2387962/data/www/logi.arz-avondale.ru/inc/header.php on line 15
Код header.php

<?php   	 	include 'config.php'; 	 	$base_logs = new mysqli(Config::DB_HOST_LOG, Config::DB_USER_LOG, Config::DB_PASS_LOG, Config::DB_NAME_LOG) or die("Ошибка BD #2!"); 	$base_logs -> query("SET character_set_results = utf8");   	$base_logs -> query("SET NAMES 'utf8'"); 	 	$TABLE_LOG = Config::DB_LOG_TABLE; 	 	$base_server = new mysqli(Config::DB_HOST_SERVER, Config::DB_USER_SERVER, Config::DB_PASS_SERVER, Config::DB_NAME_SERVER) or die("Ошибка BD #1!"); 	$base_server -> query("SET character_set_results = utf8");  	$base_server -> query("SET NAMES 'utf8'"); 	 	if (isset($_COOKIE[hash])) 	{   	    $result = $base_logs -> query("SELECT user_id FROM coookie WHERE hash = '".$_COOKIE[hash]."' LIMIT 1; "); 	     	    $data = mysqli_fetch_array($result); 	     	    $sql = "SELECT * FROM user WHERE id = '".$data[user_id]."' LIMIT 1;"; 	     	    $result -> close(); 	     	    $result = $base_logs -> query($sql); 	     	    $cookie = mysqli_fetch_assoc($result); 	     	    $result -> close(); 	     	    $ip = explode( (strpos($_SERVER['HTTP_X_FORWARDED_FOR'], ':') == true ? ':':'.' ), $_SERVER['HTTP_X_FORWARDED_FOR'] ); 		 		$cookie[ip] = $ip[0].'^'.$ip[1].'^'.$ip[2]; 		 	    $sign = hash('sha512', implode ( '|', $cookie ), false); 	        	    if ($sign !== $_COOKIE[hash]) 	    { 	        $base_logs -> query("DELETE FROM coookie WHERE hash = '".$_COOKIE[hash]."'"); 	        setcookie("hash", "", time() - 30, "/", "", 1); 	        unset($_SESSION['account_log_name']);     		unset($_SESSION['account_log_password']);     		session_destroy();     		header('Location: ../check/authorization');      		die(); 	    } 	}     else 	{ 	    $user = $_SESSION["account_log_name"]; 	    $password = $_SESSION["account_log_password"]; 	 	    $sql = "SELECT * FROM user WHERE login = '".$user."' AND password = '".$password."'"; 	} 	 	$query = $base_logs -> query($sql); 	$row = mysqli_num_rows($query); 	 	$data = mysqli_fetch_assoc($query); 	 	$subscription = $data['sub']; 	 	if (!$row && $_SERVER['SCRIPT_NAME'] !== '/check/authorization')  	{ 		unset($_SESSION['account_log_name']); 		unset($_SESSION['account_log_password']); 		session_destroy(); 		header('Location: ../check/authorization');  		die(); 	} 	 	else if (!$data[status]) 	{ 		die('<html><head><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"></head></html><center><b>Внимание ошибка авторизации:<br />Ваш аккаунт проходит модерацию</b><br /><a href = ../check/authorization>Вернуться на раздел авторизации</a></center>'); 		 		return false; 	} 	 	$query -> close(); 	 	$query = $base_logs -> query('SELECT * FROM `settings`'); 	$server = mysqli_fetch_assoc($query); 	 	if (!$server[status]) 	{ 		include '../404/close.php'; 		die(); 		return false; 	} 	 	else if ($row && $subscription < time() && $_SERVER['SCRIPT_NAME'] !== '/pages/subscription.php') 	{ 		header('Location: ../pages/subscription');  		die(); 	} 	 ?>

<?php include 'config.php'; $base_logs = new mysqli(Config::DB_HOST_LOG, Config::DB_USER_LOG, Config::DB_PASS_LOG, Config::DB_NAME_LOG) or die("Ошибка BD #2!"); $base_logs -> query("SET character_set_results = utf8"); $base_logs -> query("SET NAMES 'utf8'"); $TABLE_LOG = Config::DB_LOG_TABLE; $base_server = new mysqli(Config::DB_HOST_SERVER, Config::DB_USER_SERVER, Config::DB_PASS_SERVER, Config::DB_NAME_SERVER) or die("Ошибка BD #1!"); $base_server -> query("SET character_set_results = utf8"); $base_server -> query("SET NAMES 'utf8'"); if (isset($_COOKIE[hash])) { $result = $base_logs -> query("SELECT user_id FROM coookie WHERE hash = '".$_COOKIE[hash]."' LIMIT 1; "); $data = mysqli_fetch_array($result); $sql = "SELECT * FROM user WHERE id = '".$data[user_id]."' LIMIT 1;"; $result -> close(); $result = $base_logs -> query($sql); $cookie = mysqli_fetch_assoc($result); $result -> close(); $ip = explode( (strpos($_SERVER['HTTP_X_FORWARDED_FOR'], ':') == true ? ':':'.' ), $_SERVER['HTTP_X_FORWARDED_FOR'] ); $cookie[ip] = $ip[0].'^'.$ip[1].'^'.$ip[2]; $sign = hash('sha512', implode ( '|', $cookie ), false); if ($sign !== $_COOKIE[hash]) { $base_logs -> query("DELETE FROM coookie WHERE hash = '".$_COOKIE[hash]."'"); setcookie("hash", "", time() - 30, "/", "", 1); unset($_SESSION['account_log_name']); unset($_SESSION['account_log_password']); session_destroy(); header('Location: ../check/authorization'); die(); } } else { $user = $_SESSION["account_log_name"]; $password = $_SESSION["account_log_password"]; $sql = "SELECT * FROM user WHERE login = '".$user."' AND password = '".$password."'"; } $query = $base_logs -> query($sql); $row = mysqli_num_rows($query); $data = mysqli_fetch_assoc($query); $subscription = $data['sub']; if (!$row && $_SERVER['SCRIPT_NAME'] !== '/check/authorization') { unset($_SESSION['account_log_name']); unset($_SESSION['account_log_password']); session_destroy(); header('Location: ../check/authorization'); die(); } else if (!$data[status]) { die('<html><head><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"></head></html><center><b>Внимание ошибка авторизации:<br />Ваш аккаунт проходит модерацию</b><br /><a href = ../check/authorization>Вернуться на раздел авторизации</a></center>'); return false; } $query -> close(); $query = $base_logs -> query('SELECT * FROM `settings`'); $server = mysqli_fetch_assoc($query); if (!$server[status]) { include '../404/close.php'; die(); return false; } else if ($row && $subscription < time() && $_SERVER['SCRIPT_NAME'] !== '/pages/subscription.php') { header('Location: ../pages/subscription'); die(); } ?>

В чем может быть проблема?

Дополнительно:

Дыра в безопасности. Достаточно в $_COOKIE['hash'] передать 1 or 1 = 1 и можно разлогинить всех пользователей.

-$_COOKIE[hash] +$_COOKIE['hash']

-$_COOKIE[hash] +$_COOKIE['hash']

И далее по тексту, где идёт обращение к элементам ассоциативного массива, сделать то же самое.

  • Сделал, теперь пишет

    Warning: Undefined array key "account_log_name" in /var/www/u2387962/data/www/logi.arz-avondale.ru/inc/header.php on line 50

    Warning: Undefined array key "account_log_password" in /var/www/u2387962/data/www/logi.arz-avondale.ru/inc/header.php on line 51

    Warning: Trying to access array offset on value of type null in /var/www/u2387962/data/www/logi.arz-avondale.ru/inc/header.php on line 61

    Warning: Cannot modify header information - headers already sent by (output started at /var/www/u2387962/data/www/logi.arz-avondale.ru/inc/header.php:50) in /var/www/u2387962/data/www/logi.arz-avondale.ru/inc/header.php on line 68

  • Это элементарные ошибки, с которыми сталкивается каждый начинающий. Забейте их в поисковик и выбирайте любой из тысяч ответов.
Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Сергей Миронов Ответ

Проблема с неработающими логами может иметь несколько причин, и для их решения необходимо провести некоторые действия.

1. Проверьте настройки логирования в вашем приложении. Убедитесь, что уровень логирования установлен правильно. Например, если у вас установлен уровень логирования на INFO, то сообщения с уровнем DEBUG не будут записываться в лог.

define('LOG_LEVEL', 'DEBUG');

define('LOG_LEVEL', 'DEBUG');

2. Проверьте разрешения на запись в файлы логов. У вас должны быть правильные разрешения на запись в файлы логов, чтобы ваше приложение могло записывать сообщения в них.

3. Убедитесь, что путь к файлу лога указан правильно. Проверьте, что путь к файлу лога в настройках вашего приложения указан корректно.

define('LOG_FILE', '/var/log/myapp.log');

define('LOG_FILE', '/var/log/myapp.log');

4. Проверьте наличие необходимых библиотек для логирования. Убедитесь, что вы используете правильную библиотеку для логирования и она установлена в вашем приложении.

5. Проверьте, что сама функция логирования работает правильно. Проверьте код, который вызывает функцию логирования, и убедитесь, что он корректно передает сообщение для записи в лог.

6. Попробуйте добавить дополнительный вывод информации для отладки. Добавьте дополнительные сообщения логирования для отслеживания того, в каком месте вашего приложения возникает проблема.

Если после выполнения всех этих шагов логи все равно не работают, то возможно проблема кроется в другом месте, и вам стоит обратиться за помощью к специалистам или сообществу разработчиков для более детального анализа проблемы.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно