Mam plik error.php
dołączony do , który podejmie status błędu HTTP jako zmienną GET. Czy istnieje tablica, która może odwzorowywać kody statusu na nazwy i opisy błędów, czy też muszę sam je napisać?Wstępnie zdefiniowana tablica błędów HTTP do użytku PHP?
Odpowiedz
asocjacyjne wersja tablicy
$http_codes = array(
100 => 'Continue',
101 => 'Switching Protocols',
102 => 'Processing',
103 => 'Checkpoint',
200 => 'OK',
201 => 'Created',
202 => 'Accepted',
203 => 'Non-Authoritative Information',
204 => 'No Content',
205 => 'Reset Content',
206 => 'Partial Content',
207 => 'Multi-Status',
300 => 'Multiple Choices',
301 => 'Moved Permanently',
302 => 'Found',
303 => 'See Other',
304 => 'Not Modified',
305 => 'Use Proxy',
306 => 'Switch Proxy',
307 => 'Temporary Redirect',
400 => 'Bad Request',
401 => 'Unauthorized',
402 => 'Payment Required',
403 => 'Forbidden',
404 => 'Not Found',
405 => 'Method Not Allowed',
406 => 'Not Acceptable',
407 => 'Proxy Authentication Required',
408 => 'Request Timeout',
409 => 'Conflict',
410 => 'Gone',
411 => 'Length Required',
412 => 'Precondition Failed',
413 => 'Request Entity Too Large',
414 => 'Request-URI Too Long',
415 => 'Unsupported Media Type',
416 => 'Requested Range Not Satisfiable',
417 => 'Expectation Failed',
418 => 'I\'m a teapot',
422 => 'Unprocessable Entity',
423 => 'Locked',
424 => 'Failed Dependency',
425 => 'Unordered Collection',
426 => 'Upgrade Required',
449 => 'Retry With',
450 => 'Blocked by Windows Parental Controls',
500 => 'Internal Server Error',
501 => 'Not Implemented',
502 => 'Bad Gateway',
503 => 'Service Unavailable',
504 => 'Gateway Timeout',
505 => 'HTTP Version Not Supported',
506 => 'Variant Also Negotiates',
507 => 'Insufficient Storage',
509 => 'Bandwidth Limit Exceeded',
510 => 'Not Extended'
);
Normal tablica wersja
$http_codes = array(
array(100, 'Continue'),
array(101, 'Switching Protocols'),
array(102, 'Processing'),
array(103, 'Checkpoint'),
array(200, 'OK'),
array(201, 'Created'),
array(202, 'Accepted'),
array(203, 'Non-Authoritative Information'),
array(204, 'No Content'),
array(205, 'Reset Content'),
array(206, 'Partial Content'),
array(207, 'Multi-Status'),
array(300, 'Multiple Choices'),
array(301, 'Moved Permanently'),
array(302, 'Found'),
array(303, 'See Other'),
array(304, 'Not Modified'),
array(305, 'Use Proxy'),
array(306, 'Switch Proxy'),
array(307, 'Temporary Redirect'),
array(400, 'Bad Request'),
array(401, 'Unauthorized'),
array(402, 'Payment Required'),
array(403, 'Forbidden'),
array(404, 'Not Found'),
array(405, 'Method Not Allowed'),
array(406, 'Not Acceptable'),
array(407, 'Proxy Authentication Required'),
array(408, 'Request Timeout'),
array(409, 'Conflict'),
array(410, 'Gone'),
array(411, 'Length Required'),
array(412, 'Precondition Failed'),
array(413, 'Request Entity Too Large'),
array(414, 'Request-URI Too Long'),
array(415, 'Unsupported Media Type'),
array(416, 'Requested Range Not Satisfiable'),
array(417, 'Expectation Failed'),
array(418, 'I\'m a teapot'),
array(422, 'Unprocessable Entity'),
array(423, 'Locked'),
array(424, 'Failed Dependency'),
array(425, 'Unordered Collection'),
array(426, 'Upgrade Required'),
array(449, 'Retry With'),
array(450, 'Blocked by Windows Parental Controls'),
array(500, 'Internal Server Error'),
array(501, 'Not Implemented'),
array(502, 'Bad Gateway'),
array(503, 'Service Unavailable'),
array(504, 'Gateway Timeout'),
array(505, 'HTTP Version Not Supported'),
array(506, 'Variant Also Negotiates'),
array(507, 'Insufficient Storage'),
array(509, 'Bandwidth Limit Exceeded'),
array(510, 'Not Extended')
);
Jeśli serwer WWW Apache jest myślę, że można skonfigurować ErrorHandler jak ../error.php?errno=404&errstr=Not Found
Trzeba napisać to samemu. To proste - użyć http://bignosebird.com/apache/a5.shtml odsyłające
... lub [RFC 2616] (http://tools.ietf.org/html/rfc2616), który byłby bardziej przydatny jako odniesienie ... – Boldewyn
Jeśli pracuje na aplikacji, która ma inne Composer zależności istnieje kilka pakiety, które zawierają wszystkie te informacje dla Ciebie, takie jak: perf/http-status, używane:
// Not Found
(new Http11StatusRepository())->get(404)->getReason();
Jeśli szukasz poręcznej obiektu, Znalazłem ten jeden z here:
<?php
/**
* StatusCodes provides named constants for
* HTTP protocol status codes. Written for the
* Recess Framework (http://www.recessframework.com/)
*
* @author Kris Jordan
* @license MIT
* @package recess.http
*/
class StatusCodes {
// [Informational 1xx]
const HTTP_CONTINUE = 100;
const HTTP_SWITCHING_PROTOCOLS = 101;
// [Successful 2xx]
const HTTP_OK = 200;
const HTTP_CREATED = 201;
const HTTP_ACCEPTED = 202;
const HTTP_NONAUTHORITATIVE_INFORMATION = 203;
const HTTP_NO_CONTENT = 204;
const HTTP_RESET_CONTENT = 205;
const HTTP_PARTIAL_CONTENT = 206;
// [Redirection 3xx]
const HTTP_MULTIPLE_CHOICES = 300;
const HTTP_MOVED_PERMANENTLY = 301;
const HTTP_FOUND = 302;
const HTTP_SEE_OTHER = 303;
const HTTP_NOT_MODIFIED = 304;
const HTTP_USE_PROXY = 305;
const HTTP_UNUSED = 306;
const HTTP_TEMPORARY_REDIRECT = 307;
// [Client Error 4xx]
const errorCodesBeginAt = 400;
const HTTP_BAD_REQUEST = 400;
const HTTP_UNAUTHORIZED = 401;
const HTTP_PAYMENT_REQUIRED = 402;
const HTTP_FORBIDDEN = 403;
const HTTP_NOT_FOUND = 404;
const HTTP_METHOD_NOT_ALLOWED = 405;
const HTTP_NOT_ACCEPTABLE = 406;
const HTTP_PROXY_AUTHENTICATION_REQUIRED = 407;
const HTTP_REQUEST_TIMEOUT = 408;
const HTTP_CONFLICT = 409;
const HTTP_GONE = 410;
const HTTP_LENGTH_REQUIRED = 411;
const HTTP_PRECONDITION_FAILED = 412;
const HTTP_REQUEST_ENTITY_TOO_LARGE = 413;
const HTTP_REQUEST_URI_TOO_LONG = 414;
const HTTP_UNSUPPORTED_MEDIA_TYPE = 415;
const HTTP_REQUESTED_RANGE_NOT_SATISFIABLE = 416;
const HTTP_EXPECTATION_FAILED = 417;
// [Server Error 5xx]
const HTTP_INTERNAL_SERVER_ERROR = 500;
const HTTP_NOT_IMPLEMENTED = 501;
const HTTP_BAD_GATEWAY = 502;
const HTTP_SERVICE_UNAVAILABLE = 503;
const HTTP_GATEWAY_TIMEOUT = 504;
const HTTP_VERSION_NOT_SUPPORTED = 505;
private static $messages = array(
// [Informational 1xx]
100 => '100 Continue',
101 => '101 Switching Protocols',
// [Successful 2xx]
200 => '200 OK',
201 => '201 Created',
202 => '202 Accepted',
203 => '203 Non-Authoritative Information',
204 => '204 No Content',
205 => '205 Reset Content',
206 => '206 Partial Content',
// [Redirection 3xx]
300 => '300 Multiple Choices',
301 => '301 Moved Permanently',
302 => '302 Found',
303 => '303 See Other',
304 => '304 Not Modified',
305 => '305 Use Proxy',
306 => '306 (Unused)',
307 => '307 Temporary Redirect',
// [Client Error 4xx]
400 => '400 Bad Request',
401 => '401 Unauthorized',
402 => '402 Payment Required',
403 => '403 Forbidden',
404 => '404 Not Found',
405 => '405 Method Not Allowed',
406 => '406 Not Acceptable',
407 => '407 Proxy Authentication Required',
408 => '408 Request Timeout',
409 => '409 Conflict',
410 => '410 Gone',
411 => '411 Length Required',
412 => '412 Precondition Failed',
413 => '413 Request Entity Too Large',
414 => '414 Request-URI Too Long',
415 => '415 Unsupported Media Type',
416 => '416 Requested Range Not Satisfiable',
417 => '417 Expectation Failed',
// [Server Error 5xx]
500 => '500 Internal Server Error',
501 => '501 Not Implemented',
502 => '502 Bad Gateway',
503 => '503 Service Unavailable',
504 => '504 Gateway Timeout',
505 => '505 HTTP Version Not Supported'
);
public static function httpHeaderFor($code)
{
return 'HTTP/1.1 ' . self::$messages[$code];
}
public static function getMessageForCode($code)
{
return self::$messages[$code];
}
public static function isError($code)
{
return is_numeric($code) && $code >= self::HTTP_BAD_REQUEST;
}
public static function canHaveBody($code)
{
return
// True if not in 100s
($code < self::HTTP_CONTINUE || $code >= self::HTTP_OK)
&& // and not 204 NO CONTENT
$code != self::HTTP_NO_CONTENT
&& // and not 304 NOT MODIFIED
$code != self::HTTP_NOT_MODIFIED;
}
}
- 1. Tablica HTML do zestawu php
- 2. WKWebView haczyk HTTP kody błędów
- 3. Apache/PHP zwraca kod stanu HTTP 200 na stronach błędów
- 4. tablica przecina dla obiektu tablica php
- 5. Kątowe: obsługa błędów HTTP 404
- 6. Włącza obsługę błędów HTTP IIS7?
- 7. angularjs ReferenceError: $ http nie jest zdefiniowana
- 8. php json_encode duża tablica
- 9. Tablica filtrów PHP
- 10. PHP - pusta tablica
- 11. Wielowymiarowa tablica asocjacyjna (PHP)
- 12. Tablica obiektów PHP
- 13. PHP: fopen obsługi błędów
- 14. Prawidłowy mechanizm wysyłania błędów PHP do klienta
- 15. Angular UI Select, Unikalne wartości wstępnie wybrana tablica
- 16. Klasa - Zdefiniowana przez użytkownika inteligentna tablica o rozmiarze dynamicznym
- 17. Obsługa błędów HTTP: odróżnianie użytkownika offline od innych błędów
- 18. PHP: tablica obiektów - serialize vs json_encode - alternatywy?
- 19. Pobierz dziennik błędów PHP z PHP
- 20. Tablica dynamicznego wyboru w PHP
- 21. Błąd PHP - stała już zdefiniowana DB_HOST?
- 22. Obiekt działający jak tablica? (PHP)
- 23. php wielowymiarowa tablica uzyskać wartości
- 24. Tablica zleceń PHP według podzbioru
- 25. Tablica PHP jako klucz tablicy
- 26. Logi błędów PHP w Heroku
- 27. Scentralizowana obsługa błędów HTTP w Angular 4
- 28. Regeks PHP do usunięcia http: // z ciągu
- 29. PHP nie pokazuje żadnych błędów.
- 30. PHP: HTTP Basic - Wylogowanie
+1 Chociaż łatwiej byłoby mieć tablicę asocjacyjną (np. '$ http_codes = array (100 => 'Continue', ..., 510 => 'Not Extended');' – wimvds
Poza tematem, ale nie będzie łatwiejszy do odczytania i użycia w ten sposób: '$ http_codes = array (100 => 'Continue', 101 => 'Switching Protocols', ...); '(Wiem, że mogę się mylić, ale muszę to wiedzieć) – Shikiryu
@Svisstack u da real mvp! –