Вот давно хотел изменить вывод MySQL ошибок на своём сайте, чтобы пользователи могли четко сообщить о найденной ошибке.
Обычно просто пишут, что была ошибка БД или копируют какую-то часть текста и передают администрации, что не позволяет быстро понять в чём проблема и где она появляется.
Данный хак позволит сделать более удобный вывод ошибок на вашем сайте. Например вы можете просто изменить внешний вид вывода ошибки или написать информацию, благодаря которой пользователи будут знать кому и что сообщить (как сделал я).
При копировании материала указание автора и ссылки на наш сайт обязательна.
Открыть /engine/classes/mysqli.class.php и mysql.class.php
Найти:
function display_error($error, $error_num, $query = '')
{
if($query) {
// Safify query
$query = preg_replace("/([0-9a-f]){32}/", "********************************", $query); // Hides all hashes
$query_str = "$query";
}
echo '<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>MySQL Fatal Error</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<style type="text/css">
<!--
body {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 10px;
font-style: normal;
color: #000000;
}
-->
</style>
</head>
<body>
<font size="4">MySQL Error!</font>
<br />------------------------<br />
<br />
<u>The Error returned was:</u>
<br />
<strong>'.$error.'</strong>
<br /><br />
</strong><u>Error Number:</u>
<br />
<strong>'.$error_num.'</strong>
<br />
<br />
<textarea name="" rows="10" cols="52" wrap="virtual">'.$query_str.'</textarea><br />
</body>
</html>';
exit();
}
{
if($query) {
// Safify query
$query = preg_replace("/([0-9a-f]){32}/", "********************************", $query); // Hides all hashes
$query_str = "$query";
}
echo '<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>MySQL Fatal Error</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<style type="text/css">
<!--
body {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 10px;
font-style: normal;
color: #000000;
}
-->
</style>
</head>
<body>
<font size="4">MySQL Error!</font>
<br />------------------------<br />
<br />
<u>The Error returned was:</u>
<br />
<strong>'.$error.'</strong>
<br /><br />
</strong><u>Error Number:</u>
<br />
<strong>'.$error_num.'</strong>
<br />
<br />
<textarea name="" rows="10" cols="52" wrap="virtual">'.$query_str.'</textarea><br />
</body>
</html>';
exit();
}
Заменить на:
function display_error($error, $error_num, $query = '')
{
if($query) {
// Safify query
$query = preg_replace("/([0-9a-f]){32}/", "********************************", $query); // Hides all hashes
$query_str = "$query";
}
echo '<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>MySQL Fatal Error</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<style type="text/css">
<!--
body {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 10px;
font-style: normal;
color: #000000;
}
-->
</style>
</head>
<body>
<font size="4">MySQL ошибка!</font>
<br />------------------------<br />
<br />
<u>Причина ошибки:</u>
<br />
<strong>'.$error.'</strong>
<br /><br />
</strong><u>Номер ошибки:</u>
<br />
<strong>'.$error_num.'</strong>
<br />
<br />
<u>Просьба сообщить об ошибке:</u>
<br />
<strong>ВАША ПОЧТА или по личным сообщениям через сайт.</strong><br>
Скопируйте весь текст, который написан ниже и отправьте его по указанным контактам.
<br /><br />
<textarea name="" rows="10" cols="52" wrap="virtual">'.$query_str.'</textarea><br /><br>Заранее спасибо, за уведомление об ошибки. Мы постараемся исправить её как можно быстрее.
</body>
</html>';
exit();
}
{
if($query) {
// Safify query
$query = preg_replace("/([0-9a-f]){32}/", "********************************", $query); // Hides all hashes
$query_str = "$query";
}
echo '<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>MySQL Fatal Error</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<style type="text/css">
<!--
body {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 10px;
font-style: normal;
color: #000000;
}
-->
</style>
</head>
<body>
<font size="4">MySQL ошибка!</font>
<br />------------------------<br />
<br />
<u>Причина ошибки:</u>
<br />
<strong>'.$error.'</strong>
<br /><br />
</strong><u>Номер ошибки:</u>
<br />
<strong>'.$error_num.'</strong>
<br />
<br />
<u>Просьба сообщить об ошибке:</u>
<br />
<strong>ВАША ПОЧТА или по личным сообщениям через сайт.</strong><br>
Скопируйте весь текст, который написан ниже и отправьте его по указанным контактам.
<br /><br />
<textarea name="" rows="10" cols="52" wrap="virtual">'.$query_str.'</textarea><br /><br>Заранее спасибо, за уведомление об ошибки. Мы постараемся исправить её как можно быстрее.
</body>
</html>';
exit();
}
Всё что находится между:
echo '
и
';
Это формирование страницы с ошибкой MySQL.
Внимание! В инструкции вывод информации отличается от того что на скриншоте.
Автор: ShapeShifter (SaVGroup.ru)





