Files
doc-fr/language/predefined/variables/server.xml
2021-09-24 04:13:47 +01:00

582 lines
18 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: cdaea0421544885f02ff3d36bd203dc01b78299e Maintainer: yannick Status: ready -->
<!-- Reviewed: yes -->
<phpdoc:varentry xmlns:phpdoc="http://php.net/ns/phpdoc" xml:id="reserved.variables.server" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>$_SERVER</refname>
<refpurpose>Variables de serveur et d'exécution</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<para>
<varname>$_SERVER</varname> est un tableau contenant des informations
comme les en-têtes, dossiers et chemins du script. Les entrées de ce
tableau sont créées par le serveur web. Il n'y a aucune garantie que tous
les serveurs les rempliront tous ; certains en oublieront quelques-unes
et en rajouteront de nouvelles non mentionnées ici. Cependant, un grand
nombre de ces variables fait partie des
<link xlink:href="&url.rfc;3875">spécifications CGI/1.1</link>, et vous pouvez donc
vous attendre à les retrouver.
</para>
</refsect1>
<refsect1 role="indices">
&reftitle.indices;
<simpara>
Vous pouvez éventuellement trouver les éléments suivants
dans la variable <varname>$_SERVER</varname>. Notez que certains,
n'auront pas de sens si vous utilisez PHP en <link linkend="features.commandline">ligne
de commande</link>.
</simpara>
<para>
<variablelist>
<varlistentry>
<term>'<varname>PHP_SELF</varname>'</term>
<listitem>
<simpara>
Le nom du fichier du script en cours d'exécution, par
rapport à la racine web.
Par exemple, <varname>$_SERVER['PHP_SELF']</varname> dans le script
situé à l'adresse <filename>http://example.com/foo/bar.php</filename>
sera <filename>/foo/bar.php</filename>.
La constante <link linkend="language.constants.predefined">__FILE__</link>
contient le chemin complet ainsi que le nom du fichier (i.e. inclus) courant.
</simpara>
<simpara>
Si PHP fonctionne en ligne de commande,
cette variable contient le nom du script.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<link linkend="reserved.variables.argv">argv</link>'</term>
<listitem>
<simpara>
Tableau des arguments passés au script. Lorsque le script
est appelé en ligne de commande, cela donne accès
aux arguments, comme en langage C. Lorsque le script est
appelé avec la méthode GET, ce tableau contiendra
la chaîne de requête.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<link linkend="reserved.variables.argc">argc</link>'</term>
<listitem>
<simpara>
Contient le nombre de paramètres de la ligne de commande
passés au script (si le script fonctionne en ligne de commande).
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>GATEWAY_INTERFACE</varname>'</term>
<listitem>
<simpara>
Numéro de révision de l'interface CGI du serveur.
Par exemple '<literal>CGI/1.1</literal>'.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>SERVER_ADDR</varname>'</term>
<listitem>
<simpara>
L'adresse IP du serveur sous lequel le script courant est en train
d'être exécuté.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>SERVER_NAME</varname>'</term>
<listitem>
<simpara>
Le nom du serveur hôte qui exécute le script suivant.
Si le script est exécuté sur un hôte virtuel, ce sera
la valeur définie pour cet hôte virtuel.
</simpara>
<note>
<simpara>
Sous Apache 2, vous devez définir <literal>UseCanonicalName = On</literal>
et <literal>ServerName</literal>. Sinon, cette valeur reflète le nom
d'hôte fourni par le client, qui peut être falsifié. Il n'est pas sûr
de s'appuyer sur cette valeur dans les contextes dépendant de la sécurité.
</simpara>
</note>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>SERVER_SOFTWARE</varname>'</term>
<listitem>
<simpara>
Chaîne d'identification du serveur, qui est donnée dans
les en-têtes lors de la réponse aux requêtes.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>SERVER_PROTOCOL</varname>'</term>
<listitem>
<simpara>
Nom et révision du protocole de communication ; par exemple '<literal>HTTP/1.0</literal>';
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>REQUEST_METHOD</varname>'</term>
<listitem>
<simpara>
Méthode de requête utilisée pour accéder à la page ;
par exemple '<literal>GET</literal>', '<literal>HEAD</literal>',
'<literal>POST</literal>', '<literal>PUT</literal>'.
</simpara>
<note>
<para>
Le script PHP se termine après avoir envoyé les en-têtes (c'est à dire après
avoir produit n'importe quelle sortie sans bufferisation de sortie) si
la méthode de la requête était <literal>HEAD</literal>.
</para>
</note>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>REQUEST_TIME</varname>'</term>
<listitem>
<simpara>
Le temps Unix du début de la requête.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>REQUEST_TIME_FLOAT</varname>'</term>
<listitem>
<simpara>
Le timestamp du début de la requête, avec une précision à la
microseconde.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>QUERY_STRING</varname>'</term>
<listitem>
<simpara>
La chaîne de requête, si elle existe, qui est
utilisée pour accéder à la page.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>DOCUMENT_ROOT</varname>'</term>
<listitem>
<simpara>
La racine sous laquelle le script courant est exécuté,
comme défini dans la configuration du serveur.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>HTTP_ACCEPT</varname>'</term>
<listitem>
<simpara>
Contenu de l'en-tête <literal>Accept:</literal> de la
requête courante, s'il y en a une.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>HTTP_ACCEPT_CHARSET</varname>'</term>
<listitem>
<simpara>
Contenu de l'en-tête <literal>Accept-Charset:</literal>
de la requête courante, si elle existe. Par exemple :
'<literal>iso-8859-1,*,utf-8</literal>'.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>HTTP_ACCEPT_ENCODING</varname>'</term>
<listitem>
<simpara>
Contenu de l'en-tête <literal>Accept-Encoding:</literal>
de la requête courante, si elle existe. Par exemple : '<literal>gzip</literal>'.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>HTTP_ACCEPT_LANGUAGE</varname>'</term>
<listitem>
<simpara>
Contenu de l'en-tête <literal>Accept-Language:</literal> de
la requête courante, si elle existe. Par exemple : '<literal>fr</literal>'.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>HTTP_CONNECTION</varname>'</term>
<listitem>
<simpara>
Contenu de l'en-tête <literal>Connection:</literal> de la
requête courante, si elle existe. Par exemple : '<literal>Keep-Alive</literal>'.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>HTTP_HOST</varname>'</term>
<listitem>
<simpara>
Contenu de l'en-tête <literal>Host:</literal> de la
requête courante, si elle existe.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>HTTP_REFERER</varname>'</term>
<listitem>
<simpara>
L'adresse de la page (si elle existe) qui a conduit le
client à la page courante. Cette valeur est
affectée par le client, et tous les clients ne le font pas.
Certains navigateurs permettent même de modifier la valeur de
<varname>HTTP_REFERER</varname>, sous forme de fonctionnalité.
En bref, ce n'est pas une valeur de confiance.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>HTTP_USER_AGENT</varname>'</term>
<listitem>
<simpara>
Contenu de l'en-tête <literal>User_Agent:</literal> de
la requête courante, si elle existe. C'est une chaîne
qui décrit le client HTML utilisé pour voir
la page courante. Par exemple :
<computeroutput>Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586)</computeroutput>.
Entre autres choses, vous pouvez utiliser cette valeur avec
<function>get_browser</function> pour optimiser votre page
en fonction des capacités du client.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>HTTPS</varname>'</term>
<listitem>
<simpara>
Défini à une valeur non-vide si le script a été appelé via le protocole HTTPS.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>REMOTE_ADDR</varname>'</term>
<listitem>
<simpara>
L'adresse IP du client qui demande la page courante.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>REMOTE_HOST</varname>'</term>
<listitem>
<simpara>
Le nom de l'hôte qui lit le script courant. La résolution
DNS inverse est basée sur la valeur de <varname>REMOTE_ADDR</varname>.
</simpara>
<note>
<simpara>
Votre serveur web doit être configuré pour créer cette variable.
Par exemple, pour Apache, vous devez ajouter la directive
<literal>HostnameLookups On</literal> dans le fichier
&httpd.conf;, pour que cette variable existe.
Voyez aussi <function>gethostbyaddr</function>.
</simpara>
</note>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>REMOTE_PORT</varname>'</term>
<listitem>
<simpara>
Le port utilisé par la machine cliente pour communiquer
avec le serveur web.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>REMOTE_USER</varname>'</term>
<listitem>
<simpara>
L'utilisateur authentifié.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>REDIRECT_REMOTE_USER</varname>'</term>
<listitem>
<simpara>
L'utilisateur authentifié si la requête a été redirigée en interne.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>SCRIPT_FILENAME</varname>'</term>
<listitem>
<para>
Le chemin absolu vers le fichier contenant le script en cours d'exécution.
<note>
<para>
Si un script est exécuté avec le CLI, avec un chemin relatif,
comme <filename>file.php</filename> ou
<filename>../file.php</filename>,
<varname>$_SERVER['SCRIPT_FILENAME']</varname>
contiendra le chemin relatif spécifié par l'utilisateur.
</para>
</note>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>SERVER_ADMIN</varname>'</term>
<listitem>
<simpara>
La valeur donnée à la directive SERVER_ADMIN
(pour Apache), dans le fichier de configuration. Si le script
est exécuté par un hôte virtuel, ce sera la
valeur définie par l'hôte virtuel.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>SERVER_PORT</varname>'</term>
<listitem>
<simpara>
Le port de la machine serveur utilisé pour les
communications. Par défaut, c'est <literal>"80"</literal>. En utilisant
SSL, par exemple, il sera remplacé par le numéro
de port HTTP sécurisé.
</simpara>
<note>
<simpara>
Avec Apache 2, vous devez définir <literal>UseCanonicalName = On</literal>,
mais aussi <literal>UseCanonicalPhysicalPort = On</literal> afin de récupérer
le port physique (réel), sinon, cette valeur pourrait être erronée et pourrait
retourner ou non la valeur correcte. Dans tous les cas, il n'est pas sécurisé
que de faire confiance en cette valeur suivant le contexte.
</simpara>
</note>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>SERVER_SIGNATURE</varname>'</term>
<listitem>
<simpara>
Chaîne contenant le numéro de version du serveur
et le nom d'hôte virtuel, qui sont ajoutés aux
pages générées par le serveur, si cette
option est activée.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>PATH_TRANSLATED</varname>'</term>
<listitem>
<simpara>
Chemin dans le système de fichiers (pas le document-root)
jusqu'au script courant, une fois que le serveur a fait
une traduction chemin virtuel -> réel.
</simpara>
<note>
<simpara>
Les utilisateurs d'Apache 2 devraient utiliser <literal>AcceptPathInfo = On</literal>
dans leur <filename>httpd.conf</filename> pour définir <envar>PATH_INFO</envar>.
</simpara>
</note>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>SCRIPT_NAME</varname>'</term>
<listitem>
<simpara>
Contient le nom du script courant. Cela sert lorsque
les pages doivent s'appeler elles-mêmes.
La constante <link linkend="language.constants.predefined">__FILE__</link>
contient le chemin complet ainsi que le nom du fichier (i.e. inclut) courant.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>REQUEST_URI</varname>'</term>
<listitem>
<simpara>
L'URI qui a été fourni pour accéder
à cette page. Par exemple : '<literal>/index.html</literal>'.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>PHP_AUTH_DIGEST</varname>'</term>
<listitem>
<simpara>
Lorsque vous utilisez l'authentification HTTP Digest,
cette variable est définie dans l'en-tête <literal>"Authorization"</literal>
envoyé par le client (que vous devez donc utiliser pour
réaliser la validation appropriée).
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>PHP_AUTH_USER</varname>'</term>
<listitem>
<simpara>
Lorsque vous utilisez l'authentification HTTP,
cette variable est définie à l'utilisateur fourni par l'utilisateur.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>PHP_AUTH_PW</varname>'</term>
<listitem>
<simpara>
Lorsque vous utilisez l'authentification HTTP,
cette variable est définie au mot de passe fourni par l'utilisateur.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>AUTH_TYPE</varname>'</term>
<listitem>
<simpara>
Lorsque vous utilisez l'authentification HTTP,
cette variable est définie au type d'identification.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>PATH_INFO</varname>'</term>
<listitem>
<simpara>
Contient les informations sur le nom du chemin fourni par le client
concernant le nom du fichier exécutant le script courant, sans
la chaîne relative à la requête si elle existe. Actuellement,
si le script courant est exécuté via l'URL
<filename>http://www.example.com/php/path_info.php/some/stuff?foo=bar</filename>,
alors la variable <varname>$_SERVER['PATH_INFO']</varname> contiendra
<literal>/some/stuff</literal>.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>ORIG_PATH_INFO</varname>'</term>
<listitem>
<simpara>
Version originale de '<varname>PATH_INFO</varname>' avant d'être analysée
par PHP.
</simpara>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example xml:id="variable.server.basic">
<title>Exemple avec <varname>$_SERVER</varname></title>
<programlisting role="php">
<![CDATA[
<?php
echo $_SERVER['SERVER_NAME'];
?>
]]>
</programlisting>
&example.outputs.similar;
<screen>
<![CDATA[
www.example.com
]]>
</screen>
</example>
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
&note.is-superglobal;
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><link linkend="book.filter">L'extension sur les filtres</link></member>
</simplelist>
</para>
</refsect1>
</phpdoc:varentry>
<!-- 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
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/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
-->