dams Tue Jul 10 03:42:19 2001 EDT Modified files: /phpdoc/fr/functions http.xml Log: Updated the setcookie docs
Index: phpdoc/fr/functions/http.xml diff -u phpdoc/fr/functions/http.xml:1.6 phpdoc/fr/functions/http.xml:1.7 --- phpdoc/fr/functions/http.xml:1.6 Sat Jul 7 18:22:09 2001 +++ phpdoc/fr/functions/http.xml Tue Jul 10 03:42:19 2001 @@ -1,100 +1,104 @@ - <reference id="ref.http"> - <title>HTTP</title> - <titleabbrev>HTTP</titleabbrev> - <partintro> +<reference id="ref.http"> + <title>HTTP</title> + <titleabbrev>HTTP</titleabbrev> + <partintro> <simpara> - Ces fonctions permettent de travailler sur les informations transmises - au navigateur, via le protocole HTTP. + Ces fonctions permettent de travailler sur les informations transmises + au navigateur, via le protocole HTTP. </simpara> - </partintro> - <refentry id="function.header"> - <refnamediv> - <refname>header</refname> - <refpurpose>Envoie un entête HTTP.</refpurpose> - </refnamediv> - <refsect1> - <title>Description</title> - <funcsynopsis> + </partintro> + <refentry id="function.header"> + <refnamediv> + <refname>header</refname> + <refpurpose>Envoie une en-tête HTTP.</refpurpose> + </refnamediv> + <refsect1> + <title>Description</title> + <funcsynopsis> + <funcprototype> <funcdef>int <function>header</function></funcdef> <paramdef>string <parameter>string</parameter></paramdef> - </funcsynopsis> - <para> - <function>header</function> permet de spécifier un - entête HTTP lors de l'envoi des fichiers HTML. Reportez vous - à <ulink url="&spec.http1.1;">HTTP 1.1 Specification</ulink> - pour plus d'informations sur les entêtes HTTP. NB : la fonction - <function>header</function> doit être appelée avant la - première balise HTML, et avant n'importe quel envoi de commande - PHP. C'est une erreur très courante que de lire du code avec la - fonction <function>include</function> ou avec auto_prepend et d'avoir - des espaces ou des lignes vides dans ce code qui produisent un - début de sortie avant que <function>header</function> - n'ai été appelé. + </funcprototype> + </funcsynopsis> + <para> + <function>header</function> permet de spécifier une + en-tête HTTP lors de l'envoi des fichiers HTML. Reportez-vous + à <ulink url="&spec.http1.1;">HTTP 1.1 Specification</ulink> + pour plus d'informations sur les en-têtes HTTP. </para> - <para> - Il y a cependant deux entêtes spéciaux. Le premier est - "Location". Non seulement il renvoie un entête au - client, mais en plus, il envoie un statut de redirection à - Apache. Du point de vue de l'auteur de script, cela importe peu, - mais pour ceux qui connaissent les rouages internes d'Apache, c'est - primordial. - <informalexample> - <programlisting role="php"> + <note> + la fonction <function>header</function> doit être appelée avant la + première balise HTML, et avant n'importe quel envoi de commande + PHP. C'est une erreur très courante que de lire du code avec la + fonction <function>include</function> ou avec auto_prepend et d'avoir + des espaces ou des lignes vides dans ce code qui produisent un + début de sortie avant que <function>header</function> + n'ait été appelé. + </note> + <para> + Il y a cependant deux en-têtes spéciales. Le premier est + "Location". Non seulement il renvoie une en-tête au + client, mais en plus, il envoie un statut de redirection à + Apache. Du point de vue de l'auteur de script, cela importe peu, + mais pour ceux qui connaissent les rouages internes d'Apache, c'est + primordial. + <informalexample> + <programlisting role="php"> <?php header("Location: http://www.php.net"); /* Redirige le client vers le site PHP */ exit(); /* Assure que le code ci-dessous n'est jamais exécuté. */ ?> - </programlisting> - </informalexample> - </para> - <para> - Le deuxième type d'appel spécial regroupe tous les - entêtes qui commencent par "HTTP/" (la casse n'est - pas importante). Par exemple, si vous avez votre page d'erreur 404 - Apache qui pointent sur un script PHP, c'est une bonne idée - que de vous assurez que le script PHP génére une erreur - 404. La première chose à dans votre script est : - <informalexample> - <programlisting role="php"> + </programlisting> + </informalexample> + </para> + <para> + Le deuxième type d'appel spécial regroupe toutes les + en-têtes qui commencent par "HTTP/" (la casse n'est + pas importante). Par exemple, si vous avez votre page d'erreur 404 + Apache qui pointe sur un script PHP, c'est une bonne idée + que de vous assurer que le script PHP génère une erreur + 404. La première chose à faire dans votre script est : + <informalexample> + <programlisting role="php"> <?php header("http/1.0 404 Not Found"); ?> - </programlisting> - </informalexample> - </para> - <para> - Les scripts PHP générent souvent du HTML dynamiquement, - qui ne doit pas être mis en cache, ni par le client, ni par les - proxy intermédiaires. On peut forcer la désactivation du - cache de nombreux clients et proxy avec - <informalexample> - <programlisting role="php"> + </programlisting> + </informalexample> + </para> + <para> + Les scripts PHP génèrent souvent du HTML dynamiquement, + qui ne doit pas être mis en cache, ni par le client, ni par les + proxy intermédiaires. On peut forcer la désactivation du + cache de nombreux clients et proxy avec + <informalexample> + <programlisting role="php"> <?php header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date du passé header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // toujours modifié header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 header("Pragma: no-cache"); // HTTP/1.0 ?> - </programlisting> - </informalexample> - </para> - <para> - N'oubliez jamais que <function>header</function> doit être appelée - avant que le moindre contenu ne soit envoyé, soit par des - lignes HTML habituelles dans le fichier, soit par des affichges - PHP. Une erreur très classique est de lire un fichier avec - <function>include</function> ou <function>require</function>, - et de laisser des espaces ou des lignes vides, qui généreront - un affichage avant que la fonction <function>header</function> - ne soit appelée. Le même problème existe avec les fichiers - PHP/HTML standards. - <informalexample> - <programlisting role="php"> + </programlisting> + </informalexample> + </para> + <para> + N'oubliez jamais que <function>header</function> doit être appelée + avant que le moindre contenu ne soit envoyé, soit par des + lignes HTML habituelles dans le fichier, soit par des affichges + PHP. Une erreur très classique est de lire un fichier avec + <function>include</function> ou <function>require</function>, + et de laisser des espaces ou des lignes vides, qui génèreront + un affichage avant que la fonction <function>header</function> + ne soit appelée. Le même problème existe avec les fichiers + PHP/HTML standards. + <informalexample> + <programlisting role="php"> <?php -require("user_logging.inc") + require("user_logging.inc") ?> <?php - header ("Content-Type: audio/x-pn-realaudio"); + header("Content-Type: audio/x-pn-realaudio"); ?> // Erreur : Notez la ligne blanche ci-dessus </programlisting> @@ -141,108 +145,139 @@ <funcsynopsis> <funcdef>int <function>setcookie</function></funcdef> <paramdef>string <parameter>name</parameter></paramdef> - <paramdef>string <parameter>value</parameter></paramdef> - <paramdef>int <parameter>expire</parameter></paramdef> - <paramdef>string <parameter>path</parameter></paramdef> - <paramdef>string <parameter>domain</parameter></paramdef> - <paramdef>int <parameter>secure</parameter></paramdef> - </funcsynopsis> - <para> - <function>setcookie</function> définit un cookie qui sera envoyé - avec le reste des entêtes. Les cookies doivent passer avant tout autre - entête (c'est une restriction des cookies, pas de PHP). Cela vous impose - d'appeler cette fonction avant toute balise <literal><html></literal> - ou <literal><head></literal>. - </para> - <para> - Tous les arguments sauf <parameter>name</parameter> (nom) sont optionnels. - Si seul le nom est présent, le cookie portant ce nom sera - supprimé du client. Vous pouvez aussi utiliser une - chaîne vide comme valeur, pour ignorer un argument. - Le paramètre <parameter>expire</parameter> est un - timestamp UNIX, du même genre que celui retourné par - <function>time</function> ou <function>mktime</function>. - Le paramètre <parameter>secure</parameter> indique - que le cookie doit être uniquement transmis à travers - une connexion HTTPS sécurisée. - </para> - <para> - Erreurs communes: + <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> définit un cookie qui sera envoyé + avec le reste des en-têtes. Les cookies doivent passer avant toute autre + en-tête (c'est une restriction des cookies, pas de PHP). Cela vous impose + d'appeler cette fonction avant toute balise <literal><HTML></literal> + ou <literal><HEAD></literal>. + </para> + <para> + Tous les arguments sauf <parameter>name</parameter> (nom) sont optionnels. + Si seul le nom est présent, le cookie portant ce nom sera + supprimé du navigateur de l'internaute. Vous pouvez aussi utiliser une + chaîne vide comme valeur, pour ignorer un argument. + Le paramètre <parameter>expire</parameter> est un + timestamp UNIX, du même genre que celui retourné par + <function>time</function> ou <function>mktime</function>. + Le paramètre <parameter>secure</parameter> indique + que le cookie doit être uniquement transmis à travers + une connexion HTTPS sécurisée. + </para> + <para> + Erreurs communes : + <itemizedlist> + <listitem> + <simpara> + Les cookies ne seront accessibles qu'au chargement de la prochaine page, + ou au rechargement de la page courante. + </simpara> + </listitem> + <listitem> + <simpara> + Les cookies doivent être effacés avec les mêmes +paramètres + que ceux utilisés lors de leur création. + </simpara> + </listitem> + </itemizedlist> </para> - <simpara> - Les cookies ne seront accessibles qu'au chargement de la prochaîne page. - </simpara> <simpara> - Les appels multiples à <function>setcookie</function> dans la même - page seront réalisés dans l'ordre inverse. Si vous essayez - d'effacer un cookie avant d'insérer une autre valeur, il faut - placer l'insertion avant l'effacement. + En PHP 3, les appels multiples à <function>setcookie</function> dans le + même script seront effectués dans l'ordre inverse. Si vous essayez +d'effacer + un cookie avant d'insérer une nouvelle valeur, vous devez placer +l'insertion + avant l'effacement. En PHP 4, les appels multiples à + <function>setcookie</function> sont effectués dan un ordre naturel. </simpara> - <para> - Quelques exemples : - <example> - <title>Exemples avec <function>setcookie</function></title> - <programlisting role="php"> -<?php -setcookie("TestCookie","Test Value"); -setcookie("TestCookie",$value,time()+3600); /* éxpire dans une heure */ -setcookie("TestCookie",$value,time()+3600,"/~rasmus/",".utoronto.ca",1); + <simpara> + Les appels multiples à <function>setcookie</function> dans la même + page seront réalisés dans l'ordre inverse. Si vous essayez + d'effacer un cookie avant d'insérer une autre valeur, il faut + placer l'insertion avant l'effacement. + </simpara> + <para> + Quelques exemples : + <example> + <title>Exemples avec <function>setcookie</function></title> + <programlisting role="php"> +<?php + setcookie("TestCookie","Valeur de test"); + setcookie("TestCookie",$value,time()+3600); /* expire dans une heure */ + setcookie("TestCookie",$value,time()+3600,"/~rasmus/",".utoronto.ca",1); ?> - </programlisting> - </example> - </para> - <para> - Notez que la partie "valeur" du cookie sera automatiquement - encodée URL lorsque vous envoyez le cookie, et lorsque - vous le recevez, il sera automatiquement décodé, - et affecté à la variable du même nom que - le cookie. Pour voir le résultat, essayez les scripts suivants : - <informalexample> - <programlisting role="php"> + </programlisting> + </example> + </para> + <para> + Notez que la partie "valeur" du cookie sera automatiquement + encodée URL lorsque vous envoyez le cookie, et lorsque + vous le recevez, il sera automatiquement décodé, + et affecté à la variable du même nom que + le cookie. Pour voir le résultat, essayez les scripts suivants : + <informalexample> + <programlisting role="php"> <?php -echo $TestCookie; -echo $HTTP_COOKIE_VARS["TestCookie"]; + echo $TestCookie; + echo $HTTP_COOKIE_VARS["TestCookie"]; ?> - </programlisting> - </informalexample> - </para> - <para> - Vous pouvez aussi utiliser les cookies avec des tableaux, en utilisant la - notation des tableaux. Cela a pour effet de créer autant de - cookie que votre tableau a d'éléments, mais lorsque - les cookies seront reçus par PHP, les valeurs seront - placées dans un tableau : - <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> - Pour d'autres informations sur les cookies, jetez un oeil sur - <ulink url="&spec.cookies;">&spec.cookies;</ulink>. - </para> - <simpara> - Microsoft Internet Explorer 4 utilisé avec le Service Pack 1 - ne gère pas bien les cookies qui possèdent un - paramètre <parameter>path</parameter>. - </simpara> - <simpara> - Netscape Communicator 4.05 et Microsoft Internet Explorer 3.x - semblent ne pas gérer correctement les cookies lorsque - <parameter>path</parameter> et <parameter>time></parameter> ne - sont pas fournis. - </simpara> - </refsect1> - </refentry> - </reference> + </programlisting> + </informalexample> + </para> + <para> + Vous pouvez aussi utiliser les cookies avec des tableaux, en utilisant la + notation des tableaux. Cela a pour effet de créer autant de + cookies que votre tableau a d'éléments, mais lorsque + les cookies seront reçus par PHP, les valeurs seront + placées dans un tableau : + <informalexample> + <programlisting role="php"> +<?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> + Pour d'autres informations sur les cookies, jetez un oeil sur + <ulink url="&spec.cookies;">&spec.cookies;</ulink>. + </para> + <simpara> + Microsoft Internet Explorer 4 utilisé avec le Service Pack 1 + ne gère pas bien les cookies qui possèdent un + paramètre <parameter>path</parameter>. + </simpara> + <simpara> + Netscape Communicator 4.05 et Microsoft Internet Explorer 3.x + semblent ne pas gérer correctement les cookies lorsque + <parameter>path</parameter> et <parameter>time></parameter> ne + sont pas fournis. + </simpara> + </refsect1> + </refentry> +</reference> <!-- Keep this comment at the end of the file Local variables: mode: sgml