alan_dangelo Sun Nov 25 10:14:24 2001 EDT Modified files: /phpdoc/it/functions http.xml Log: Update the italian translation to EN-Revision 1.33
Index: phpdoc/it/functions/http.xml diff -u phpdoc/it/functions/http.xml:1.12 phpdoc/it/functions/http.xml:1.13 --- phpdoc/it/functions/http.xml:1.12 Sat Nov 10 16:50:02 2001 +++ phpdoc/it/functions/http.xml Sun Nov 25 10:14:18 2001 @@ -1,392 +1,417 @@ -<?xml version="1.0" encoding="iso-8859-1"?> -<!-- 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 modificare l'output inviato verso un browser - attraverso manipolazioni a livello di 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> - <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'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: Negotiate'); -header('WWW-Authenticate: NTLM',false); - </programlisting> - </informalexample> - </para> - <para> - 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 - 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 <acronym>URI</acronym> assoluto come argomento di - <ulink url="&spec.http1.1;-sec14.html#sec14.30">Location:</ulink> - 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'] - ."/".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, "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> - <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"); // 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 - file PHP/HTML. - <informalexample> - <programlisting role="php"> -<?php require("user_logging.inc") ?> - - -<?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> - 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> - - <refentry id="function.headers-sent"> - <refnamediv> - <refname>headers_sent</refname> - <refpurpose>Restituisce &true; se gli header 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 gli header - <acronym>HTTP</acronym> sono stati 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 un cookie</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 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 - qualsiasi tags, anche <literal><html></literal> o <literal><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>""</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<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 ---> +<?xml version="1.0" encoding="iso-8859-1"?> +<!-- EN-Revision: 1.33 Maintainer: alan_dangelo Status: ready --> + <reference id="ref.http"> + <title>Funzioni HTTP</title> + <titleabbrev>HTTP</titleabbrev> + + <partintro> + <simpara> + Queste funzioni permettono di modificare l'output inviato verso un browser + attraverso manipolazioni a livello di 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> + <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'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"> +<![CDATA[ +header('WWW-Authenticate: Negotiate'); +header('WWW-Authenticate: NTLM',false); +]]> + </programlisting> + </informalexample> + </para> + <para> + 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"> +<![CDATA[ +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 <acronym>URI</acronym> assoluto come argomento di + <ulink url="&spec.http1.1;-sec14.html#sec14.30">Location:</ulink> + 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> +<![CDATA[ +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, "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"> +<![CDATA[ +header ("HTTP/1.0 404 Not Found"); +]]> + </programlisting> + </informalexample> + <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"> +<![CDATA[ +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"> +<![CDATA[ +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 + file PHP/HTML. + <informalexample> + <programlisting role="php"> +<![CDATA[ +<?php require("user_logging.inc") ?> + + +<?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> + 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"> +<![CDATA[ +<?php +header("Content-type: application/pdf"); +header("Content-Disposition: attachment; filename=downloaded.pdf"); + +/* ... manda in 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> + + <refentry id="function.headers-sent"> + <refnamediv> + <refname>headers_sent</refname> + <refpurpose>Restituisce &true; se gli header 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 gli header <acronym>HTTP</acronym> + sono stati 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 un cookie</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 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 + qualsiasi tags, anche <literal><html></literal> o +<literal><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>""</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"> +<![CDATA[ +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"> +<![CDATA[ +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"> +<![CDATA[ +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"> +<![CDATA[ +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"; + } +} +]]> + </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 +--> +