Скрипт отправки сообщений об ошибках

Скрипт проверки ошибок на сайте

На нашем сайте - сайте, посвященном ошибкам, очень желательно было установить систему устранения этих самых ошибок. В Рунете для этих целей уже традиционно используется система Orphus.

Одно время скрипт этой системы успешно работал на сайте, но в один прекрасный момент вдруг перестал, и все попытки реанимировать его оказались тщетными.

Пришлось разрабатывать свой скрипт. Как оказалось, все не так-то просто. Помогли уроки JavaScript, ну и, конечно же, Google с Яндексом. В итоге, при сложении нескольких найденных блоков скрипта и почерпнутых из учебника знаний получился вполне рабочий модуль для проверки ошибок на сайте. Для его работы необходима поддержка PHP на хостинге.

Последняя версия скрипта 4.1 основана на плагине typo к CMS Drupal. Автор плагина Роман Архаров. В этой версии появилась функция отображения окружающего ошибку текста, сама же ошибка выделяется красным.

Модуль состоит из четырех файлов: mistakes.js, mistakes.css, mistakes.php и overlay.png.
Скачать можно отсюда.

Чтобы его подключить, нужно поместить эти файлы в директорию своего сайта, например в папку «mistakes» и на всех страницах сайта между тегами «head» вставить две строки:

<script type="text/javascript" charset="windows-1251" src="/путь до файла/mistakes.js"></script> <link href="/путь до файла/mistakes.css" rel="stylesheet" type="text/css" />

При этом после src=" и href=" нужно прописать путь к файлу mistakes.js и mistakes.css соответственно.

Файл mistakes.js. В этом файле нужно изменить значение переменной misphploc (то, что между кавычками "") на путь к файлу mistakes.php.

Файл mistakes.php.
Здесь нужно изменить значение нескольких переменных:
$title - заголовок сообщения,
$to, - email, на который будут отправляться сообщения,
$mymail - email, от кого пришло сообщение.

Ну и, конечно же, для того чтобы посетитель знал, что он может посодействовать в исправлении ошибок, нужно разместить на страницах вашего сайта, например, такую фразу:

На сайте работает система проверки ошибок. Обнаружив неточность в тексте, выделите ее и нажмите Ctrl + Enter.

Также открыть окошко отправки сообщения можно, кликнув по ссылке:

Отправить сообщение об ошибке

Код ссылки:

<a href="javascript:void(0)" onclick="PressLink()">Отправить сообщение об ошибке</a>

Исходная кодировка скрипта windows-1251. Если ваш сайт работает на utf-8, то создайте в папке со скриптом файл .htaccess и добавьте в нем строку:

AddDefaultCharset windows-1251

Также вам скорее всего нужно будет переформатировать в utf-8 файл mistakes.js

Скачать модуль mistakes-4.1.zip (zip архив 7Kb).

Если вас по каким-либо причинам не устраивает последняя версия, попробуйте предыдущую - 3.3. mistakes3.3.zip (zip архив 6Kb).

Успешной вам борьбы с опечатками)) Вопросы и пожелания оставляйте в комментариях.

Комментарии

Аватар пользователя Alex D

везде где есть в скрипте

везде где есть в скрипте такое:
if($_POST['submit'])
чтоб небыло нотисов надо поменять на такое:
if(isset($_POST['submit']) && $_POST['submit'])

таким образом мы сначала проверим создана ли вообще такая переменная и ошибок не выведет

Аватар пользователя Валера

Здравствуйте, замечательный

Здравствуйте, замечательный скрипт!
Но есть повод для версии 4.1

<a href="javascript:void(0)" onclick="PressLink()">Отправить сообщение об ошибке</a>
этот код открывает окно сообщения без выделенного текста. Было бы идеально, чтоб при нажатии /img/ctrlenter.png" (картинка объявления сообщающая о функционировании системы коррекции ошибок) идентично заменяла действие клика кнопок ctrl + enter

Аватар пользователя Ozz

ошибка "Forbidden"

Использую CMS Getsimple, создал в корневой директории папку "mistakes" куда закинул файлы скрипта. При нажатии Ctrl+Enter появляется окошко с надписью "Forbidden! You do not have permission to access this document."
Права на папку и файл ставлю 777 - все равно такая ошибка.. Что делать? Спасибо!

Аватар пользователя Ozz

ошибка в Firefox

Предыдущую ошибку исправил переместив папку со скриптов в папку с темой.. Спасибо! ))

Еще ошибка появляется в Файрфоксе 36 - окошко появляется, но не работают кнопки "Закрыть", а также не появляются адрес страницы и выделенный текст в соответствующих окошках.. Это баг?

Аватар пользователя Mary

Ошибки скрипта

Спасибо автору за скрипт, но выявились некоторые ошибки в его работе:
Когда в выделяемом тексте присутствует жирный шрифт или выделяется текст из 2-х соседних абзацев, то выделяемый текст обрезается и красным выделяется обрезанный его кусок.
Если удастся исправить, напишите, пожалуйста! Проверить ошибку можно тут http://www.homeopath.spb.ru/ofic/reestr/161-agnus-plus

Аватар пользователя Сергей

Не кликабельная ссылка

Здравствуйте. Будьте добры, скажите, пожалуйста, почему в версии 4.0 ссылка на страницу ошибки (та, что в письме) - не кликабельная? Вот если раньше приходило письмо с ошибкой, то можно было нажать на ссылку в письме и перейти на нужную страницу, а теперь этого сделать нельзя, ссылка, увы, не кликабельная. Если это можно как-то исправить, подскажите, пожалуйста, как. Спасибо.

Аватар пользователя max

Ребята подскажите что

Ребята подскажите что вписывать в это поле $mymail - email, от кого пришло сообщение. ? также когда приходит письмо то в нем чужой аватар как это изменить ?

Аватар пользователя alpik

Доброго дня, использую ваш

Доброго дня, использую ваш скрипт, спасибо, нравится, но в последнее время скрипт перестал работать в хроме, не пойму из-за чего. Именно не определяется страница при отправке ошибки. Сообщения доходят на емайл, но строки - Адрес страницы: и Ошибка:
пустые. В других браузерах проблемы такой нет
скрин прилагаю:
http://s008.radikal.ru/i306/1510/61/5663b330ec85.jpg

Аватар пользователя Марина

Добрый день. при тестировании

Добрый день. при тестировании письма с ошибками не приходят на мой указанный адрес. Где то я ошибаюсь.
Файл mistakes.php.
$mymail - email, от кого пришло сообщение. вопрос: какой (чей) адрес я должна сюда указать?

Аватар пользователя Виктор

Здраствуйте, проверил работу

Здраствуйте, проверил работу скрипта в Chrome при отправке ошибки и закрытии окна, нажимаю в браузере кнопку назад и загружается таже страница, как я понял при отправке ошибки страница перезагружается но тогда не понятно почему при переходе назад открывается таже страница? В Firefox кстати такого не наблюдается!

Аватар пользователя Михаил

Здравствуйте. Спасибо за

Здравствуйте. Спасибо за скрипт - выручили. Страничка доната есть? Но есть небольшая проблемка, указал почту куда приходить письма будут на mail.ru (пробовал и gmail.com). Письма попадают в спам. Причем отмечаешь письмо НЕ как спам, должно бы новое уже попадать во входящие... ан нет, все равно спам. Подскажите как это "вылечить". Спасибо.

Аватар пользователя Alexander

Спасибо за скрипт, все

Спасибо за скрипт, все работает. Особенно стало актуальным, когда орфус стал нерабочим)

Одна проблемка, видимо связанная с кодировкой. Сайт на utf8. Хтааксесс разместил. Приходит все, кроме "Комментария", в нем - пустое поле.

Если меняю кодировку mistakes.php на utf8 - приходит все, включая комментарий в "закорючках". Есть ли какое-то решение? Спасибо!

Аватар пользователя ParadiseDM

Админ, помоги плиз. Сделал на

Админ, помоги плиз. Сделал на этом сайте все как ты говорил http://shop.fabrika-diodov.ru/ , но только на почту ничего не приходит. Вообще. Все варианты уже сделал. Точно такой же скрипт подключал на другом сайте и там работало, а тут сделал тоже самое и не хочет работать

Аватар пользователя Евгений

Доброго времени суток! Не

