Il web funziona secondo il modello Client-Server:
┌──────────────┐ Richiesta HTTP ┌─────────────────────────────┐
│ Browser │ ───────────────────→ │ Web Server (Apache/Nginx) │
│ (Client) │ ←─────────────────── │ + PHP │
└──────────────┘ Risposta HTTP │ + MySQL │
(HTML generato) └─────────────────────────────┘
Il client (browser) non vede mai il codice PHP né le credenziali del database: riceve solo l’HTML generato.
HTTP (HyperText Transfer Protocol) è il protocollo di comunicazione del web. Definisce il formato delle richieste e delle risposte tra client e server. È un protocollo stateless: ogni richiesta è indipendente dalle precedenti (il server non ricorda le richieste precedenti senza meccanismi aggiuntivi come cookie e sessioni).
Struttura di una richiesta HTTP:
GET /studenti.php?classe=5A HTTP/1.1
Host: www.scuola.it
User-Agent: Mozilla/5.0 (Chrome/...)
Accept: text/html,application/xhtml+xml
Struttura di una risposta HTTP:
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 2450
<!DOCTYPE html>
<html>...</html>
| Metodo | Scopo | Dati inviati | Idempotente? |
|---|---|---|---|
| GET | Richiedere dati | Nell’URL (query string) | Sì |
| POST | Inviare dati per creare/elaborare | Nel body della richiesta | No |
| PUT | Aggiornare (sostituzione completa) | Nel body | Sì |
| PATCH | Aggiornamento parziale | Nel body | No |
| DELETE | Eliminare una risorsa | Nell’URL | Sì |
Differenza fondamentale GET vs POST:
GET: i dati sono visibili nell’URL, possono essere salvati nella cronologia e messi nei bookmark. Adatto per ricerche, filtri, navigazione.POST: i dati sono nel body, non visibili nell’URL. Adatto per login, invio di form, upload, operazioni che modificano lo stato del server.| Codice | Categoria | Esempi comuni |
|---|---|---|
| 2xx | Successo | 200 OK, 201 Created, 204 No Content |
| 3xx | Reindirizzamento | 301 Moved Permanently, 302 Found |
| 4xx | Errore del client | 400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found |
| 5xx | Errore del server | 500 Internal Server Error, 503 Service Unavailable |