PHP Output non HTML da server web


Esempio

In alcuni casi, quando si lavora con un server Web, potrebbe essere necessario ignorare il tipo di contenuto predefinito del server Web. Potrebbero esserci casi in cui è necessario inviare dati come plain text , JSON o XML , ad esempio.

La funzione header() può inviare un'intestazione HTTP non elaborata. È possibile aggiungere l'intestazione Content-Type per notificare al browser il contenuto che stiamo inviando.

Considera il seguente codice, in cui impostiamo Content-Type come text/plain :

header("Content-Type: text/plain");
echo "Hello World";

Questo produrrà un documento di testo semplice con il seguente contenuto:

Ciao mondo

Per produrre contenuti JSON , utilizzare invece il tipo di contenuto application/json :

header("Content-Type: application/json");

// Create a PHP data array.
$data = ["response" => "Hello World"];

// json_encode will convert it to a valid JSON string.
echo json_encode($data);

Questo produrrà un documento di tipo application/json con il seguente contenuto:

{"risposta": "Hello World"}

Si noti che la funzione header() deve essere chiamata prima che PHP produca qualsiasi output, oppure il server Web avrà già inviato le intestazioni per la risposta. Quindi, considera il seguente codice:

// Error: We cannot send any output before the headers
echo "Hello";

// All headers must be sent before ANY PHP output
header("Content-Type: text/plain");
echo "World";

Questo produrrà un avvertimento:

Attenzione: impossibile modificare le informazioni dell'intestazione - le intestazioni già inviate da (l'output è stato avviato su /dir/example.php:2) in /dir/example.php sulla riga 3

Quando si usa header() , il suo output deve essere il primo byte che viene inviato dal server. Per questo motivo è importante non avere linee o spazi vuoti all'inizio del file prima del tag di apertura PHP <?php . Per lo stesso motivo, è considerato best practice (vedere PSR-2 ) omettere il tag di chiusura PHP ?> Dai file che contengono solo PHP e da blocchi di codice PHP alla fine di un file.

Visualizza la sezione del buffer di output per sapere come "catturare" il tuo contenuto in una variabile da pubblicare successivamente, ad esempio, dopo aver emesso le intestazioni.