Index: phpdoc/it/functions/http.xml
diff -u /dev/null phpdoc/it/functions/http.xml:1.10
--- /dev/null Fri Nov 2 20:25:45 2001
+++ phpdoc/it/functions/http.xml Fri Nov 2 20:25:45 2001
@@ -0,0 +1,328 @@
+
+
+
+ Funzioni HTTP
+ HTTP
+
+
+
+ Queste funzioni permettono di manipolare le risposte di un server remoto
+ verso un client attraverso interazioni (headers) del protocollo HTTP.
+
+
+
+
+
+ header
+ Spedisce un header HTTP
+
+
+ Descrizione
+
+
+ int header
+ string string
+ bool replace
+
+
+
+ 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.
+
+
+ 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:
+
+
+
+header('www-authenticate: Negociate');
+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.
+
+
+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. */
+
+
+
+
+
+ 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:
+
+
+header ("Location: http://".$HTTP_SERVER_VARS['HTTP_HOST']
+ ."/".dirname($HTTP_SERVER_VARS['PHP_SELF'])
+ ."/".$relative_url);
+
+
+
+
+
+ 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:
+
+
+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:
+
+
+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
+
+
+
+
+ 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
+ file PHP/HTML.
+
+
+<?php require("user_logging.inc") ?>
+
+
+<?php header ("Content-Type: audio/x-pn-realaudio"); ?>
+// Non funziona. Notate le linee vuote sopra
+
+
+
+
+ Vedi anche headers_sent
+
+
+
+
+
+
+ headers_sent
+ Restituisce &true; se gli headers (intestazioni HTTP) sono stati
+ trasmessi.
+
+
+
+ Descrizione
+
+
+ bool headers_sent
+
+
+
+
+ Questa funzione restituisce &true; se le intestazioni
+ HTTP sono state spedite correttamente,
+ &false; in caso contrario.
+
+
+ Vedi anche header
+
+
+
+
+
+
+ setcookie
+ Spedisce (crea) un cookie verso un client
+
+
+ Descrizione
+
+
+ int setcookie
+ string name
+ string
+ value
+
+ int
+ expire
+
+ string
+ path
+
+ string
+ domain
+
+ int
+ secure
+
+
+
+
+ setcookie definisce un cookie da inviare insieme
+ alle altre informazioni HTTP. 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
+ qualsiasi tags, anche <html> o <head>.
+
+
+ Tutti gli argomenti della funzione eccetto name
+ sono opzionali. Se viene passato alla funzione solo l'argomento name,
+ il cookie registrato con quel nome verrà cancellato dal client su cui è archiviato.
+ E' possibile sostituire gli argomenti che non si intende specificare utitlizzando una
+ stringa vuota (""). Gli argomenti expire
+ e secure che richiedono numeri interi, non possono essere omessi
+ inserendo una stringa vuota, per questo scopo si usa (0). L'argomento
+ expire è un normale intero Unix Timestamp ottenibile grazie alle
+ funzioni time o mktime. secure
+ sta ad indicare che il cookie dovrebbe essere trasmesso soltanto attraverso un collegamento
+ sicuro di tipo HTTPS.
+
+
+ Sbagli comuni:
+
+
+
+ I cookie diventano disponibili soltanto dalla pagina successiva a quella
+ che li ha generati, o dopo il ricaricamento di questa.
+
+
+
+
+ I cookie devono essere cancellati specificando gli stessi parametri con
+ cui sono stati creati.
+
+
+
+
+
+ In PHP 3, chiamate successive di setcookie
+ 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.
+
+
+ Alcuni esempi sul modo di spedire cookie:
+
+ setcookie esempi di spedizione/creazione
+
+setcookie ("TestCookie", "Test Value");
+setcookie ("TestCookie", $value,time()+3600); /* aspira in 1 ora */
+setcookie ("TestCookie", $value,time()+3600, "/~rasmus/", ".utoronto.ca", 1);
+
+
+
+
+ Gli esempi mostrano come cancellare i cookie introdotti nell'esempio precedente:
+
+ setcookie esempi di cancellazione
+
+setcookie ("TestCookie");
+// set the expiration date to one hour ago
+setcookie ("TestCookie", "", time() - 3600);
+setcookie ("TestCookie", "", time() - 3600, "/~rasmus/", ".utoronto.ca", 1);
+
+
+ Per cancellare un cookie dovete assicurarvi che la data di scadenza del
+ cookie sia già trascorsa, in questo modo il cookie verrà rimosso dal client.
+
+
+ Si noti che i valori salvati nei cookies sono automaticamente codificati
+ per la trasmissione via URL (urlencoded) quando il cookie viene inviato,
+ e che al momento del richiamo sono automaticamente decodificati e assegnati ad
+ una variabile che ha lo stesso nome del cookie. Per vedere il contenuto di
+ un cookie in uno script, si usa una di queste due sintassi:
+
+
+echo $TestCookie;
+echo $HTTP_COOKIE_VARS["TestCookie"];
+
+
+
+
+ Potete registrare array in un cookie usando la notazione degli array
+ al posto del nome del cookie. Questo equivale alla spedizione di tanti
+ cookie quanti sono gli elementi dell'array, ma si ha un vantaggio: quando
+ il cookie è ricevuto, tutti i suoi valori sono ordinati in un singolo array
+ che ha per nome il nome del cookie:
+
+
+setcookie ("cookie[three]", "cookiethree");
+setcookie ("cookie[two]", "cookietwo");
+setcookie ("cookie[one]", "cookieone");
+if (isset ($cookie)) {
+ while (list ($name, $value) = each ($cookie)) {
+ echo "$name == $value<br>\n";
+ }
+}
+
+
+
+
+ Per saperne di più sui cookies, Netscape's cookie
+ specification è la risorsa giusta &spec.cookies;.
+
+
+ Microsoft Internet Explorer 4 con Service Pack 1 non
+ crea correttamente cookie che hanno il parametro
+ path specificato.
+
+
+ Netscape Communicator 4.05 e Microsoft Internet Explorer 3.x
+ sembrano utilizzare in modo errato i cookie quando
+ path ed expire
+ non sono specificati.
+
+
+
+
+
+