⊗ppPmHpRHP 400 of 447 menu

Problema con gli header della risposta HTTP in PHP

Secondo le regole HTTP, prima vengono inviati gli header HTTP, e poi il corpo della risposta HTTP. Per questo motivo, lavorare con la funzione header in PHP ha le sue particolarità.

Il fatto è che se prima della chiamata a questa funzione c'è qualche output a schermo, esso verrà interpretato come l'inizio del corpo della risposta. In questo caso, la chiamata alla funzione header porterà a un avviso di PHP con il testo headers already sent. In questo caso, gli header potrebbero anche essere inviati. Potrebbe anche non essere visualizzato alcun errore (dipende dalle impostazioni di PHP). Ma molto spesso ciò accade solo in ambiente di sviluppo locale, mentre quando il sito viene pubblicato su Internet tutto si romperà.

Per output a schermo si intende qualsiasi testo. Ad esempio, così:

text <?php header('Content-Type: text/html'); ?>

O una riga vuota:

<?php header('Content-Type: text/html'); ?>

O uno spazio:

<?php header('Content-Type: text/html'); ?>

O un tag:

<div> <?php header('Content-Type: text/html'); ?> </div>

O l'output tramite echo:

<?php echo 'abc'; header('Content-Type: text/html'); ?>

O l'output tramite var_dump:

<?php $str = 'abc'; var_dump($str); header('Content-Type: text/html'); ?>

Anche gli avvisi di PHP saranno output a schermo. Nel seguente esempio viene intenzionalmente effettuato un accesso a una variabile inesistente, il che porterà all'output di un avviso:

<?php $text += 1; header('Content-Type: text/html'); ?>

Anche l'alternarsi dei tag PHP genera output a schermo:

<?php echo 'abc'; ?> <?php header('Content-Type: text/html'); ?>

Create intenzionalmente un output a schermo prima della funzione header. Studiate il testo dell'errore che si verifica.

Correggete l'errore commesso in questo codice:

<!DOCTYPE html> <html> <head> <?php header('Content-Type: text/html'); ?> </head> <body> text <body> <html>
Italiano
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesia日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Utilizziamo i cookie per il funzionamento del sito, l'analisi e la personalizzazione. I dati vengono elaborati in conformità con la Politica sulla privacy.
accetta tutto personalizza rifiuta