alan_dangelo            Fri Nov  2 20:25:45 2001 EDT

  Modified files:              
    /phpdoc/it/functions        http.xml 
  Log:
  EN-Revision: 1.29 Traduzione completa del file http.xml - Alan D'Angelo 
  
  
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 @@
+<?xml encoding="iso-8859-1"?>
+<!-- EN-Revision: 1.29 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.
+   </simpara>
+  </partintro>
+
+  <refentry id="function.header">
+   <refnamediv>
+    <refname>header</refname>
+    <refpurpose>Spedisce un header HTTP</refpurpose>
+   </refnamediv>
+   <refsect1>
+    <title>Descrizione</title>
+    <funcsynopsis>
+     <funcprototype>
+      <funcdef>int <function>header</function></funcdef>
+      <paramdef>string <parameter>string</parameter></paramdef>
+      <paramdef>bool <parameter><optional>replace</optional></parameter></paramdef>
+     </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>.
+    </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: 
+
+     <informalexample>
+      <programlisting role="php">
+header('www-authenticate: Negociate');
+header('www-authenticate: NTLM',false);
+      </programlisting>
+     </informalexample>
+    </para>
+    <para>
+     Ci sono due casi speciali di chiamate di headers. Il primo riguarda 
+     &quot;Location&quot;. 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.
+     <informalexample>
+      <programlisting role="php">
+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. */
+      </programlisting>
+     </informalexample>
+    </para>
+    <note>
+     <para>
+      HTTP 1.1 richiede un URI 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:
+      <informalexample>
+       <programlisting>
+header ("Location: http://".$HTTP_SERVER_VARS['HTTP_HOST']
+                       ."/".dirname($HTTP_SERVER_VARS['PHP_SELF'])
+                       ."/".$relative_url);
+       </programlisting>
+      </informalexample>
+     </para>
+    </note>
+    <para>
+     Il secondo caso speciale è esemplificato dalle intestazioni che 
+     iniziano con la stringa, &quot;HTTP/&quot; (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:
+     <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: 
+     <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
+      </programlisting>
+     </informalexample>
+    </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
+     file PHP/HTML.
+     <informalexample>
+      <programlisting role="php">
+&lt;?php require("user_logging.inc") ?>
+
+
+&lt;?php header ("Content-Type: audio/x-pn-realaudio"); ?>
+// Non funziona. Notate le linee vuote sopra
+      </programlisting>
+     </informalexample>
+    </para>    
+    <para>
+     Vedi anche <function>headers_sent</function>
+    </para>
+   </refsect1>
+  </refentry>
+
+  <refentry id="function.headers-sent">
+   <refnamediv>
+    <refname>headers_sent</refname>
+    <refpurpose>Restituisce &true; se gli headers (intestazioni HTTP) sono stati 
+    trasmessi.
+    </refpurpose>
+   </refnamediv>
+   <refsect1>
+    <title>Descrizione</title>
+    <funcsynopsis>
+     <funcprototype>
+      <funcdef>bool <function>headers_sent</function></funcdef>
+      <void/>
+     </funcprototype>
+    </funcsynopsis>
+    <para>
+     Questa funzione restituisce &true; se le intestazioni 
+     <acronym>HTTP</acronym> sono state spedite correttamente, 
+     &false; in caso contrario.
+    </para>
+    <para>
+     Vedi anche <function>header</function>
+    </para>
+   </refsect1>
+  </refentry>
+
+  <refentry id="function.setcookie">
+   <refnamediv>
+    <refname>setcookie</refname>
+    <refpurpose>Spedisce (crea) un cookie verso un client</refpurpose>
+   </refnamediv>
+   <refsect1>
+    <title>Descrizione</title>
+    <funcsynopsis>
+     <funcprototype>
+      <funcdef>int <function>setcookie</function></funcdef>
+      <paramdef>string <parameter>name</parameter></paramdef>
+      <paramdef>string 
+       <parameter><optional>value</optional></parameter>
+      </paramdef>
+      <paramdef>int 
+       <parameter><optional>expire</optional></parameter>
+      </paramdef>
+      <paramdef>string 
+       <parameter><optional>path</optional></parameter>
+      </paramdef>
+      <paramdef>string 
+       <parameter><optional>domain</optional></parameter>
+      </paramdef>
+      <paramdef>int 
+       <parameter><optional>secure</optional></parameter>
+      </paramdef>
+     </funcprototype>
+    </funcsynopsis>
+    <para>
+     <function>setcookie</function> definisce un cookie da inviare insieme 
+     alle altre informazioni <acronym>HTTP</acronym>. 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 
+     qualsiasi tags, anche <literal>&lt;html></literal> o 
+<literal>&lt;head></literal>.
+    </para>
+    <para>
+     Tutti gli argomenti della funzione eccetto <parameter>name</parameter>
+     sono opzionali. Se viene passato alla funzione solo l'argomento 
+<parameter>name</parameter>, 
+     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 (<emphasis>&quot;&quot;</emphasis>). Gli argomenti 
+<parameter>expire</parameter> 
+     e <parameter>secure</parameter> che richiedono numeri interi, non possono essere 
+omessi
+     inserendo una stringa vuota, per questo scopo si usa (<emphasis>0</emphasis>). 
+L'argomento 
+     <parameter>expire</parameter> è un normale intero Unix Timestamp ottenibile 
+grazie alle 
+     funzioni <function>time</function> o <function>mktime</function>. 
+<parameter>secure</parameter>
+     sta ad indicare che il cookie dovrebbe essere trasmesso soltanto attraverso un 
+collegamento 
+     sicuro di tipo HTTPS.
+    </para>
+    <para>
+     Sbagli comuni:
+     <itemizedlist>
+      <listitem>
+       <simpara>
+        I cookie diventano disponibili soltanto dalla pagina successiva a quella
+        che li ha generati, o dopo il ricaricamento di questa. 
+       </simpara>
+      </listitem>
+      <listitem>
+       <simpara>
+        I cookie devono essere cancellati specificando gli stessi parametri con 
+        cui sono stati creati.
+       </simpara>
+      </listitem>
+     </itemizedlist>
+    </para>
+    <simpara>
+     In PHP 3, chiamate successive di <function>setcookie</function>
+     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. 
+    </simpara>
+    <para>
+     Alcuni esempi sul modo di spedire cookie:
+     <example>
+      <title><function>setcookie</function> esempi di spedizione/creazione</title>
+      <programlisting role="php">
+setcookie ("TestCookie", "Test Value");
+setcookie ("TestCookie", $value,time()+3600);  /* aspira in 1 ora */
+setcookie ("TestCookie", $value,time()+3600, "/~rasmus/", ".utoronto.ca", 1);
+      </programlisting>
+     </example>
+    </para>
+    <para>
+     Gli esempi mostrano come cancellare i cookie introdotti nell'esempio precedente:
+     <example>
+      <title><function>setcookie</function> esempi di cancellazione</title>
+      <programlisting role="php">
+setcookie ("TestCookie");
+// set the expiration date to one hour ago
+setcookie ("TestCookie", "", time() - 3600);
+setcookie ("TestCookie", "", time() - 3600, "/~rasmus/", ".utoronto.ca", 1);
+      </programlisting>
+     </example>
+     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.
+    </para>
+    <para>
+     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: 
+     <informalexample>
+      <programlisting role="php">
+echo $TestCookie;
+echo $HTTP_COOKIE_VARS["TestCookie"];
+      </programlisting>
+     </informalexample>
+    </para>
+    <para>
+     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:
+     <informalexample>
+      <programlisting role="php">
+setcookie ("cookie[three]", "cookiethree");
+setcookie ("cookie[two]", "cookietwo");
+setcookie ("cookie[one]", "cookieone");
+if (isset ($cookie)) {
+    while (list ($name, $value) = each ($cookie)) {
+        echo "$name == $value&lt;br>\n";
+    }
+}
+      </programlisting>
+     </informalexample>
+    </para>
+    <para>
+     Per saperne di più sui cookies, Netscape's cookie
+     specification è la risorsa giusta <ulink
+     url="&spec.cookies;">&spec.cookies;</ulink>.
+    </para>
+    <simpara>
+     Microsoft Internet Explorer 4 con Service Pack 1 non 
+     crea correttamente cookie che hanno il parametro 
+     <parameter>path</parameter> specificato.
+    </simpara>
+    <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.
+    </simpara>
+   </refsect1>
+  </refentry>
+ </reference>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:1
+sgml-indent-data:t
+sgml-parent-document:nil
+sgml-default-dtd-file:"../../manual.ced"
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+vim600: syn=xml fen fdm=syntax fdl=2 si
+vim: et tw=78 syn=sgml
+vi: ts=1 sw=1
+-->


Reply via email to