{"id":9,"date":"2009-05-31T09:45:12","date_gmt":"2009-05-31T09:45:12","guid":{"rendered":"http:\/\/www.vincenzoscognamiglio.it\/informatica\/php-modificare-l-header-anche-dopo-l-inizio-dell-invio-della-risposta\/"},"modified":"2009-05-31T09:45:12","modified_gmt":"2009-05-31T09:45:12","slug":"modificare-l-header-anche-dopo-l-inizio-dell-invio-della-risposta","status":"publish","type":"post","link":"http:\/\/www.vincenzoscognamiglio.it\/informatica\/2009\/05\/31\/modificare-l-header-anche-dopo-l-inizio-dell-invio-della-risposta\/","title":{"rendered":"PHP &#8211; Modificare l&#8217;header anche dopo l&#8217;inizio dell&#8217;invio della risposta"},"content":{"rendered":"<p>Man mano che il server elabora la risposta HTML comincia ad inviare le informazioni di intestazione, ovvero l&#8217;header del protocollo HTTP che contiene informazioni come per, esempio , il content-type e la codifica.<\/p>\n<p>Una volta iniziato l&#8217;invio dell&#8217;header, tendenzialmente, non si possono aggiungere o modificare le intestazioni neanche con la funzione header() del PHP.<\/p>\n<p>Per esempio non possiamo cambiare la location (effettuando un redirect) col seguente codice:<\/p>\n<p><span style=\"color: #006600\">if<\/span><span style=\"color: #000099\">(<\/span><span style=\"color: #000000\">$_POST[&#8216;nomeVar&#8217;] == &#8220;sposta&#8221;<\/span><span style=\"color: #000099\">)<\/span><\/p>\n<p>{<\/p>\n<p>echo &#8220;Adesso ti sposto&#8221;;<br \/>\n<span style=\"color: #0000ff\">header<\/span><span style=\"color: #000099\">(<\/span><span style=\"color: #cc0000\">&#8220;location: daunaltraparte.php&#8221;<\/span><span style=\"color: #000099\">)<\/span>;<\/p>\n<p>}<\/p>\n<p>Quindi <span style=\"color: #000080\"><strong>la soluzione pi\u00f9 valida \u00e8 sicuramente quella di modificare opportunamente il codice per avere gli header tutti in testa<\/strong><\/span> (come suggerisce il nome),<span style=\"color: #000080\"><strong> oppure abilitare il buffering direttamente da codice con le opportune funzioni PHP<\/strong><\/span> (il funzionamento dipende anche dall&#8217;hosting).<\/p>\n<p>Ecco tre soluzioni alternative per abilitare il buffering:<\/p>\n<ol>\n<li>Nel php.iniabilitare l&#8217;opzione <strong><span style=\"color: #000080\">output_buffering = On<\/span><\/strong>.<\/li>\n<li>Abilitare nel codice <span style=\"color: #0000ff\">ini_set<\/span><span style=\"color: #000099\">(<\/span><span style=\"color: #cc0000\">&#8216;output_buffering&#8217;<\/span>, <span style=\"color: #cc0000\">&#8216;On&#8217;<\/span><span style=\"color: #000099\">)<\/span>;<\/li>\n<li>Usare le funzioni <span style=\"color: #0000ff\">ob_start<\/span><span style=\"color: #000099\">(<\/span><span style=\"color: #000099\">)<\/span>, <span style=\"color: #0000ff\">ob_end_flush<\/span><span style=\"color: #000099\">(<\/span><span style=\"color: #000099\">)<\/span>;<\/li>\n<\/ol>\n<p>Il buffering inevitabilmente porter\u00e0 una risposta HTTP inviata leggermente in ritardo al client, solitamente l&#8217;utente non ha alcuna percezione di questi tempi.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Man mano che il server elabora la risposta HTML comincia ad inviare le informazioni di intestazione, ovvero l&#8217;header del protocollo HTTP che contiene informazioni come per, esempio , il content-type e la codifica. Una volta iniziato l&#8217;invio dell&#8217;header, tendenzialmente, non si possono aggiungere o modificare le intestazioni neanche con la funzione header() del PHP. Per [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"ngg_post_thumbnail":0,"footnotes":""},"categories":[11],"tags":[34,41,42,46,97,108,109,127,146,153],"class_list":["post-9","post","type-post","status-publish","format-standard","hentry","category-php","tag-cambiare-content-type","tag-codifica","tag-codificaheader","tag-content-type","tag-header","tag-intestazione","tag-intestazione-di-pagina","tag-modificare-dinamicamente-header","tag-php-2","tag-protocollo-http"],"aioseo_notices":[],"_links":{"self":[{"href":"http:\/\/www.vincenzoscognamiglio.it\/informatica\/wp-json\/wp\/v2\/posts\/9"}],"collection":[{"href":"http:\/\/www.vincenzoscognamiglio.it\/informatica\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.vincenzoscognamiglio.it\/informatica\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.vincenzoscognamiglio.it\/informatica\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.vincenzoscognamiglio.it\/informatica\/wp-json\/wp\/v2\/comments?post=9"}],"version-history":[{"count":1,"href":"http:\/\/www.vincenzoscognamiglio.it\/informatica\/wp-json\/wp\/v2\/posts\/9\/revisions"}],"predecessor-version":[{"id":180,"href":"http:\/\/www.vincenzoscognamiglio.it\/informatica\/wp-json\/wp\/v2\/posts\/9\/revisions\/180"}],"wp:attachment":[{"href":"http:\/\/www.vincenzoscognamiglio.it\/informatica\/wp-json\/wp\/v2\/media?parent=9"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.vincenzoscognamiglio.it\/informatica\/wp-json\/wp\/v2\/categories?post=9"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.vincenzoscognamiglio.it\/informatica\/wp-json\/wp\/v2\/tags?post=9"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}