Ce face http_response_code
Fiecare răspuns HTTP are un cod de stare: 200 (OK), 201 (creat), 301 (mutat permanent), 404 (nu există), 403 (acces interzis), 422 (date invalide), 500 (eroare de server). Motoarele de căutare și aplicațiile care îți folosesc API-ul se bazează pe el.
Cu un parametru, http_response_code setează codul. Fără parametru, îl returnează pe cel curent. Ca și header, trebuie apelată înainte de orice afișare.
Parametri
| Parametru | Descriere |
|---|---|
$response_code |
Opțional. Codul de setat. |
Ce returnează
Fără parametru: codul curent sau false dacă nu a fost setat (de exemplu în CLI). Cu parametru: codul anterior, sau true dacă nu exista unul.
Exemple
Exemplul 1: Pagina 404 pentru un articol care nu există
Fără codul 404, Google ar indexa pagina de eroare ca pe o pagină normală.
<?php
$articol = null; // nu l-am găsit în baza de date
if ($articol === null) {
http_response_code(404);
echo "<h1>Articolul nu există</h1>";
exit;
}
Răspunsul HTTP primit de browser
HTTP/1.1 404 Not Found
Content-Type: text/html; charset=UTF-8
<h1>Articolul nu există</h1>
Exemplul 2: Erori de validare într-un API
<?php
header("Content-Type: application/json; charset=utf-8");
$email = "ana@";
if (filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
http_response_code(422);
echo json_encode(["eroare" => "Email invalid"]);
exit;
}
http_response_code(201);
echo json_encode(["succes" => true]);
Răspunsul HTTP primit de browser
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json; charset=utf-8
{"eroare":"Email invalid"}
Exemplul 3: Citirea codului setat
<?php
http_response_code(503);
$cod = http_response_code();
echo "Codul răspunsului: $cod";
Rezultat
Codul răspunsului: 503
Greșeli frecvente
- Afișezi un mesaj de eroare, dar lași codul implicit 200. Pentru browser, motoare de căutare și aplicații, pagina pare reușită.
- Apelezi funcția după ce ai afișat deja ceva. Primești
Cannot set response code - headers already sent.
Comenzi înrudite
header: Trimite un antet HTTP către browser: redirecționare, tipul conținutului, descărcare de fișier, cache.headers_sent / headers_list: Verifică dacă antetele HTTP au fost deja trimise și îți spune în ce fișier și pe ce linie a început afișarea.get_headers: Face o cerere către un URL și returnează antetele HTTP ale răspunsului. Util pentru a verifica dacă o pagină există.