Доброго времени суток! Не пойму неужели никто не встречался с этой ошибкой? http://d.pr/i/TqfC Когда текст копируешь к примеру жирный и простой то он его нормально не берет.

Аватар пользователя TermitNeT

Кароче я подстроил под себя

Кароче я подстроил под себя html. и переестали приходить сообщения на почту (хотя до этого я не проверял)

Вот мой html

<!-- Скрипт отправки сообщений об ошибке http://mistakes.ru/script/mistakes_dev -->
<!-- Версия 4.1 от 27.04.2015-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<TITLE>Отправить ошибку</TITLE>
<style type="text/css">
body {
margin: 23px 28px 0 28px;
font-size:14px;
font-family:Helvetica, Sans-serif, Arial;
line-height:2em;
}
form {margin: 0;}
.text {
font-weight: bold;
font-size:12px;
color:#777;
}
.copyright {
font-size:11px;
color:#777;
}
.mclose a{
font:bold 16px Verdana;
color:#7f7f7f;
position:absolute;
right:12px;
top:9px;
display:block;
text-decoration:none;
}
.mclose a:hover{
color: #000;
}
#m{
border: 1px solid silver;
padding: 3px;
width: 294px;
border-radius:4px;
font-size: 13px;
background-color: #fff;
}
#m strong{
color:red;
}
</style>

<script language="JavaScript">
var p=top;
function readtxt()
{ if(p!=null)document.forms.mistake.url.value=p.loc
if(p!=null)document.forms.mistake.mis.value=p.mis
}
function hide()
{ var win=p.document.getElementById('mistake');
win.parentNode.removeChild(win);
}
</script>

<?php
if($_POST['submit']) {
# Заголовок сообщения - замените "yousite.ru" на имя своего сайта:

$title = 'Обратная связь';
$ip = getenv('REMOTE_ADDR');
$url = (trim($_POST['url']));
$mis = (trim($_POST['mis']));
$comment = substr(htmlspecialchars(trim($_POST['comment'])), 0, 100000);

$mess = '
<html>
<head>
<title>Ошибка на сайте</title>
</head>
<body>
<strong>Адрес страницы:</strong> <a href="'.$url.'">'.$url.'</a>
<br/>
<strong>Ошибка:</strong> '.$mis.'
<br/>
<strong>Комментарий:</strong> '.$comment.'
<br/>
<strong>IP:</strong> '.$ip.'
'.$_POST['mess'].'
</body>
</html>
';
# Email адрес, на который должны приходить сообщения:
$to = 'termitnet@mail.ru';
# Email адрес, от кого пришло сообщение:
$mymail='termitnet@gmail.com';
# Вместо "yousite.ru" указжите имя вашего сайта:
$from = "From: =?windows-1251?B?". base64_encode("hhide.ru"). "?= < $mymail >\n";
$from .= "X-Sender: < $mymail >\n";
$from .= "Content-Type: text/html; charset=windows-1251\n";

mail($to, $title, $mess, $from);

echo '<div class="mclose"><a href="javascript:void(0)" onclick="hide()" title="Close">&times;</a></div><br><br><br><center>Thank!<br>You massage send.<br><br><br><input onclick="hide()" type="button" value="Close" id="close" name="close"><br><br><br><a class="copyright" href="hhide.ru" target="_blank" title="">hhide.ru</a><center>';
exit();
}
?>

</head>
<body onload=readtxt()>
<div class="mclose"><a href="javascript:void(0)" onclick="hide()" title="Close">&times;</a></div>

<form name="mistake" action="" method=post>

</div>

<span class="text">
Comment (write your mail) :
</span>
<br />
<textarea id="m" rows="18" name="Comment (write your mail)" cols="30"></textarea>
<div style="margin-top: 7px"><input type="submit" value="Enter" name="submit">
<input onclick="hide()" type="button" value="Close" id="close" name="close">
</div>
</form>

</body></html>

Аватар пользователя Сергей

Здравствуйте! Сами пишете об

Здравствуйте! Сами пишете об ошибках, клеймите безграмотность на своём сайте, а сами позволяете себе пропускать запятые. Неавторитетно!
Вот фраза с пропущенными запятыми:
"но в один прекрасный момент вдруг перестал"

Страницы

Добавить комментарий