dams Fri Jan 12 02:50:56 2001 EDT
Modified files:
/phpdoc/fr/features connection-handling.xml cookies.xml
error-handling.xml file-upload.xml
http-auth.xml images.xml
persistent-connections.xml remote-files.xml
Log:
Typos fixed.
TRUE/FALSE -> LITERAL
Index: phpdoc/fr/features/connection-handling.xml
diff -u phpdoc/fr/features/connection-handling.xml:1.3
phpdoc/fr/features/connection-handling.xml:1.4
--- phpdoc/fr/features/connection-handling.xml:1.3 Mon Nov 20 10:28:59 2000
+++ phpdoc/fr/features/connection-handling.xml Fri Jan 12 02:50:56 2001
@@ -1,15 +1,13 @@
<chapter id="features.connection-handling">
<title>Gestion des connexions</title>
-
<note>
<para>
- Les informations suivantes ne sont valables qu'à
+ Les informations suivantes ne sont valables qu'à
partir de la version 3.0.7.
</para>
</note>
-
<para>
- Le statut des connexions est conservé en interne par PHP. Il y a trois
+ Le statut des connexions est conservé en interne par PHP. Il y a trois
états possibles :
<itemizedlist>
<listitem><simpara>0 - NORMAL (normal)</simpara></listitem>
@@ -17,83 +15,77 @@
<listitem><simpara>2 - TIMEOUT (périmé)</simpara></listitem>
</itemizedlist>
</para>
-
<simpara>
- Lorsqu'un script PHP est en cours d'exécution, son
- état est NORMAL. Si le client distant se déconnecte,
- le statut devient ABORTED. En général, une telle
- déconnexion provient d'un arrêt temporaire. Si la
+ Lorsqu'un script PHP est en cours d'exécution, son
+ état est NORMAL. Si le client distant se déconnecte,
+ le statut devient ABORTED. En général, une telle
+ déconnexion provient d'un arrêt temporaire. Si la
durée maximale d'exécution de PHP est dépassée,
- (voir <function>set_time_limit</function>), le script prend le
+ (voir <function>set_time_limit</function>), le script prend le
statut TIMEOUT.
</simpara>
-
<simpara>
- Vous pouvez en outre, décider si vous voulez que la
- déconnexion d'un client provoque l'arrêt de votre
- script. Il est parfois pratique de terminer le script, même
+ Vous pouvez en outre, décider si vous voulez que la
+ déconnexion d'un client provoque l'arrêt de votre
+ script. Il est parfois pratique de terminer le script, même
si le client n'est plus là pour recevoir les informations.
Cependant, par défaut, le script sera interrompu, et terminé
- dès que le client se déconnecte. Ce comportement peut
- être modifié avec la directive ignore_user_abort dans le
- fichier <filename>php.ini</filename> ou bien avec la directive Apache
- <parameter>ignore_user_abort</parameter> du fichier Apache .conf
- ou avec la fonction <function>ignore_user_abort</function>. Si vous
+ dès que le client se déconnecte. Ce comportement peut
+ être modifié avec la directive ignore_user_abort dans le
+ fichier <filename>php.ini</filename> ou bien avec la directive Apache
+ <parameter>ignore_user_abort</parameter> du fichier Apache
+<filename>httpd.conf</filename>
+ ou avec la fonction <function>ignore_user_abort</function>. Si vous
ne demandez pas à PHP d'ignorer la déconnexion, et que
l'utilisateur se déconnecte, le script sera terminé. La
- seule exception est si vous avez enregistré une fonction
+ seule exception est si vous avez enregistré une fonction
de fermeture, avec <function>register_shutdown_function</function>.
- Avec une telle fonction, lorsque l'utilisateur interromp sa
- requête, à la prochaîne exécution du script,
- PHP va s'apercevoir que le dernier script n'a pas été
- terminé, et il va déclencher la fonction de fermeture.
- Cette fonction sera aussi appelée à la fin du script,
- si celui-ci se termine normalement. Pour pouvoir avoir un comportement
+ Avec une telle fonction, lorsque l'utilisateur interromp sa
+ requête, à la prochaîne exécution du script,
+ PHP va s'apercevoir que le dernier script n'a pas été
+ terminé, et il va déclencher la fonction de fermeture.
+ Cette fonction sera aussi appelée à la fin du script,
+ si celui-ci se termine normalement. Pour pouvoir avoir un comportement
différent suivant l'état du script lors de sa finalisation,
- vous pouvez exécutez des commandes spécifiques à
- la déconnexion grâce à la commande
- <function>connection_aborted</function>. Cette fonction retournera
- TRUE si la connexion a été annulée.
+ vous pouvez exécutez des commandes spécifiques à
+ la déconnexion grâce à la commande
+ <function>connection_aborted</function>. Cette fonction retournera
+ <literal>TRUE</literal> si la connexion a été annulée.
</simpara>
-
<simpara>
- Votre script peut aussi expirer après un laps de temps.
- Par défaut, le délai est de 30 secondes. Cette valeur
- peut être changée en utilisant la directive PHP
- <parameter>max_execution_time</parameter> dans le fichier
- <filename>php.ini</filename> ou avec la directive
- <parameter>php3_max_execution_time</parameter>, dans le fichier
- Apache <filename>.conf</filename> ou encore avec la fonction
- <function>set_time_limit</function>.
-
- Lorsque le délai expire, le script est terminé,
+ Votre script peut aussi éxpirer après un laps de temps.
+ Par défaut, le délai est de 30 secondes. Cette valeur
+ peut être changée en utilisant la directive PHP
+ <parameter>max_execution_time</parameter> dans le fichier
+ <filename>php.ini</filename> ou avec la directive
+ <parameter>php3_max_execution_time</parameter>, dans le fichier
+ Apache <filename>.conf</filename> ou encore avec la fonction
+ <function>set_time_limit</function>.
+ Lorsque le délai éxpire, le script est terminé,
et comme pour la déconnexion du client, une fonction de
- finalisation sera appelée. Dans cette fonction, vous
- pouvez savoir si c'est le délai d'expiration qui a
- causé la fin du script, en appelant la fonction
- <function>connection_timeout</function>. Cette fonction
- retournera vrai si le délai d'expiration a
+ finalisation sera appelée. Dans cette fonction, vous
+ pouvez savoir si c'est le délai d'éxpiration qui a
+ causé la fin du script, en appelant la fonction
+ <function>connection_timeout</function>. Cette fonction
+ retournera vrai si le délai d'éxpiration a
été dépassé.
</simpara>
-
<simpara>
- Une chose à noter et que les deux cas ABORTED et TIMEOUT
- peuvent être appelés en même temps. Ceci est
- possible si vous demandez à PHP d'ignorer les
- déconnexions des utilisateurs. PHP va quand
+ Une chose à noter et que les deux cas ABORTED et TIMEOUT
+ peuvent être appelés en même temps. Ceci est
+ possible si vous demandez à PHP d'ignorer les
+ déconnexions des utilisateurs. PHP va quand
même noter le fait que l'utilisateur s'est déconnecté,
- mais le script va continuer. Puis, lorsqu'il atteint la limite de
- temps, le script va expirer. A ce moment là, les deux
- fonctions <function>connection_timeout</function> et
- <function>connection_aborted</function> vont retourner TRUE.
- Vous pouvez aussi vérifier les deux états en un
+ mais le script va continuer. Puis, lorsqu'il atteint la limite de
+ temps, le script va éxpirer. A ce moment là, les deux
+ fonctions <function>connection_timeout</function> et
+ <function>connection_aborted</function> vont retourner <literal>TRUE</literal>.
+ Vous pouvez aussi vérifier les deux états en un
seul appel avec la fonction <function>connection_status</function>.
Cette fonction va retourner un champs de bits, avec les états.
Si les deux états sont actifs, l'état retourné
prendra la valeur 3.
</simpara>
</chapter>
-
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
Index: phpdoc/fr/features/cookies.xml
diff -u phpdoc/fr/features/cookies.xml:1.2 phpdoc/fr/features/cookies.xml:1.3
--- phpdoc/fr/features/cookies.xml:1.2 Thu Nov 2 02:39:06 2000
+++ phpdoc/fr/features/cookies.xml Fri Jan 12 02:50:56 2001
@@ -1,28 +1,24 @@
<chapter id="features.cookies">
<title>Cookies</title>
-
<para>
PHP supporte les cookies de manière transparente. Les cookies
sont un mécanisme d'enregistrement d'informations sur le client,
et de lecture de ces informations. Ce système permet d'authentifier
et de suivre les visiteurs. Vous pouvez envoyer un cookie avec la commande
<function>setcookie</function>. Les cookies font partie de l'entête
- HTTP, ce qui impose que <function>setcookie</function> soit appelé
- avant tout affichage sur le client. Ce sont les mêmes limitations
+ HTTP, ce qui impose que <function>setcookie</function> soit appelé
+ avant tout affichage sur le client. Ce sont les mêmes limitations
que pour <function>header</function>.
</para>
-
<para>
Tous les cookies qui sont envoyés au client seront automatiquement
retournés au script PHP, et transformés en variable,
exactement comme pour GET et POST. Si vous souhaitez affecter plusieurs
valeurs à un seul cookie, ajoutez<emphasis>[]</emphasis>
- au nom du cookie. Pour plus details, reportez vous à la fonction
+ au nom du cookie. Pour plus details, reportez vous à la fonction
<function>setcookie</function>.
</para>
-
</chapter>
-
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
Index: phpdoc/fr/features/error-handling.xml
diff -u phpdoc/fr/features/error-handling.xml:1.2
phpdoc/fr/features/error-handling.xml:1.3
--- phpdoc/fr/features/error-handling.xml:1.2 Thu Nov 2 02:39:13 2000
+++ phpdoc/fr/features/error-handling.xml Fri Jan 12 02:50:56 2001
@@ -1,9 +1,7 @@
<chapter id="features.error-handling">
<title>Gestion des erreurs</title>
-
<para>
- Il y a plusieurs types d'erreur et d'alerte.
-
+ Il y a plusieurs types d'erreur et d'alerte.
<table>
<title>Types d'erreur PHP</title>
<tgroup cols="4">
@@ -53,7 +51,7 @@
<entry>E_CORE_WARNING</entry>
<entry>
Alertes qui surviennent lors de l'initialisation de PHP
- </entry>
+ </entry>
<entry>PHP 4 seulement</entry>
</row>
<row>
@@ -96,91 +94,83 @@
</tgroup>
</table>
</para>
-
<para>
- Les valeurs ci-dessus (numériques ou symbolique) sont utilisée
- pour construire un champs de bit, qui spécifie quelles erreurs
- rapporter. Vous pouvez utiliser les
+ Les valeurs ci-dessus (numériques ou symbolique) sont utilisée
+ pour construire un champs de bit, qui spécifie quelles erreurs
+ rapporter. Vous pouvez utiliser les
<link linkend="language.operators.bitwise">opérateurs de bits</link>
pour combiner ces valeurs et masquer uniquement celle qui vous interesse
- Notez que seuls, '|', '~', '!', et '&' seront utilisables dans
+ Notez que seuls, '|', '~', '!', et '&' seront utilisables dans
<filename>php.ini</filename>, et qu'aucun opérateur ne sera
utilisable dans <filename>php3.ini</filename>.
</para>
<para>
- En PHP 4, la valeur par défaut de
- <link linkend="ini.error-reporting">error_reporting</link> est à
+ En PHP 4, la valeur par défaut de
+ <link linkend="ini.error-reporting">error_reporting</link> est à
<literal>E_ALL & ~E_NOTICE</literal>, ce qui signifie que toutes les
erreurs et alertes seront affichées, mais pas les notes. En PHP 3,
la valeur par défaut est <literal>(E_ERROR | E_WARNING | E_PARSE)</literal>,
- c'est à dire la même chose. Notez bien que ces constantes ne sont pas
- supportées dans le fichier <filename>php3.ini</filename> de PHP 3,
- la valeur de <link linkend="ini.error-reporting">error_reporting</link>
+ c'est à dire la même chose. Notez bien que ces constantes ne sont pas
+ supportées dans le fichier <filename>php3.ini</filename> de PHP 3,
+ la valeur de <link linkend="ini.error-reporting">error_reporting</link>
doit être numériques, c'est à dire <literal>7</literal>.
</para>
-
<para>
- La valeur initiale peut être modifiée dans le fichier .ini,
+ La valeur initiale peut être modifiée dans le fichier .ini,
avec la directive
<link linkend="ini.error-reporting">error_reporting</link>,
- dans le fichier de configuration d'Apache
- <filename>httpd.conf</filename>, avec la directive
- php_error_reporting (php3_error_reporting pour PHP 3),
+ dans le fichier de configuration d'Apache
+ <filename>httpd.conf</filename>, avec la directive
+ php_error_reporting (php3_error_reporting pour PHP 3),
et enfin, dans le script même, en utilisant la fonction
<function>error_reporting</function>.
</para>
-
<warning>
<para>
Lorsque vous portez votre code ou vos serveurs de PHP 3 en PHP 4
- vous devez vérifier les options et les appels à
+ vous devez vérifier les options et les appels à
<function>error_reporting</function>. Sinon, vous courrez le risque
d'inactiver certains types d'erreurs et notamment E_COMPILE_ERROR.
Cela peut conduire à des documents vides, sans aucun retour d'erreur.
</para>
</warning>
-
<para>
Toutes les <link linkend="language.expressions">expressions PHP</link>
peuvent être appelée avec le préfixe "@", qui annule le
rapport d'erreur
pour cette expression en particulier. Si une erreur survient durant une
- telle expression, et que l'option de
+ telle expression, et que l'option de
<link linkend="ini.track-errors">suivi des erreurs </link> est activée,
vous pourrez trouver le message d'erreur dans la variable globale,
$php_errormsg.
</para>
-
<warning>
<para>
Actuellement, le préfixe <link linkend="language.operators.errorcontrol">@
- , opérateur de rapport d'erreur</link> désactive tous les rapports,
+ , opérateur de rapport d'erreur</link> désactive tous les rapports,
y compris les erreurs critiques qui interrompent le script. Entre autre,
cela signifique que si vous utilisez <link
- linkend="language.operators.errorcontrol">@</link> pour supprimer
+ linkend="language.operators.errorcontrol">@</link> pour supprimer
des erreurs dans une fonction qui n'existe pas, ou qui a été mal
orthographiée, le script sera terminé sans aucune indication.
</para>
</warning>
-
<para>
Ci dessous, voici un exemple de gestion des erreurs avec PHP.
On définit une fonction de gestion des erreurs qui enregistre les
informations dans un fichier (au format XML), et email le développeur
- en cas d'erreur critique.
+ en cas d'erreur critique.
<example>
<title>Utiliser le contrôle d'erreur dans un script</title>
<programlisting role="php">
<?php
// Nous effectuons nous même notre contrôle d'erreur.
error_reporting(0);
-
-// Fonction de gestion des erreurs utilisateur
+// Fonction de gestion des erreurs utilisateur
function userErrorHandler ($errno, $errmsg, $filename, $linenum, $vars) {
// timestamp pour dater l'erreur
$dt = date("Y-m-d H:i:s (T)");
-
// definit un tableau associatif avec les chaînes d'erreur
- // en realité, les seules entrées que nous considérerons
+ // en realité, les seules entrées que nous considérerons
// seront 2,8,256,512 et 1024
$errortype = array (
1 => "Erreur",
@@ -197,7 +187,6 @@
);
// ensemble d'erreur pour lesquelles une trace sera conservée
$user_errors = array(E_USER_ERROR, E_USER_WARNING, E_USER_NOTICE);
-
$err = "<errorentry>\n";
$err .= "\t<datetime>".$dt."</datetime>\n";
$err .= "\t<errornum>".$errno."</errnumber>\n";
@@ -205,42 +194,35 @@
$err .= "\t<errormsg>".$errmsg."</errormsg>\n";
$err .=
"\t<scriptname>".$filename."</scriptname>\n";
$err .=
"\t<scriptlinenum>".$linenum."</scriptlinenum>\n";
-
if (in_array($errno, $user_errors))
$err .=
"\t<vartrace>".wddx_serialize_value($vars,"Variables")."</vartrace>\n";
$err .= "</errorentry>\n\n";
-
// pour test
// echo $err;
-
// sauve l'erreur dans le fichier, et emaile moi si l'erreur est critique
error_log($err, 3, "/usr/local/php4/error.log");
if ($errno == E_USER_ERROR)
mail("[EMAIL PROTECTED]","Critical User Error",$err);
}
-
-
function distance ($vect1, $vect2) {
if (!is_array($vect1) || !is_array($vect2)) {
trigger_error("Paramètres incorrects : arrays attendus",
E_USER_ERROR);
return NULL;
}
-
if (count($vect1) != count($vect2)) {
trigger_error("Les vecteurs doivent être de la même
taille", E_USER_ERROR);
return NULL;
}
-
for ($i=0; $i<count($vect1); $i++) {
$c1 = $vect1[$i]; $c2 = $vect2[$i];
$d = 0.0;
if (!is_numeric($c1)) {
- trigger_error("La coordonnée $i du vecteur 1 n'est pas un
nombre. Remplacée par zéro",
+ trigger_error("La coordonnée $i du vecteur 1 n'est pas un
+nombre. Remplacée par zéro",
E_USER_WARNING);
$c1 = 0.0;
}
if (!is_numeric($c2)) {
- trigger_error("La coordonnée $i du vecteur 2 n'est pas un
nombre. Remplacée par zéro",
+ trigger_error("La coordonnée $i du vecteur 2 n'est pas un
+nombre. Remplacée par zéro",
E_USER_WARNING);
$c2 = 0.0;
}
@@ -248,44 +230,34 @@
}
return sqrt($d);
}
-
$old_error_handler = set_error_handler("userErrorHandler");
-
// Constante indéfinie, génére une alerte
$t = I_AM_NOT_DEFINED;
-
// definition de quelques "vecteurs"
$a = array(2,3,"bla");
$b = array(5.5, 4.3, -1.6);
$c = array (1,-3);
-
// génère une erreur utilisateur
$t1 = distance($c,$b)."\n";
-
// génère une autre erreur utilisateur
$t2 = distance($b,"i am not an array")."\n";
-
// génère une alerte
$t3 = distance($a,$b)."\n";
-
?>
</programlisting>
</example>
Ceci est un exemple simple, qui montre comment utiliser les fonctions
de <link linkend="ref.errorfunc">Gestions des erreurs</link>.
</para>
-
<para>
Voir aussi <function>error_reporting</function>,
<function>error_log</function>,
<function>set_error_handler</function>,
- <function>restore_error_handler</function>,
+ <function>restore_error_handler</function>,
<function>trigger_error</function>,
<function>user_error</function>
</para>
-
</chapter>
-
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
Index: phpdoc/fr/features/file-upload.xml
diff -u phpdoc/fr/features/file-upload.xml:1.5 phpdoc/fr/features/file-upload.xml:1.6
--- phpdoc/fr/features/file-upload.xml:1.5 Wed Dec 13 06:02:11 2000
+++ phpdoc/fr/features/file-upload.xml Fri Jan 12 02:50:56 2001
@@ -24,7 +24,7 @@
de la manière suivante :
<example>
<title>Formulaire de chargement de fichier</title>
- <programlisting>
+ <programlisting role="html">
<FORM ENCTYPE="multipart/form-data" ACTION="_URL_"
METHOD=POST>
<INPUT TYPE="hidden" name="MAX_FILE_SIZE"
value="1000">
Send this file: <INPUT NAME="userfile" TYPE="file">
@@ -156,11 +156,11 @@
if (is_uploaded_file($userfile)) {
copy($userfile, "/dossier/des/fichiers/telecharges/");
} else {
- echo "Attaque potentielle par fichier téléchargés : fichier
'$userfile'.";
+ echo "Attaque potentielle par fichier téléchargé : fichier
+'$userfile'.";
}
/* ...ou... */
move_uploaded_file($userfile, "/dossier/des/fichiers/telecharges");
-?>
+?>
</programlisting>
<para>
Pour les versions plus anciennes de PHP, vous devrez faire quelques
@@ -181,24 +181,24 @@
$tmp_file = dirname(tempnam('', ''));
}
$tmp_file .= '/' . basename($filename);
- /* L'utilisateur peut avoir un slash final dans php.ini... */
+ /* L'utilisateur peut avoir un slash final dans <filename>php.ini</filename>... */
return (ereg_replace('/+', '/', $tmp_file) == $filename);
}
if (is_uploaded_file($userfile)) {
copy($userfile, "/place/to/put/uploaded/file");
} else {
- echo "Attaque potentielle par fichier téléchargés : fichier
'$userfile'.";
+ echo "Attaque potentielle par fichier téléchargé : fichier
+'$userfile'.";
}
-?>
+?>
</programlisting>
</example>
</para>
<simpara>
Le script PHP qui recoit le fichier chargé doit pouvoir
gérer le fichier de manière appropriée. Vous
- pouvez utiliser la variable $file_size pour recaler tous les fichiers
+ pouvez utiliser la variable <varname>$file_size</varname> pour recaler tous les
+fichiers
qui sont trop gros ou trop petit. Vous pouvez utiliser la variable
- $file_type pour recaler les fichiers qui n'ont pas le bon type.
+ <varname>$file_type</varname> pour recaler les fichiers qui n'ont pas le bon type.
Quelque soit les actions, ce script doit pouvoir supprimer le
fichier du dossier temporaire, ou le déplacer ailleurs.
</simpara>
@@ -213,7 +213,7 @@
<simpara>
La variable MAX_FILE_SIZE ne peut pas spécifier une taille
de fichier plus grande que la taille qui a été
- fixée par upload_max_filesize, dans le fichier PHP3.ini, ou
+ fixée par upload_max_filesize, dans le fichier
+<filename>php3.ini</filename>, ou
par php3_upload_max_filesize dans les directives Apache. La valeur
par défaut est 2 Megaoctets.
</simpara>
@@ -245,7 +245,7 @@
<para>
<example>
<title>Chargement multiple de fichier </title>
- <programlisting>
+ <programlisting role="html">
<form action="file-upload.html" method="post"
enctype="multipart/form-data">
Send these files:<br>
<input name="userfile[]" type="file"><br>
@@ -290,17 +290,17 @@
requêtes de type PUT sont beaucoup plus simples que
les chargements de fichiers, et elles ressemblent à :
<informalexample>
- <programlisting>
+ <programlisting role="HTTP">
PUT /path/filename.html HTTP/1.1
</programlisting>
</informalexample>
</para>
<para>
Normalement, cela signifie que le client distant va sauver
- les données qui suivent dans le fichier: /path/filename.html
+ les données qui suivent dans le fichier:
+<filename>/path/filename.html</filename>
de votre disque. Ce n'est évidemment pas très
sécurisé de laisser Apache ou PHP écraser n'importe
- quel fichier de l arborescence. Pour éviter ceci, il faut d abord
+ quel fichier de l'arborescence. Pour éviter ceci, il faut d'abord
dire au serveur que vous voulez qu'un script PHP donné gère
la requête. Avec Apache, il y a une directive pour cela :
<emphasis>Script</emphasis>. Elle peut être placée
@@ -325,8 +325,10 @@
</simpara>
<para>
<informalexample>
- <programlisting>
-<?php copy($PHP_UPLOADED_FILE_NAME,$DOCUMENT_ROOT.$REQUEST_URI); ?>
+ <programlisting role="php">
+<?php
+ copy($PHP_UPLOADED_FILE_NAME,$DOCUMENT_ROOT.$REQUEST_URI);
+?>
</programlisting>
</informalexample>
</para>
@@ -343,7 +345,7 @@
fait que ce script doit placer le fichier chargé quelque part.
Le nom du fichier temporaire est placé dans la variable
globale $PHP_PUT_FILENAME, et la destination prévue est
- placée dans $REQUEST_URI (ces noms peuvent changer d'une
+ placée dans <varname>$REQUEST_URI</varname> (ces noms peuvent changer
+d'une
configuration d'Apache à l'autre). Cette destination est
celle qui est demandée par le client, et vous n'avez pas
à obéir aveuglément au client. Vous pourriez
Index: phpdoc/fr/features/http-auth.xml
diff -u phpdoc/fr/features/http-auth.xml:1.2 phpdoc/fr/features/http-auth.xml:1.3
--- phpdoc/fr/features/http-auth.xml:1.2 Fri Nov 3 03:48:00 2000
+++ phpdoc/fr/features/http-auth.xml Fri Jan 12 02:50:56 2001
@@ -1,25 +1,23 @@
<chapter id="features.http-auth">
<title>Authentification HTTP avec PHP</title>
-
<simpara>
- Les fonctions d'authentification HTTP de PHP ne sont disponibles
- que si PHP est exécuté comme module Apache, et non
- pas sous la forme d'un CGI. Sous cette forme, il est possible
- d'utiliser la fonction <function>Header</function> pour demander
- une authentification ("Authentication Required" ) au client,
- générant ainsi l'apparition d'une fenêtre
- de demande d'utilisateur et de mot de passe. Une fois que les
- champs ont été remplis, l'URL sera de nouveau
- appelée, avec les variables $PHP_AUTH_USER, $PHP_AUTH_PW
- et $PHP_AUTH_TYPE contenant respectivement le nom d'utilisateur,
- le mot de passe et le type d'authentification.
- Actuellement, seule l'authentification simple ("Basic") est
- supportée. Reportez vous à la fonction
- <function>Header</function> pour plus d'informations.
+ Les fonctions d'authentification HTTP de PHP ne sont disponibles
+ que si PHP est exécuté comme module Apache, et non
+ pas sous la forme d'un CGI. Sous cette forme, il est possible
+ d'utiliser la fonction <function>header</function> pour demander
+ une authentification ("Authentication Required" ) au client,
+ générant ainsi l'apparition d'une fenêtre
+ de demande d'utilisateur et de mot de passe. Une fois que les
+ champs ont été remplis, l'URL sera de nouveau
+ appelée, avec les variables <varname>$PHP_AUTH_USER</varname>,
+ <varname>$PHP_AUTH_PW</varname> et <varname>$PHP_AUTH_TYPE</varname>
+ contenant respectivement le nom d'utilisateur, le mot de passe et
+ le type d'authentification. Actuellement, seule l'authentification
+ simple ("Basic") est supportée. Reportez vous à la fonction
+ <function>header</function> pour plus d'informations.
</simpara>
-
<para>
- Voici un exemple de script qui force l'authentification du client
+ Voici un exemple de script qui force l'authentification du client
pour accéder à une page :
<example>
<title>Exemple d'authentication HTTP</title>
@@ -31,97 +29,89 @@
echo "Texte à envoyer si le client appuie sur le bouton
d'annulation\n";
exit;
} else {
- echo "Bonjour $PHP_AUTH_USER.<P>";
- echo "Vous avez entré le mot de passe $PHP_AUTH_PW.<P>";
+ echo "Bonjour $PHP_AUTH_USER.<P>"
+ echo "Vous avez entré le mot de passe $PHP_AUTH_PW.<P>"
}
-?>
+?>
</programlisting>
- </example></para>
-
+ </example>
+ </para>
<para>
- Au lieu d'afficher simplement les variables globales $PHP_AUTH_USER et
- $PHP_AUTH_PW, vous préférerez sûrement vérifier
- la validité du nom d'utilisateur et du mot de passe. Par exemple,
- en envoyant ces informations à une base de données,
+ Au lieu d'afficher simplement les variables globales
+<varname>$PHP_AUTH_USER</varname>
+ et <varname>$PHP_AUTH_PW</varname>, vous préférerez sûrement
+ vérifier la validité du nom d'utilisateur et du mot de passe.
+ Par exemple, en envoyant ces informations à une base de données,
ou en recherchant dans un fichier dbm.
</para>
-
<para>
- Méfiez vous des navigateurs buggés, tels que Internet Explorer.
- Ils semblent très suceptibles concernant l'ordre des entêtes.
+ Méfiez vous des navigateurs buggés, tels que Internet Explorer.
+ Ils semblent très suceptibles concernant l'ordre des entêtes.
Envoyer l'entête d'authentification (<emphasis>WWW-Authenticate</emphasis>)
- avant le code de <errorcode>HTTP/1.0 401</errorcode> semble lui convenir
+ avant le code de <errorcode>HTTP/1.0 401</errorcode> semble lui convenir
jusqu'à présent.
</para>
-
<simpara>
- Pour éviter que quelqu'un écrive un script qui
+ Pour éviter que quelqu'un écrive un script qui
révèle les mots de passe d'une page, à la
quelle on a accédé par une authentification traditionnelle,
- les variables globales PHP_AUTH ne seront pas assignées si
+ les variables globales PHP_AUTH ne seront pas assignées si
l'authentification externe a été activée pour
- cette page. Dans ce cas, la variable $REMOTE_USER peut être
+ cette page. Dans ce cas, la variable <varname>$REMOTE_USER</varname> peut
+être
utilisée pour identifier l'utilisateur à l'extérieur.
</simpara>
-
<simpara>
- Notez cependant que les manipulations ci-dessus n'empêchent
- pas quiconque qui possède une page non authentifiée
- de voler les mots de passes des pages protégées,
+ Notez cependant que les manipulations ci-dessus n'empêchent
+ pas quiconque qui possède une page non authentifiée
+ de voler les mots de passes des pages protégées,
sur le même serveur.
</simpara>
-
<simpara>
- Netscape et Internet Explorer effaceront le cache d'authentification client
- si ils recoivent une réponse 401. Cela permet de déconnecter
- un utilisateur, pour le forcer à ré-entrer son nom de compte
- et son mot de passe. Certains programmeurs l'utilisent pour donner un
- délai d'expiration, ou alors, fournissent un bouton de déconnexion.
- </simpara>
- <example>
- <title>
- Authentification HTTP avec nom d'utilisateur/mot de passe forcé
- </title>
- <programlisting role="php">
+ Netscape et Internet Explorer effaceront le cache d'authentification client
+ si ils recoivent une réponse 401. Cela permet de déconnecter
+ un utilisateur, pour le forcer à ré-entrer son nom de compte
+ et son mot de passe. Certains programmeurs l'utilisent pour donner un
+ délai d'éxpiration, ou alors, fournissent un bouton de
+déconnexion.
+ </simpara>
+ <example>
+ <title>
+ Authentification HTTP avec nom d'utilisateur/mot de passe forcé
+ </title>
+ <programlisting role="php">
<?php
- function authenticate() {
+ function authenticate() {
Header( "WWW-authenticate: basic realm='Test Authentication
System'");
Header( "HTTP/1.0 401 Unauthorized");
- echo "You must enter a valid login ID and password to access
this resource\n";
+ echo "Vous devez entrer un nom d'utilisateur valide et un mot de passe
+correct pour accéder à cette ressource\n";
exit;
}
-
if(!isset($PHP_AUTH_USER) || ($SeenBefore == 1 && !strcmp($OldAuth,
$PHP_AUTH_USER)) ) {
authenticate();
- }
+ }
else {
- echo "Welcome: $PHP_AUTH_USER<BR>";
+ echo "Bienvenue $PHP_AUTH_USER<BR>";
echo "Old: $OldAuth";
echo "<FORM ACTION=\"$PHP_SELF\" METHOD=POST>\n";
echo "<INPUT TYPE=HIDDEN NAME=\"SeenBefore\"
VALUE=\"1\">\n";
echo "<INPUT TYPE=HIDDEN NAME=\"OldAuth\"
VALUE=\"$PHP_AUTH_USER\">\n";
- echo "<INPUT TYPE=Submit VALUE=\"Re
Authenticate\">\n";
+ echo "<INPUT TYPE=Submit VALUE=\"Re
+Authenticate\">\n"
echo "</FORM>\n";
-
}
-?>
+?>
</programlisting>
</example>
<simpara>
- Ce comportement n'est pas nécessaire par le standard
- d'authentification HTTP Basic. Les tests avec Lynx ont montré
- qu'il n'affectait pas les informations de session lors de la
- réception d'un message de type 401, ce qui fait que passer ces
- informations entre le serveur et le client, et donnera l'accès
+ Ce comportement n'est pas nécessaire par le standard
+ d'authentification HTTP Basic. Les tests avec Lynx ont montré
+ qu'il n'affectait pas les informations de session lors de la
+ réception d'un message de type 401, ce qui fait que passer ces
+ informations entre le serveur et le client, et donnera l'accès
à la ressource.
</simpara>
<simpara>
- Notez aussi que tout ceci ne fonctionne pas sous Microsoft's IIS et que les
+ Notez aussi que tout ceci ne fonctionne pas sous Microsoft IIS et que les
limitations de PHP en version CGI sont dues aux limitations de IIS.
</simpara>
-
</chapter>
-
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
Index: phpdoc/fr/features/images.xml
diff -u phpdoc/fr/features/images.xml:1.2 phpdoc/fr/features/images.xml:1.3
--- phpdoc/fr/features/images.xml:1.2 Fri Nov 3 03:48:11 2000
+++ phpdoc/fr/features/images.xml Fri Jan 12 02:50:56 2001
@@ -1,46 +1,41 @@
<chapter id="features.images">
<title>Création d'images</title>
-
<simpara>
PHP n'est pas limité à la création de
- fichier HTML. Il peut aussi servir à créer
+ fichier HTML. Il peut aussi servir à créer
des images GIF, PNG, JPG, wbmp et xpm, à la volée,
- aussi bien pour les émettre que pour les sauver.
- Il faut alors compiler PHP avec la librairie GD. GD et PHP
+ aussi bien pour les émettre que pour les sauver.
+ Il faut alors compiler PHP avec la librairie GD. GD et PHP
requièrent aussi d'autres librairies, suivant le format d'images
que vous voulez supporter. GD a cessé de supporter le format
GIF depuis la version 1.6.
</simpara>
-
<para>
<example>
<title>Création d'images GIF avec PHP</title>
<programlisting role="php">
<?php
- Header("Content-type: image/png");
+ header("Content-type: image/png");
$string=implode($argv," ");
- $im = imageCreateFromPng("images/button1.png");
- $orange = ImageColorAllocate($im, 220, 210, 60);
+ $im = imagecreatefrompng("images/button1.png");
+ $orange = imagecolorallocate($im, 220, 210, 60);
$px = (imagesx($im)-7.5*strlen($string))/2;
- ImageString($im,3,$px,9,$string,$orange);
- ImagePng($im);
- ImageDestroy($im);
-?>
+ imagestring($im,3,$px,9,$string,$orange);
+ imagepng($im);
+ imagedestroy($im);
+?>
</programlisting>
</example>
-
Cet exemple sera appelé depuis une page HTML avec une balise
- telle que: <img src="button.php3?text">.
+ telle que: <img src="button.php3?text">.
Le script ci-dessus récupère le texte de la chaîne
$string et l'ajoute sur l'image de fond"images/button1.gif".
- Le résultat est alors envoyé au client. C'est un moyen
- très pratique d'éviter d'avoir à redessiner des
- boutons à chaque fois que le texte du bouton change. Avec ce
+ Le résultat est alors envoyé au client. C'est un moyen
+ très pratique d'éviter d'avoir à redessiner des
+ boutons à chaque fois que le texte du bouton change. Avec ce
script, il est généré dynamiquement.
</para>
-
</chapter>
-
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
Index: phpdoc/fr/features/persistent-connections.xml
diff -u phpdoc/fr/features/persistent-connections.xml:1.2
phpdoc/fr/features/persistent-connections.xml:1.3
--- phpdoc/fr/features/persistent-connections.xml:1.2 Fri Nov 3 03:48:14 2000
+++ phpdoc/fr/features/persistent-connections.xml Fri Jan 12 02:50:56 2001
@@ -1,89 +1,84 @@
<chapter id="features.persistent-connections">
<title>Connexions persistantes aux bases de données</title>
-
<simpara>
Les connexions persistantes aux bases de données SQL sont
des connexions qui ne se referment pas à la fin du script.
Lorsqu'une connexion persistante est demandée, PHP s'assure
qu'il n'y a pas une autre connexion identique (qui serait ouverte
- précédemment, avec le même nom d'hôte,
- d'utilisateur et de mot de passe), et si une telle connexion existe,
- elle est utilisée. Sinon, elle est créée. Une
- connexion identique est une connexion qui a ouvert le même
+ précédemment, avec le même nom d'hôte,
+ d'utilisateur et le même mot de passe), et si une telle connexion
+ existe, elle est utilisée. Sinon, elle est créée.
+ Une connexion identique est une connexion qui a ouvert le même
hôte, avec le même nom et même mot de passe (si
ils sont nécessaires).
</simpara>
<simpara>
- Ceux qui ne sont pas habitués aux techniques des serveurs
- web et leur distribution de la charge de travail, se font parfois
- une fausse idée de ces connexions persistantes. En particulier,
- cela ne permet par l'ouverture de plusieurs sessions avec le même
- lien, cela ne permet pas la réalisation de transactions efficaces,
- et cela ne fait pas le café. En fait, pour être
- extrêmement clair sur le sujet, les connexions persistantes
- ne vous donnent aucune fonctionnalité de plus que les
- connexions non persistantes.
+ Ceux qui ne sont pas rompus aux techniques des serveurs web et leur
+ distribution de la charge de travail, se font parfois une fausse
+ idée de ces connexions persistantes. En particulier,
+ les connexions persistantes ne permettent pas l'ouverture de plusieurs
+ sessions avec le même lien, ne permettent pas la réalisation
+ de transactions efficaces et ne font pas le café. En fait,
+ pour être extrêmement clair sur le sujet, les
+ connexions persistantes ne vous donnent aucune fonctionnalité
+ de plus que les connexions non persistantes.
</simpara>
<simpara>
Alors pourquoi?
- </simpara>
+ </simpara>
<simpara>
Cela s'explique par la manière avec laquelle les serveurs web
- fonctionnent. Il y a trois manières d'utiliser PHP pour
+ fonctionnent. Il y a trois manières d'utiliser PHP pour
générer des pages.
</simpara>
<simpara>
- La première est d'utiliser PHP comme un CGI (Common Interface Gateway).
- Lorsque PHP fonctionne de cette manière, une instance de
+ La première est d'utiliser PHP comme un CGI (Common Interface Gateway).
+ Lorsque PHP fonctionne de cette manière, une instance de
l'interpréteur PHP est créée puis détruit
- pour chaque page demandée. Etant donné qu'il est
- détruit après chaque requête, toutes les
- ressources acquises (comme une connexion à une base SQL),
+ pour chaque page demandée. Etant donné qu'il est
+ détruit après chaque requête, toutes les
+ ressources acquises (comme une connexion à une base SQL),
sont purement et simplement détruites.
</simpara>
-
<simpara>
La deuxième méthode, et de loin, la plus prisée,
- est d'exécuter PHP sous la forme d'un module sur un serveur
+ est d'exécuter PHP sous la forme d'un module sur un serveur
multi-process, ce qui revient à dire : Apache. Un tel serveur
a typiquement un processus parent qui coordonne un ensemble de processus fils,
- qui servent les fichiers. Lorsque les requêtes parviennent depuis
+ qui servent les fichiers. Lorsque les requêtes parviennent depuis
un client, elles sont transmises à un fils disponible. Cela signifie
- que si un client fait une deuxième requête, il peut
+ que si un client fait une deuxième requête, il peut
être servi par un processus client différent du premier.
Les connexions persistantes vous permettent alors de ne vous connecter
à une base SQL que la première fois. Lors des connexions
- ultérieures, les processus fils pourront réutiliser la
+ ultérieures, les processus fils pourront réutiliser la
connexion ouverte précédemment.
</simpara>
-
<simpara>
La dernière méthode est d'utiliser PHP sous la forme d'un
- module. Pour un serveur multi-thread, actuellement, c'est purement
+ module. Pour un serveur multi-thread, actuellement, c'est purement
théorique, car PHP ne fonctionne par encore sous cette forme.
Le développement est en cours pour supporter ISAPI, WSAPI, et
- NSAPI (sous Windows), qui permettront d'utiliser PHP comme un module pour
+ NSAPI (sous Windows), qui permettront d'utiliser PHP comme un module pour
des serveurs tels que Netscape FastTrack, Microsoft's Internet Information
- Server (IIS), et O'Reilly's WebSite Pro. Lorsque cela sera fait, le
+ Server (IIS), et O'Reilly's WebSite Pro. Lorsque cela sera fait, le
comportement sera le même que pour les serveur multi-process.
</simpara>
-
<simpara>
- Si les connexions persistantes n'ont aucune fonctionnalité de plus,
+ Si les connexions persistantes n'ont aucune fonctionnalité de plus,
à quoi servent-elles?
</simpara>
-
<simpara>
- La réponse est extrêmement simple : efficacité. Les
+ La réponse est extrêmement simple : efficacité. Les
connexions persistantes sont un bon moyen d'accélérer les
accès à une base SQL si le traitement de connexion à
- la base est long. Ce temps dépend de nombreux facteurs : le type
+ la base est long. Ce temps dépend de nombreux facteurs : le type
de base de données, cette base est-elle sur le même serveur
ou pas, quelle est la charge du serveur de base de données, etc...
- Si le temps de connexion est long, les connexions persistantes seront
- bien utiles, car une fois ouverte par un processus fils, la connexion est
- réutilisable sans avoir à se reconnecter. Si vous avez 20
- processus fils, il suffit d'avoir 20 connexions persistantes ouvertes,
+ Si le temps de connexion est long, les connexions persistantes seront
+ bien utiles, car une fois ouverte par un processus fils, la connexion est
+ réutilisable sans avoir à se reconnecter. Si vous avez 20
+ processus fils, il suffit d'avoir 20 connexions persistantes ouvertes,
une par fils.
</simpara>
<simpara>
@@ -95,19 +90,17 @@
sur la touche. Si il y a des erreurs dans les scripts qui ne permettent
pas de fermer la connexion (par exemple, une boucle infinie), votre
serveur sera rapidement engorgé. Vérifier la documentation de votre
- base de données pour savoir comment elle traite les connexions
+ base de données pour savoir comment elle traite les connexions
inactives ou abandonnées.
</simpara>
<simpara>
Résumons nous : les connexions persistantes ont été
- définies pour avoir les mêmes fonctionnalités que
- les connexions non persistantes. Les deux types de connexions
- sont parfaitement interchangeables, et n'affecteront pas le
+ définies pour avoir les mêmes fonctionnalités que
+ les connexions non persistantes. Les deux types de connexions
+ sont parfaitement interchangeables, et n'affecteront pas le
comportement de votre script : uniquement son efficacité.
</simpara>
-
</chapter>
-
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
Index: phpdoc/fr/features/remote-files.xml
diff -u phpdoc/fr/features/remote-files.xml:1.2 phpdoc/fr/features/remote-files.xml:1.3
--- phpdoc/fr/features/remote-files.xml:1.2 Fri Nov 3 03:48:18 2000
+++ phpdoc/fr/features/remote-files.xml Fri Jan 12 02:50:56 2001
@@ -1,33 +1,32 @@
<chapter id="features.remote-files">
<title>Utilisation des fichiers à distance</title>
-
<para>
- Aussi longtemps que le support de la fonction d'ouverture
- générique de fichiers ("URL fopen wrapper")
- est actif lorsque vous configurez PHP (il est inutile de
- passer explicitement l'option <option>--disable-url-fopen-wrapper</option>
- pour faire la configuration), vous pouvez utiliser des URLs
- (HTTP et FTP) avec la plupart des fonctions qui utilisent un
- nom de fichier comme paramètre, ceci incluant les expressions
- <function>require</function> et <function>include</function>.
+ Aussi longtemps que le support de la fonction d'ouverture
+ générique de fichiers ("URL fopen wrapper")
+ est actif lorsque vous configurez PHP (il est inutile de
+ passer explicitement l'option <option>--disable-url-fopen-wrapper</option>
+ pour faire la configuration), vous pouvez utiliser des URLs
+ (HTTP et FTP) avec la plupart des fonctions qui utilisent un
+ nom de fichier comme paramètre, ceci incluant les expressions
+ <function>require</function> et <function>include</function>.
<note>
<para>
- Vous ne pouvez pas utiliser les fichiers distants dans les expressions
+ Vous ne pouvez pas utiliser les fichiers distants dans les expressions
<function>include</function> et <function>require</function> avec Windows.
</para>
</note>
</para>
<para>
- Par exemple, vous pouvez suivre l'exemple suivant pour ouvrir un
- fichier sur un serveur web distant, analyser les résultats
- pour extraire les informations dont vous avez besoin, et ensuite
- l'utiliser dans une requête de base de données, ou
- simplement éditer les informations dans le style de votre site.
+ Par exemple, vous pouvez suivre l'exemple suivant pour ouvrir un
+ fichier sur un serveur web distant, analyser les résultats
+ pour extraire les informations dont vous avez besoin, et ensuite
+ l'utiliser dans une requête de base de données, ou
+ simplement éditer les informations dans le style de votre site.
</para>
<para>
<example>
- <title>Connaître le titre du page distante</title>
- <programlisting>
+ <title>Connaître le titre d'une page distante</title>
+ <programlisting role="php">
<?;php
$file = fopen("http://www.php.net/", "r");
if (!$file) {
@@ -48,21 +47,21 @@
</example>
</para>
<para>
- Vous pouvez aussi écrire des fichiers sur un serveur FTP
- aussi longtemps que vous êtes connecté avec un
- utilisateur ayant les bons droits d'accès, alors que le
- fichier n'existait pas encore. Pour vous connecter avec un
- utilisateur autre qu'anonyme, vous devez spécifier un
- nom d'utilisateur (et certainement le mot de passe) dans l'URL,
- comme par exemple 'ftp://user:[EMAIL PROTECTED]/path/to/file'.
- (Vous pouvez utiliser le même type de syntaxe pour accéder
- aux fichiers via HTTP lorsqu'ils nécessitent une
- authentification basique.)
+ Vous pouvez aussi écrire des fichiers sur un serveur FTP
+ aussi longtemps que vous êtes connecté avec un
+ utilisateur ayant les bons droits d'accès, alors que le
+ fichier n'existait pas encore. Pour vous connecter avec un
+ utilisateur autre qu'anonyme, vous devez spécifier un
+ nom d'utilisateur (et certainement le mot de passe) dans l'URL,
+ comme par exemple 'ftp://user:[EMAIL PROTECTED]/path/to/file'.
+ (Vous pouvez utiliser le même type de syntaxe pour accéder
+ aux fichiers via HTTP lorsqu'ils nécessitent une
+ authentification basique.)
</para>
<para>
<example>
<title>Stocker des données sur un serveur distant</title>
- <programlisting>
+ <programlisting role="php">
<?;php
$file = fopen("ftp://ftp.php.net/incoming/outputfile", "w");
if (!$file) {
@@ -77,19 +76,17 @@
</example>
<note>
<para>
- Remarque: Vous pouvez avoir l'idée,à partir de
- l'exemple ci-dessus, d'utiliser la même technique pour
- écrire sur un log distant, mais comme mentionné ci-dessus
- vous ne pouvez qu'écrire sur un nouveau fichier en utilisant
- les fonctions <function>fopen</function> avec une URL. Pour faire des log
- distribués, nous vous conseillons de regarder la partie
- <function>syslog</function>.
+ Remarque: Vous pouvez avoir l'idée,à partir de
+ l'exemple ci-dessus, d'utiliser la même technique pour
+ écrire sur un log distant, mais comme mentionné ci-dessus
+ vous ne pouvez qu'écrire sur un nouveau fichier en utilisant
+ les fonctions <function>fopen</function> avec une URL. Pour faire des log
+ distribués, nous vous conseillons de regarder la partie
+ <function>syslog</function>.
</para>
</note>
</para>
-
</chapter>
-
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml