Как отображать обнаруженные ошибки пользователям, избегая этих распространенных ошибок?

Если ваш веб-сайт перехватывает исключение, о котором вы хотите сообщить пользователям в качестве обратной связи, каков элегантный способ справиться с этим, не сталкиваясь с этими проблемами:

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

  2. Использование ob_start () может гарантировать, что вы печатаете контент только после того, как он был обработан, и нет ошибок, исправляя проблему в 1), но он несет в себе снижение производительности, которого лучше избегать.

  3. Перенаправление на новый или тот же URL-адрес после обнаружения ошибки может работать очень хорошо (например, перенаправление обратно в форму входа в систему, если пользователь отправил неверный пароль, с сообщением об ошибке или на общую страницу для более серьезных ошибок при сбое приложения). ). Это оставляет вас склонным к цепочке перенаправлений ошибок (хотя и рекурсивных), что приведет к истечению времени ожидания запросов, в результате чего пользователь или разработчик вообще не получат четкого сообщения об ошибке. Постоянное перенаправление на ошибки, особенно ошибки сбоя приложения, кажется плохой идеей из-за этого.

  4. Я заметил, что использование ob_clean () БЕЗ ob_start () работает в моем проекте, удаляя отраженный контент уже на странице. Но руководство php утверждает, что оно не должно работать без ob_start () и даже не должно очищать отраженный HTML, просто то, что было в буфере. Что здесь происходит?

  5. Вместо ob_start вы можете сохранить все операторы print / echo в $ array = array (). Насколько я понимаю, снижение производительности меньше, но это может сделать код уродливым.

    Ценим помощь

0

Решение

Что-то, что я делаю, это то, что у меня есть индекс, который включает необходимые страницы, поэтому, например, если вы хотите увидеть страницу контактов, вы бы запросили index.php?page=contact

Код выглядит примерно так

$return_code = 1;
$return_code = include($page.'.php');
if ($return_code != 1) {
echo '<div class="error">'.$return_code.'</div>';
}

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

<?php
// If an error happens, simply
return "Error text";
?>
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]