<?> PHP NOVA invictum.hr
Izdanje 2026.
Poglavlje 21

HTTP u PHP-u

Povezujemo HTTP metodu, URL, zaglavlja, kolačiće i sesiju s konkretnim PHP kodom koji obrađuje zahtjev.

25 min čitanja Srednje razina PHP 8.5 ciljna verzija

Nakon ovog poglavlja

Što ćete znati napraviti

  • Čitati metodu, putanju, query parametre i zaglavlja zahtjeva.
  • Vratiti odgovarajući status, zaglavlje i tijelo odgovora.
  • Razlikovati kolačić od poslužiteljske sesije.

Granica aplikacije

PHP sastavlja HTTP ulaz iz više izvora

Metoda zahtjeva dostupna je u $_SERVER, parametri URL-a u $_GET, a podaci klasične forme u $_POST. Ti podaci nisu pouzdani ni tipizirani. Čitamo samo očekivane ključeve, provjeravamo oblik i tek tada ih prosljeđujemo dubljem sloju.

GET treba biti siguran za čitanje i ne smije mijenjati stanje. POST stvara ili pokreće obradu, PUT ili PATCH mijenjaju, a DELETE briše. HTML forme izvorno šalju GET ili POST; framework može simulirati ostale metode.

Čitanje zahtjeva
<?php

declare(strict_types=1);

$method = $_SERVER['REQUEST_METHOD'] ?? 'GET';
$path = parse_url($_SERVER['REQUEST_URI'] ?? '/', PHP_URL_PATH);
$page = filter_input(INPUT_GET, 'page', FILTER_VALIDATE_INT) ?: 1;

Jasan rezultat

Status i zaglavlja prije tijela

http_response_code postavlja status, a header zaglavlje. Zaglavlja moraju biti poslana prije prvog ispisa. Za JSON navodimo ispravan Content-Type i kodiramo podatke uz JSON_THROW_ON_ERROR.

Preusmjeravanje je odgovor s Location zaglavljem, najčešće nakon uspješnog POST-a. Obavezno prekinite izvršavanje nakon slanja redirekcije.

JSON odgovor
<?php

header('Content-Type: application/json; charset=utf-8');
http_response_code(200);

echo json_encode(
    ['data' => ['id' => 42, 'title' => 'Moderni PHP']],
    JSON_THROW_ON_ERROR | JSON_UNESCAPED_UNICODE
);

Stanje kroz više zahtjeva

Kolačić putuje, sesija ostaje na serveru

HTTP je bez stanja. Kolačić je mala vrijednost koju preglednik vraća uz buduće zahtjeve. PHP sesija obično u kolačiću drži samo nasumični identifikator, dok podatke sesije čuva na poslužitelju.

Sesijski kolačić za autentikaciju treba imati Secure na HTTPS-u, HttpOnly i prikladan SameSite. Nakon prijave regeneriramo identifikator sesije kako bismo smanjili rizik session fixation napada.

Sigurnija sesija na HTTPS-u
<?php

session_start([
    'cookie_httponly' => true,
    'cookie_secure' => true,
    'cookie_samesite' => 'Lax',
]);

$_SESSION['user_id'] = 17;

Primijenite naučeno

Vježba: Mali JSON endpoint

Napravite endpoint /api/status koji vraća JSON s vremenom i verzijom aplikacije.

  1. Dopustite samo GET i za ostalo vratite 405.
  2. Postavite Content-Type application/json.
  3. Dodajte Cache-Control: no-store jer je rezultat dijagnostički.

Za provjeru i nastavak

Službeni izvori