alan_dangelo Sat Nov 3 18:07:10 2001 EDT Modified files: /phpdoc/it/functions http.xml Log: Update the italian translation to EN-Revision 1.31 - Alan D'Angelo.
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 @@ <?xml encoding="iso-8859-1"?> -<!-- EN-Revision: 1.29 Maintainer: alan_dangelo Status: ready --> +<!-- EN-Revision: 1.31 Maintainer: alan_dangelo Status: ready --> <reference id="ref.http"> <title>Funzioni HTTP</title> <titleabbrev>HTTP</titleabbrev> <partintro> <simpara> - 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. </simpara> </partintro> @@ -26,35 +26,32 @@ </funcprototype> </funcsynopsis> <para> - La funzione <function>header</function> si utilizzata in cima ad un - documento <acronym>HTML</acronym> per inviare headers <acronym>HTTP</acronym> - ad un server remoto. Per informazioni dettagliate sul protocollo <acronym>HTTP</acronym> - si vedano la risorsa <ulink url="&spec.http1.1;">HTTP 1.1 specification</ulink>. + <function>header</function> si utilizza per inviare header +<acronym>HTTP</acronym>. + Per maggiorni informazioni riguardanti gli header <acronym>HTTP</acronym> + si veda la risorsa <ulink url="&spec.http1.1;">HTTP 1.1 specification</ulink>. + </para> <para> - L'argomento opzionale <parameter>replace</parameter> 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 <parameter>replace</parameter> assume il valore - &false; vengono forzate intestazioni multiple dello stesso tipo. Per esempio: - + L'argomento opzionale <parameter>replace</parameter> 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: <informalexample> <programlisting role="php"> -header('www-authenticate: Negociate'); -header('www-authenticate: NTLM',false); +header('WWW-Authenticate: Negotiate'); +header('WWW-Authenticate: NTLM',false); </programlisting> </informalexample> </para> <para> - 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 <literal>REDIRECT</literal> con + codice di stato (302). <informalexample> <programlisting role="php"> -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 @@ </para> <note> <para> - HTTP 1.1 richiede un URI assoluto come argomento di + HTTP/1.1 richiede un <acronym>URI</acronym> assoluto come argomento di <ulink url="&spec.http1.1;-sec14.html#sec14.30">Location:</ulink> - 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 <function>dirname</function> - 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 <function>dirname</function> per creare URI assoluti da URI relativi + in modo automatico: <informalexample> <programlisting> header ("Location: http://".$HTTP_SERVER_VARS['HTTP_HOST'] @@ -81,51 +78,120 @@ </note> <para> 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 + <literal>ErrorDocument</literal>), potete desiderare di assicurarvi + che il vostro script generi il codice adeguato. <informalexample> <programlisting role="php"> header ("HTTP/1.0 404 Not Found"); </programlisting> </informalexample> - </para> - <para> - 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: + <note> + <para> + In PHP 3, questo funziona solo se PHP è compilato come modulo + Apache. Potete ottenere lo stesso effetto usando l'header + <literal>Status</literal>. + <informalexample> + <programlisting role="php"> +header("Status: 404 Not Found"); + </programlisting> + </informalexample> + </para> + </note> + </para> + <para> + 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: + <informalexample> <programlisting role="php"> -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 </programlisting> </informalexample> + <note> + <para> + 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. + </para> + <para> + Inoltre, <function>session_cache_limiter</function> e + e la configurazione <literal>session.cache_limiter</literal> + possono essere usate per generare automaticamente i corretti + header relativi al caching durante l'uso delle sessioni. + </para> + </note> </para> <para> Bisogna ricordare che la funzione<function>header</function> va - chiamata prima di qualsiasi output HTML o PHP (anche righe o spazi vuoti). - E' un errore comune leggere files con funzioni <function>include</function>, - o <function>require</function> (o altre funzioni capaci di accedere a files), - che possano emettere in output spazi o linee vuote prima di una chiamata della - funzione <function>header</function>. 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 + <function>include</function>, o <function>require</function> + (o altre funzioni capaci di accedere a files), che possano emettere + in output spazi o linee vuote prima di una chiamata della funzione + <function>header</function>. Lo stesso problema esiste nell'utilizzare file PHP/HTML. <informalexample> <programlisting role="php"> -<?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 </programlisting> </informalexample> + <note> + <para> + 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 <function>ob_start</function> e <function>ob_end_flush</function> + nello script, o settando la direttiva di configurazione + <literal>output_buffering</literal> nel file <filename>php.ini</filename> o + nel file di configurazione del server. + </para> + </note> </para> <para> - Vedi anche <function>headers_sent</function> + Se desiderate che l'utente sia spinto a salvare i dati trasmessi + per esempio utilizzando un file pdf, potete usare + l'header <ulink url="&url.rfc2183;">Content-Disposition</ulink>, che vi + permette di dare un nome al file e forzare il browser a mostrare la finestra + di dialogo save. + <informalexample> + <programlisting role="php"> +<?php +header("Content-type: application/pdf"); +header("Content-Disposition: attachment; filename=downloaded.pdf"); + +/* ... manda all'output un file pdf ... */ + </programlisting> + </informalexample> + <note> + <para> + 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. + </para> + </note> + </para> + <para> + Vedi anche <function>headers_sent</function>, + <function>setcookie</function>, e la sezione + <link linkend="features.http-auth">Autenticazione HTTP usando PHP</link>. </para> </refsect1> </refentry> @@ -133,7 +199,7 @@ <refentry id="function.headers-sent"> <refnamediv> <refname>headers_sent</refname> - <refpurpose>Restituisce &true; se gli headers (intestazioni HTTP) sono stati + <refpurpose>Restituisce &true; se gli header sono stati trasmessi. </refpurpose> </refnamediv> @@ -146,8 +212,8 @@ </funcprototype> </funcsynopsis> <para> - Questa funzione restituisce &true; se le intestazioni - <acronym>HTTP</acronym> sono state spedite correttamente, + Questa funzione restituisce &true; se gli header + <acronym>HTTP</acronym> sono stati spedite correttamente, &false; in caso contrario. </para> <para> @@ -159,7 +225,7 @@ <refentry id="function.setcookie"> <refnamediv> <refname>setcookie</refname> - <refpurpose>Spedisce (crea) un cookie verso un client</refpurpose> + <refpurpose>Spedisce un cookie</refpurpose> </refnamediv> <refsect1> <title>Descrizione</title> @@ -186,7 +252,7 @@ </funcsynopsis> <para> <function>setcookie</function> definisce un cookie da inviare insieme - alle altre informazioni <acronym>HTTP</acronym>. I cookie devono essere spediti + alle altre informazioni di header. I cookie devono essere spediti <emphasis>prima</emphasis> di qualsiasi altra intestazione (questa è una restrizione dei cookies, non di PHP). E' necessario perciò chiamare la funzione <function>setcookie</function> <emphasis>prima</emphasis> di @@ -216,8 +282,7 @@ </listitem> <listitem> <simpara> - 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. </simpara> </listitem> </itemizedlist> @@ -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 <function>setcookie</function> invece, sono eseguite - secondo l'ordine di chiamata. + chiamate successive di <function>setcookie</function> invece, sono eseguite +secondo l'ordine di chiamata. </simpara> <para> Alcuni esempi sul modo di spedire cookie: @@ -300,11 +364,11 @@ <simpara> Netscape Communicator 4.05 e Microsoft Internet Explorer 3.x sembrano utilizzare in modo errato i cookie quando - <parameter>path</parameter> ed <parameter>expire</parameter> - non sono specificati. + <parameter>path</parameter> ed <parameter>expire</parameter> non sono +specificati. </simpara> </refsect1> </refentry> + </reference> <!-- Keep this comment at the end of the file