Как правильно отображать ошибки пользователям? - PullRequest
1 голос
/ 18 февраля 2012

Я создаю большое веб-приложение, и мне нужна приличная система для отображения ошибок пользователям (с использованием PHP и ненавязчивого JavaScript).До сих пор при обнаружении ошибки приложение перенаправляет на страницу error.php и, в зависимости от ссылки, отображает сообщение.

Например, если пользователь отправляет форму в accountCreation.php blankзатем он перенаправляет на www.example.com/error/FIELD_IS_EMPTY, а затем error.php получает сообщение для отображения и печатает его следующим образом:

switch ($_GET['message']) {
case 'FIELD_IS_EMPTY':
    echo "You can't leave the field blank.";
    break;

case 'TOO_LONG':
    echo "Text must be shorter than 128 characters.";
    break;

default:
    break;
}

По крайней мере, это работает, но я не знаю, является ли этомасштабируемый способ сделать это.Кроме того, если кто-то введет www.example.com/error/FIELD_IS_EMPTY, появится сообщение об ошибке, даже если пользователь даже не отправил форму.Кто-нибудь есть какие-либо предложения о том, как сделать это правильно?Спасибо!

Ответы [ 2 ]

0 голосов
/ 18 февраля 2012

Думаете ли вы заблокировать прямой доступ к этой странице простым способом, например: если пользователь заполняет форму, вы создаете константу (например, $_SESSION['formComplete'] = true;), а на странице, где вы хотите контролировать ошибку, вставьте скрипт для проверки, если константа установлена, в противном случае перенаправьте на другую страницу. Здесь есть образец:

if(empty($_SESSION['formComplete'])) {
    header("location:index.php"); 
    die();
}
0 голосов
/ 18 февраля 2012

Лучший способ обработки ошибок - это ошибки

  1. 404, 505, 303, которые можно перенаправить на стандартную страницу ошибок.Который динамически обрабатывает сообщение об ошибке на основе состояния ошибки
  2. Ошибки, связанные с полевой информацией, неправильные записи и в ближайшее время.Обработайте их на той же самой странице и покажите там.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...