За последние 24 часа нас посетили 5169 программистов и 680 роботов. Сейчас ищет 171 программист ...

код ошибки в ответе

Тема в разделе "PHP для новичков", создана пользователем vikrorpert, 13 авг 2019 в 10:52.

  1. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    934
    Симпатии:
    9
    как правильно отдавать код ошибки на сайте?
    если страница не найдена тогда код 404
    а в остальных случаях?
    показать страницу с ошибкой и отдать код 200?
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.834
    Симпатии:
    946
    Чисто логически 200 это когда контент отдаётся без проблем вообще. Если есть ошибки, то статус 200 не логичен - там из 5хх серии должно быть, если ошибки сервера.

    А что значит правильно отдавать? Есть функция, которая устанавливает статус ответа - http_response_code - её вполне достаточно.
     
  3. vvas

    vvas Новичок

    С нами с:
    9 апр 2018
    Сообщения:
    5
    Симпатии:
    0
    Есть множество остальных случаев, смотри что тебе подходит: Список кодов состояния HTTP

    Например, если ты закрыл сайт на обслуживание, выставь код 503 Service Unavailable чтобы поисковики не торопились испортить твои проиндексированные странички.

    204 No Content можно вернуть на запрос обновления данных, если всё прошло успешно и ты не хочешь выдавать какой-то контент, просто сигналишь "всё прошло нормуль".
    и т.д.
     
  4. miketomlin

    miketomlin Активный пользователь

    С нами с:
    9 авг 2016
    Сообщения:
    1.726
    Симпатии:
    256
    Для обычных страниц без HTTP-авторизации достаточно кодов ошибок 404 и 503. 503 – это любой сбой, связанный с «неготовностью» данных, т.е. когда есть шанс через нек. время нажать «Обновить» (или выполнить аналогичный запрос) и получить ответ 200. Естественно, не беру в расчет ошибки, возвращаемые сервером, минуя скрипт (500, 501 и т.п.).

    P.S. Сеошники иногда любят поиграться с 410, как альтернативой 404.
    --- Добавлено ---
    P.P.S. Типичным источником 503 является работа с БД. Это рабочая альтернатива всяких die'ев. Некоторые еще умудряются врем. редирект при ошибках БД делать, но по-моему это от безысходности :)
     
  5. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    934
    Симпатии:
    9
    например если ввели неправильный пароль, то разве надо показывать ошибку 503?
    а если урл принимает только post или ajax, а его открыли через гет, тоже 503?
     
  6. miketomlin

    miketomlin Активный пользователь

    С нами с:
    9 авг 2016
    Сообщения:
    1.726
    Симпатии:
    256
    ??? Ответ на любой ввод, не считая AJAX, – редирект.

    Точно не 503 именно из-за этого. Это некорректный запрос. 404 или даже 200 при попытки отдать ответ независимо от типа поступившего запроса. 503 может возникать походу по причине, о кот. я выше писал, например не получилось сохранить данные в БД в ответ на POST, можно где-то не «пользовательскую» ошибку формировать (с редиректом и т.п.), а выдать 503-юю (и даже на ней приписать «Нажмите Обновить» – есть шанс не потерять данные, т.к. браузер их обычно сохраняет, пока не получит успешный ответ). Вообще же у нас в конторе принято POST, AJAX GET/POST совмещать с GET, т.е. POST-обработчика без GET-обработчика не бывает, при отсутствии спец. POST-обработчика отрабатывает GET-обработчик (POST считается GETом).
     
  7. miketomlin

    miketomlin Активный пользователь

    С нами с:
    9 авг 2016
    Сообщения:
    1.726
    Симпатии:
    256
    503-яя была бы только в случае, если бы сбой произошел при попытке достать данные из БД для сверки, например когда база заблокирована из-за чрезмерной нагрузки.