Данный хак меняет вывод MySQL ошибок и дает возможность пользователю сообщить вам об ошибке.
Спасибо за идею ShapeShifter'у .. Я сделал более "людской" вывод а так же кнопку "Сообщить об ошибке", что бы пользователь мог сообщить вам об ошибке.
Именно кнопка а не автоматическая отправка, так как мне показалось так удобней, что бы не "спамить" ящик...
При нажатие кнопки "Сообщить об ошибке" Вы на почту получите следующее письмо -
1. Скачивает архив и папку "mysqli" помещаем в /engine/classes/
2. В файле /engine/classes/mysqli.class.php и mysql.class.php
Ищем:
Меняем на:
3. www.site.ru замените на свой адрес, так же в mail_settings.php укажите свой e-mail
4. Все должно работать, для проверки удалите свою БД =)
Для любопытных ДЕМО, как это выглядит - ссылка
Скачать:
MySQL ошибка - .
Адрес ошибки: httр://www.sitе.ru/210-mysql-oshibka-vyvod-informacii.html
Причина ошибки: Unknown column \'id\' in \'field list\'
Номер ошибки: 1054
SELECT id, title, date, alt_name, category, flag FROM dle_post WHERE approve=\'1\' AND date >= \'2010-03-06 16:41:30\' - INTERVAL 1 MONTH AND date < \'2010-03-06 16:41:30\' ORDER BY rating DESC, comm_num DESC, news_read DESC, date DESC LIMIT 0,10
Броузер пользователя: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.89 Safari/532.5
IP-адрес пользователя: 87.87.87.87
Адрес ошибки: httр://www.sitе.ru/210-mysql-oshibka-vyvod-informacii.html
Причина ошибки: Unknown column \'id\' in \'field list\'
Номер ошибки: 1054
SELECT id, title, date, alt_name, category, flag FROM dle_post WHERE approve=\'1\' AND date >= \'2010-03-06 16:41:30\' - INTERVAL 1 MONTH AND date < \'2010-03-06 16:41:30\' ORDER BY rating DESC, comm_num DESC, news_read DESC, date DESC LIMIT 0,10
Броузер пользователя: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.89 Safari/532.5
IP-адрес пользователя: 87.87.87.87
1. Скачивает архив и папку "mysqli" помещаем в /engine/classes/
2. В файле /engine/classes/mysqli.class.php и mysql.class.php
Ищем:
echo '<?xml version="1.0" encoding="iso-8859-1"?>
....
....
</html>';
....
....
</html>';
Меняем на:
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>Произошла ошибка</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: 12px;
font-style: normal;
color: #000000;
}
input.btn {
color:#c52424;
border:1px solid;
border-color: #e45b5b;
}
-->
</style>
<script type="text/javascript">
<!--
function timedRefresh(timeoutPeriod) {
setTimeout("location.reload(true);",timeoutPeriod);
}
// -->
</script>
</head>
<body style="background-color:#f8f8f8;" onload="javascript:timedRefresh(20000);">
<div align="center" style="padding-top:20px;">
<div align="center" style="border: 7px solid #ffc0c0; width: 500px; background-color:#fff8f8;"><br />
<font size="4" color="#e63939">Произошла ошибка !</font>
<br /> <br />
Если ошибка будет отображаться в течение 10 минут, <br />то пожалуйста нажмите на кнопку <strong>«Сообщить об ошибке»</strong>
<br />
<br />
<form name="contactformlite" method="post" action="http://www.site.ru/engine/classes/mysqli/mail.php">
<textarea name="Email_Address" id="Email_Address" style="font-family:tahoma; font-size:12px; border:2px solid #ffc0c0; background-color:#fff8f8;" rows="10" cols="85" wrap="virtual">Причина ошибки: '.$error.'
Номер ошибки: '.$error_num.'
'.$query_str.'</textarea>
<br />
<input type="submit" value="Сообщить об ошибке" class="btn">
</form>
<br />
</div>
</div>
</body>
</html>';
<!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>Произошла ошибка</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: 12px;
font-style: normal;
color: #000000;
}
input.btn {
color:#c52424;
border:1px solid;
border-color: #e45b5b;
}
-->
</style>
<script type="text/javascript">
<!--
function timedRefresh(timeoutPeriod) {
setTimeout("location.reload(true);",timeoutPeriod);
}
// -->
</script>
</head>
<body style="background-color:#f8f8f8;" onload="javascript:timedRefresh(20000);">
<div align="center" style="padding-top:20px;">
<div align="center" style="border: 7px solid #ffc0c0; width: 500px; background-color:#fff8f8;"><br />
<font size="4" color="#e63939">Произошла ошибка !</font>
<br /> <br />
Если ошибка будет отображаться в течение 10 минут, <br />то пожалуйста нажмите на кнопку <strong>«Сообщить об ошибке»</strong>
<br />
<br />
<form name="contactformlite" method="post" action="http://www.site.ru/engine/classes/mysqli/mail.php">
<textarea name="Email_Address" id="Email_Address" style="font-family:tahoma; font-size:12px; border:2px solid #ffc0c0; background-color:#fff8f8;" rows="10" cols="85" wrap="virtual">Причина ошибки: '.$error.'
Номер ошибки: '.$error_num.'
'.$query_str.'</textarea>
<br />
<input type="submit" value="Сообщить об ошибке" class="btn">
</form>
<br />
</div>
</div>
</body>
</html>';
3. www.site.ru замените на свой адрес, так же в mail_settings.php укажите свой e-mail
4. Все должно работать, для проверки удалите свою БД =)
Для любопытных ДЕМО, как это выглядит - ссылка
Скачать: