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 HTTPHTTP
- 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 cookieDescrizione
@@ -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 setcookieprima 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.
+