Index: phpdoc/it/functions/http.xml diff -u phpdoc/it/functions/http.xml:1.10 phpdoc/it/functions/http.xml:1.11 --- phpdoc/it/functions/http.xml:1.10 Fri Nov 2 20:25:45 2001 +++ phpdoc/it/functions/http.xml Sat Nov 3 18:07:10 2001 @@ -1,13 +1,13 @@ - + Funzioni HTTP HTTP - Queste funzioni permettono di manipolare le risposte di un server remoto - verso un client attraverso interazioni (headers) del protocollo HTTP. + Queste funzioni permettono di modificare l'output inviato verso un browser + attraverso manipolazioni a livello di protocollo HTTP. @@ -26,35 +26,32 @@ - La funzione header si utilizzata in cima ad un - documento HTML per inviare headers HTTP - ad un server remoto. Per informazioni dettagliate sul protocollo HTTP - si vedano la risorsa HTTP 1.1 specification. + header si utilizza per inviare header HTTP. + Per maggiorni informazioni riguardanti gli header HTTP + si veda la risorsa HTTP 1.1 specification. + - L'argomento opzionale replace indica se l'intestazione - inviata deve sostituirne una spedita precedentemente dello stesso tipo, o - accodarsi alla prima intestazione. Per default la funzione invia un'intestazione - che rimpiazza la precedente, ma se replace assume il valore - &false; vengono forzate intestazioni multiple dello stesso tipo. Per esempio: - + L'argomento opzionale replace indica se l'header + inviato deve sostituirne uno simile spedito precedentemente, o accodarsi + al primo dello stesso tipo. Per default la funzione sostituisce + l'header precedente, ma se viene passato &false; come secondo argomento + vengono forzate intestazioni multiple. Per esempio: -header('www-authenticate: Negociate'); -header('www-authenticate: NTLM',false); +header('WWW-Authenticate: Negotiate'); +header('WWW-Authenticate: NTLM',false); - Ci sono due casi speciali di chiamate di headers. Il primo riguarda - "Location". Location non trasmette solo un'intestazione al - client browser, ma anche un codice REDIRECT ad un server Apache. Dal - punto di vista della programmazione questa informazione non è importante, - ma per chi conosce il funzionamento di Apache è un aspetto interessante - da sapere. + Ci sono due casi speciali di chiamate di header. Il primo è + "Location". Location non trasmette solo un header al + browser, ma anche un REDIRECT con + codice di stato (302). -header ("Location: http://www.php.net/"); /* Ridireziona il browser +header("Location: http://www.php.net/"); /* Ridireziona il browser al sito di PHP */ exit; /* Assicura che il codice sottostante non sia eseguito dopo il redirezionamento. */ @@ -63,13 +60,13 @@ - HTTP 1.1 richiede un URI assoluto come argomento di + HTTP/1.1 richiede un URI assoluto come argomento di Location: - composto da protocollo, hostname, e path assoluto. Alcuni clients - possono accettare anche URIs relativi, ma è bene non fare affidamento - su questa eccezione. E' possibile usare $HTTP_SERVER_VARS['HTTP_HOST'], - $HTTP_SERVER_VARS['PHP_SELF'] e dirname - per creare URI assoluti da URI relativi in modo automatico: + composto da schema, hostname, e path assoluto, ma alcuni clients + possono accettare anche URIs relativi. E' possibile usare + $HTTP_SERVER_VARS['HTTP_HOST'], $HTTP_SERVER_VARS['PHP_SELF'] + e dirname per creare URI assoluti da URI relativi + in modo automatico: header ("Location: http://".$HTTP_SERVER_VARS['HTTP_HOST'] @@ -81,51 +78,120 @@ Il secondo caso speciale è esemplificato dalle intestazioni che - iniziano con la stringa, "HTTP/" (questo non è un esempio). - Per esempio, se si riceve la direttiva Apache ErrorDocument 404 puntando - ad un nostro script PHP, è una buona idea assicurarsi che sia veramente - stato lo script a generare l'errore 404. La prima cosa da fare è - inserire nello script la seguente intestazione: + iniziano con la stringa, "HTTP/" (le maiuscole non sono + discriminanti), che è usato per inviare codici di stato HTTP. + Per esempio, se si è configurato Apache per usare script PHP per la + manipolazione di richieste fallite (usando la direttiva + ErrorDocument), potete desiderare di assicurarvi + che il vostro script generi il codice adeguato. header ("HTTP/1.0 404 Not Found"); - - - Spesso gli scrit PHP generano HTML dinamico, se volete evitare che i - contenuti dinamici vengano mantenuti nella cache di browser o proxy, - potete forzare il loro comportamento con questa direttiva: + + + In PHP 3, questo funziona solo se PHP è compilato come modulo + Apache. Potete ottenere lo stesso effetto usando l'header + Status. + + +header("Status: 404 Not Found"); + + + + + + + Spesso gli scrit PHP generano contenuti dinamici, se volete evitare che i + contenuti vengano mantenuti nella cache di browser o proxy, + potete forzare il loro comportamento con questa direttiva: + -header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Data passata -header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); - // continuamente modificato -header ("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 -header ("Pragma: no-cache"); // HTTP/1.0 +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past +header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); + // always modified +header("Cache-Control: no-store, no-cache, must-revalidate"); // HTTP/1.1 +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); // HTTP/1.0 + + + E' possibile che alcune pagine rimangano in chache anche dopo + l'uso degli header descritti sopra. Ci sono delle opzioni che + l'utente può settare dal browser, capaci di modificare i comportamenti + di default del caching. Per trasmettere efficacemente gli header + descritti, bisogna che sia inattiva ogni regolazione che può forzare + comportamenti contrari. + + + Inoltre, session_cache_limiter e + e la configurazione session.cache_limiter + possono essere usate per generare automaticamente i corretti + header relativi al caching durante l'uso delle sessioni. + + Bisogna ricordare che la funzioneheader va - chiamata prima di qualsiasi output HTML o PHP (anche righe o spazi vuoti). - E' un errore comune leggere files con funzioni include, - o require (o altre funzioni capaci di accedere a files), - che possano emettere in output spazi o linee vuote prima di una chiamata della - funzione header. Lo stesso problema esiste nell'utilizzare + chiamata prima di qualsiasi output HTML o PHP (anche righe o spazi + vuoti). E' un errore comune leggere files con funzioni + include, o require + (o altre funzioni capaci di accedere a files), che possano emettere + in output spazi o linee vuote prima di una chiamata della funzione + header. Lo stesso problema esiste nell'utilizzare file PHP/HTML. -<?php require("user_logging.inc") ?> +<?php require("user_logging.inc") ?> -<?php header ("Content-Type: audio/x-pn-realaudio"); ?> +<?php header ("Content-type: audio/x-pn-realaudio"); ?> // Non funziona. Notate le linee vuote sopra + + + In PHP 4, potete usare il buffering dell'output per aggirare + questo problema, evitando ogni output al browser trattenedolo + al server fino a che non gli si impone l'invio. Si può fare questa operazione + chiamando ob_start e ob_end_flush + nello script, o settando la direttiva di configurazione + output_buffering nel file php.ini o + nel file di configurazione del server. + + - Vedi anche headers_sent + Se desiderate che l'utente sia spinto a salvare i dati trasmessi + per esempio utilizzando un file pdf, potete usare + l'header Content-Disposition, che vi + permette di dare un nome al file e forzare il browser a mostrare la finestra + di dialogo save. + + +<?php +header("Content-type: application/pdf"); +header("Content-Disposition: attachment; filename=downloaded.pdf"); + +/* ... manda all'output un file pdf ... */ + + + + + Per un bug di Microsoft Internet Explorer 4.01 qusto sistema + non funziona. Non ci sono soluzioni. C'è un altro bug in Microsoft + Internet Explorer 5.5 che impedisce il giusto funzionamento, + ma è possibile risolverlo con l'upgrade del Service Pack 2 o superiore. + + + + + Vedi anche headers_sent, + setcookie, e la sezione + Autenticazione HTTP usando PHP. @@ -133,7 +199,7 @@ headers_sent - Restituisce &true; se gli headers (intestazioni HTTP) sono stati + Restituisce &true; se gli header sono stati trasmessi. @@ -146,8 +212,8 @@ - Questa funzione restituisce &true; se le intestazioni - HTTP sono state spedite correttamente, + Questa funzione restituisce &true; se gli header + HTTP sono stati spedite correttamente, &false; in caso contrario. @@ -159,7 +225,7 @@ setcookie - Spedisce (crea) un cookie verso un client + Spedisce un cookie Descrizione @@ -186,7 +252,7 @@ setcookie definisce un cookie da inviare insieme - alle altre informazioni HTTP. I cookie devono essere spediti + alle altre informazioni di header. I cookie devono essere spediti prima di qualsiasi altra intestazione (questa è una restrizione dei cookies, non di PHP). E' necessario perciò chiamare la funzione setcookie prima di @@ -216,8 +282,7 @@ - I cookie devono essere cancellati specificando gli stessi parametri con - cui sono stati creati. + I cookie devono essere cancellati specificando gli stessi parametri con cui sono stati creati. @@ -227,8 +292,7 @@ nello stesso script sono eseguite in ordine inverso. Se state provando a cancellare un cookie prima dell' inserimento di un altro cookie, dovete creare il secondo prima della cancellazione del primo. In PHP 4, - chiamate successive di setcookie invece, sono eseguite - secondo l'ordine di chiamata. + chiamate successive di setcookie invece, sono eseguite secondo l'ordine di chiamata. Alcuni esempi sul modo di spedire cookie: @@ -300,11 +364,11 @@ Netscape Communicator 4.05 e Microsoft Internet Explorer 3.x sembrano utilizzare in modo errato i cookie quando - path ed expire - non sono specificati. + path ed expire non sono specificati. +