mirror of
https://github.com/php/doc-fr.git
synced 2026-03-23 22:52:18 +01:00
475 lines
18 KiB
XML
Executable File
475 lines
18 KiB
XML
Executable File
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- EN-Revision: 876557ae38f6ca5035618f7cea48ca627118b437 Maintainer: lacatoire Status: ready -->
|
|
<!-- Reviewed: yes -->
|
|
|
|
<chapter xml:id="tutorial" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
<info><title>Une introduction à PHP</title></info>
|
|
|
|
<para>
|
|
Dans cette section, nous voulons illustrer les principes de base
|
|
de PHP dans une courte introduction. Ce chapitre traite uniquement
|
|
de création de pages web dynamiques avec PHP, laissant de côté
|
|
temporairement les autres possibilités de PHP. Voir la section
|
|
<link linkend="intro-whatcando">Ce que peut faire PHP</link> pour
|
|
plus d'informations.
|
|
</para>
|
|
<para>
|
|
Les pages web qui exploitent PHP sont traitées comme des pages
|
|
HTML standards, et il est possible de les créer, éditer et effacer
|
|
de la même façon qu'avec des pages HTML classiques.
|
|
</para>
|
|
|
|
<section xml:id="tutorial.firstpage">
|
|
<info><title>La première page PHP</title></info>
|
|
<simpara>
|
|
Ce tutoriel suppose que PHP est déjà installé.
|
|
Les instructions d'installation sont disponibles sur la
|
|
<link xlink:href="&url.php.downloads;">page de téléchargement</link>.
|
|
</simpara>
|
|
<para>
|
|
Créer un fichier appelé <filename>hello.php</filename>
|
|
avec le contenu suivant :
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<info><title>Notre premier script PHP : <filename>hello.php</filename></title></info>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
|
|
echo "Hello World!";
|
|
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
<simpara>
|
|
Depuis le terminal, il faut se rendre dans le répertoire contenant ce fichier et
|
|
démarrer un serveur de développement avec la commande suivante :
|
|
</simpara>
|
|
<programlisting role="shell">
|
|
<![CDATA[
|
|
php -S localhost:8000
|
|
]]>
|
|
</programlisting>
|
|
<simpara>
|
|
Il faut utiliser un navigateur pour accéder au fichier en utilisant l'URL du serveur web, se terminant
|
|
avec la référence au fichier <literal>/hello.php</literal>.
|
|
Selon la commande précédente exécutée, l'URL sera
|
|
<literal>http://localhost:8000/hello.php</literal>.
|
|
Si tout est configuré correctement, ce fichier sera analysé par PHP
|
|
et la sortie "Hello World!" sera affichée dans le navigateur.
|
|
</simpara>
|
|
<simpara>
|
|
PHP peut être intégré dans une page web HTML normale. Cela signifie que, dans le document HTML,
|
|
il est possible d'écrire des instructions PHP, comme démontré dans l'exemple suivant :
|
|
</simpara>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<title>Test PHP</title>
|
|
</head>
|
|
<body>
|
|
<?php echo '<p>Bonjour le monde</p>'; ?>
|
|
</body>
|
|
</html>
|
|
]]>
|
|
</programlisting>
|
|
<simpara>
|
|
Cela produira le résultat suivant :
|
|
</simpara>
|
|
<screen role="html">
|
|
<![CDATA[
|
|
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<title>Test PHP</title>
|
|
</head>
|
|
<body>
|
|
<p>Bonjour le monde</p>
|
|
</body>
|
|
</html>
|
|
]]>
|
|
</screen>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
Ce programme est extrêmement simple et PHP n'est pas nécessaire
|
|
pour créer une page web comme ceci. Elle ne fait qu'afficher
|
|
<literal>Bonjour le monde</literal>, grâce à la fonction
|
|
<function>echo</function>
|
|
de PHP. Il est à noter que ce fichier <emphasis>n'a pas besoin d'être exécutable</emphasis>
|
|
ou autre, dans aucun cas. Le serveur sait que ce fichier a besoin d'être interprété
|
|
par PHP, car l'extension ".php" est utilisée, et le serveur est configuré pour
|
|
les passer à PHP. Il s'agit d'une page HTML normale qui contient une série
|
|
de balises spéciales qui permettent de réaliser beaucoup de choses intéressantes.
|
|
</para>
|
|
|
|
<para>
|
|
Le point important de cet exemple était de montrer le format des
|
|
balises spéciales PHP. Nous avons utilisé ici
|
|
<literal><?php</literal> pour indiquer le début de la balise PHP.
|
|
Puis, nous avons introduit les commandes PHP et refermé les balises
|
|
PHP avec <literal>?></literal>. Il est possible de passer du mode PHP
|
|
au mode HTML et vice-versa, de cette manière, à volonté. Pour plus
|
|
d'informations, consulter la section du manuel sur la
|
|
<link linkend="language.basic-syntax">syntaxe basique de PHP</link>.
|
|
</para>
|
|
|
|
<note>
|
|
<info><title>Une note sur les retours à la ligne</title></info>
|
|
<para>
|
|
Les retours à la ligne ont une signification minime en HTML, cependant,
|
|
c'est toujours une bonne idée de rendre le HTML aussi joli et proche
|
|
que possible en y ajoutant des retours à la ligne. Un retour à la ligne
|
|
suivant immédiatement une balise de fermeture PHP (<literal>?></literal>)
|
|
sera supprimé par PHP. Ceci peut être vraiment très utile lors de
|
|
l'insertion de plusieurs blocs PHP ou fichiers inclus contenant du PHP qui
|
|
n'est pas supposé afficher quoi que ce soit. En même temps, ce peut
|
|
être confus. Il est possible d'ajouter un espace après la balise fermante
|
|
PHP (<literal>?></literal>) pour forcer l'espace et un retour à
|
|
la ligne à afficher, ou d'ajouter explicitement un retour à la ligne
|
|
dans le dernier echo/print du bloc PHP.
|
|
</para>
|
|
</note>
|
|
|
|
<note>
|
|
<info><title>Une note sur les éditeurs de texte</title></info>
|
|
<para>
|
|
Il existe de nombreux éditeurs de texte et environnements de
|
|
développement (IDE) utilisables pour créer, éditer
|
|
et gérer des applications PHP. Une liste partielle de ces outils
|
|
est entretenue à l'adresse
|
|
<link xlink:href="&url.phpeditorlist;">PHP Editor's List</link>.
|
|
Pour recommander un éditeur particulier, il suffit de visiter
|
|
cette page et de demander au webmestre de l'ajouter. Avoir au minimum
|
|
un éditeur de texte avec la coloration syntaxique peut être utile.
|
|
</para>
|
|
</note>
|
|
|
|
<note>
|
|
<info><title>Une note sur les traitements de texte</title></info>
|
|
<para>
|
|
Les traitements de texte tels que StarOffice Writer, Microsoft Word et
|
|
Abiword sont de très mauvais choix pour éditer des scripts PHP.
|
|
Pour utiliser l'un d'entre eux malgré tout pour tester des
|
|
scripts, il faut s'assurer de sauver les fichiers au format
|
|
texte seul (<emphasis>plain text</emphasis>) : sinon, PHP ne sera pas capable de lire
|
|
et d'exécuter ces scripts.
|
|
</para>
|
|
</note>
|
|
|
|
<para>
|
|
Maintenant que le script PHP précédent fonctionne, c'est le moment
|
|
de créer le meilleur script PHP ! Un appel à la fonction
|
|
<function>phpinfo</function> affichera beaucoup d'informations
|
|
intéressantes sur le système et sa configuration comme les
|
|
<link
|
|
linkend="language.variables.predefined">variables pré-définies disponibles</link>,
|
|
les modules PHP chargés ainsi que la <link linkend="configuration">configuration</link>.
|
|
Prendre le temps de revoir ces informations importantes.
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<info><title>Récupération des informations du système depuis PHP</title></info>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
|
|
phpinfo();
|
|
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
</section>
|
|
|
|
<section xml:id="tutorial.useful">
|
|
<info><title>Trucs pratiques</title></info>
|
|
<para>
|
|
Réalisons maintenant quelque chose de plus puissant. Nous allons
|
|
vérifier le type de navigateur que le visiteur de notre site utilise.
|
|
Pour cela, nous allons accéder aux informations que le navigateur
|
|
du visiteur nous envoie, lors de sa requête HTTP. Cette information
|
|
est stockée dans une <link linkend="language.variables">variable</link>.
|
|
Les variables sont faciles à repérer, car elles commencent toutes par
|
|
un signe dollar. La variable qui nous intéresse ici est
|
|
<varname>$_SERVER['HTTP_USER_AGENT']</varname>.
|
|
</para>
|
|
<note>
|
|
<para>
|
|
<varname>$_SERVER</varname> est une
|
|
variable spéciale de PHP, qui contient toutes les informations
|
|
relatives au serveur web. C'est une variable réservée de PHP,
|
|
et une superglobale. Se reporter aux pages du manuel traitant des
|
|
<link linkend="language.variables.superglobals">Auto-globales</link>
|
|
(aussi connues sous le nom de super-globales).
|
|
</para>
|
|
</note>
|
|
<para>
|
|
Pour afficher cette variable, nous pouvons simplement faire :
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<info><title>Afficher le contenu d'une variable (élément de tableau)</title></info>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
|
|
echo $_SERVER['HTTP_USER_AGENT'];
|
|
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
<para>
|
|
Un résultat possible du script pourra alors être :
|
|
</para>
|
|
<screen role="html">
|
|
<![CDATA[
|
|
Mozilla/5.0 (Linux) Firefox/112.0
|
|
]]>
|
|
</screen>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
Il y a de nombreux <link linkend="language.types">types</link> de
|
|
variables disponibles en PHP. Dans l'exemple ci-dessus, nous avons affiché
|
|
un élément d'une variable <link linkend="language.types.array">Tableau (Array)</link>.
|
|
Les tableaux peuvent être très utiles.
|
|
</para>
|
|
<para>
|
|
<varname>$_SERVER</varname> est juste une variable qui est automatiquement
|
|
disponible dans le script. Une liste de toutes les variables qui sont
|
|
rendues disponibles est fournie dans la section
|
|
<link linkend="reserved.variables">Variables réservées</link> ; il est
|
|
également possible d'en obtenir une liste complète en lisant l'affichage de la fonction
|
|
<function>phpinfo</function> utilisée dans l'exemple de la section précédente.
|
|
</para>
|
|
<para>
|
|
Il est possible d'ajouter plusieurs commandes PHP dans une balise PHP, et créer
|
|
de petits blocs de code qui réalisent des opérations plus complexes
|
|
qu'un simple affichage. Par exemple, si nous voulons vérifier que le
|
|
navigateur est bien de la famille Firefox, nous pouvons
|
|
faire cela :
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<info><title>Exemple utilisant les
|
|
<link linkend="language.control-structures">structures de contrôle</link> et
|
|
les <link linkend="language.functions">fonctions</link></title></info>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
|
|
if (str_contains($_SERVER['HTTP_USER_AGENT'], 'Firefox')) {
|
|
echo 'Vous utilisez Firefox.';
|
|
}
|
|
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
<para>
|
|
Le résultat de ce script, avec Firefox, sera :
|
|
</para>
|
|
<screen role="html">
|
|
<![CDATA[
|
|
Vous utilisez Firefox.
|
|
]]>
|
|
</screen>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
Ici, nous introduisons plusieurs nouveaux concepts. Nous avons une
|
|
structure <link linkend="control-structures.if">if</link>.
|
|
Les personnes familières avec les syntaxes de base du langage C ne seront
|
|
pas surprises. Dans le cas contraire, il est recommandé de lire une
|
|
introduction à PHP et d'assimiler les premiers chapitres, ou bien
|
|
de consulter le chapitre consacré à
|
|
<link linkend="langref">la référence du langage</link>.
|
|
</para>
|
|
<para>
|
|
Le second concept que nous avons introduit est la fonction <function>str_contains</function>.
|
|
<function>str_contains</function> est une fonction intégrée à PHP, qui détermine
|
|
la présence d'une chaîne donnée dans une autre. Dans notre cas, nous
|
|
avons recherché la chaîne <literal>"Firefox"</literal> (appelée needle)
|
|
dans <varname>$_SERVER['HTTP_USER_AGENT']</varname> (appelée haystack).
|
|
Si la chaîne recherchée est trouvée, la fonction retourne &true;. Sinon, elle retourne &false;.
|
|
Si elle retourne &true;, la structure <link linkend="control-structures.if">if</link>
|
|
reçoit &true; et le code entre accolades {} est exécuté. Sinon, le code n'est pas
|
|
exécuté. Il est recommandé d'expérimenter d'autres exemples, à l'aide de
|
|
<link linkend="control-structures.if">if</link>,
|
|
<link linkend="control-structures.else">else</link>, et d'autres
|
|
fonctions comme <function>strtoupper</function> et
|
|
<function>strlen</function>. Chaque page de la documentation contient aussi
|
|
des exemples. En cas de doute sur l'utilisation de ces fonctions, il est recommandé de lire
|
|
la page du manuel
|
|
"<link linkend="about.prototypes">comment lire une définition de fonction</link>"
|
|
ainsi que la <link linkend="language.functions">section sur les fonctions PHP</link>.
|
|
</para>
|
|
<para>
|
|
Il est maintenant possible de progresser et de montrer comment utiliser le mode PHP,
|
|
au milieu du code HTML :
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<info><title>Passer du mode PHP au mode HTML et vice-versa</title></info>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
if (str_contains($_SERVER['HTTP_USER_AGENT'], 'Firefox')) {
|
|
?>
|
|
<h3>str_contains() a retourné true</h3>
|
|
<p>Vous utilisez Firefox</p>
|
|
<?php
|
|
} else {
|
|
?>
|
|
<h3>str_contains() a retourné false</h3>
|
|
<p>Vous n'utilisez pas Firefox</p>
|
|
<?php
|
|
}
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
<para>
|
|
Un exemple de résultat obtenu dans ce script est :
|
|
</para>
|
|
<screen role="html">
|
|
<![CDATA[
|
|
<h3>str_contains() a retourné true</h3>
|
|
<p>Vous utilisez Firefox</p>
|
|
]]>
|
|
</screen>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
Au lieu d'utiliser une commande <function>echo</function> pour afficher
|
|
du texte, il est possible d'utiliser du code HTML pur. Le point important à noter
|
|
ici est que la logique de programmation est conservée. Seul un des deux
|
|
blocs HTML sera affiché, suivant le résultat de la fonction <function>str_contains</function>.
|
|
En d'autres termes, cela dépend si la chaîne <literal>Firefox</literal>
|
|
a été trouvée ou non.
|
|
</para>
|
|
</section>
|
|
|
|
<section xml:id="tutorial.forms">
|
|
<info><title>Utiliser un formulaire</title></info>
|
|
<para>
|
|
L'un des points forts de PHP est sa capacité à gérer les formulaires.
|
|
Le concept de base qui est important à comprendre est que tous les
|
|
champs d'un formulaire seront automatiquement disponibles dans le
|
|
script PHP d'action. Consulter le chapitre du manuel concernant les
|
|
<link linkend="language.variables.external">variables depuis des sources externes à PHP</link>
|
|
pour plus d'informations et d'exemples sur la façon d'utiliser les
|
|
formulaires. Voici un exemple de formulaire HTML :
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<info><title>Un simple formulaire HTML</title></info>
|
|
<programlisting role="html">
|
|
<![CDATA[
|
|
<form action="action.php" method="post">
|
|
<label for="nom">Votre nom :</label>
|
|
<input name="nom" id="nom" type="text">
|
|
|
|
<label for="age">Votre âge :</label>
|
|
<input name="age" id="age" type="number">
|
|
|
|
<button type="submit">Valider</button>
|
|
</form>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
Il n'y a rien de particulier dans ce formulaire. Il est en HTML
|
|
pur, sans aucune configuration particulière. Lorsque le visiteur
|
|
remplit le formulaire et clique sur le bouton Valider, le
|
|
fichier <filename>action.php</filename> est appelé. Dans ce
|
|
fichier, il est possible d'écrire le script suivant :
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<info><title>Afficher des données issues d'un formulaire</title></info>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
Bonjour, <?php echo htmlspecialchars($_POST['nom']); ?>.
|
|
Tu as <?php echo (int) $_POST['age']; ?> ans.
|
|
]]>
|
|
</programlisting>
|
|
<para>
|
|
Voici le résultat possible, selon
|
|
les valeurs saisies :
|
|
</para>
|
|
<screen role="html">
|
|
<![CDATA[
|
|
Bonjour Jean.
|
|
Tu as 29 ans.
|
|
]]>
|
|
</screen>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
Mis à part les parties <function>htmlspecialchars</function> et
|
|
<literal>(int)</literal>, ce script ne fait que des choses évidentes.
|
|
<function>htmlspecialchars</function> s'assure que tous les caractères
|
|
spéciaux HTML sont proprement encodés afin d'éviter des injections
|
|
de balises HTML et de Javascript dans les pages. Pour l'âge, vu que
|
|
c'est un entier, il est possible de le
|
|
<link linkend="language.types.typecasting">convertir</link> en un
|
|
&integer;. PHP peut également le faire
|
|
automatiquement en utilisant l'extension
|
|
<link linkend="ref.filter">filter</link>.
|
|
Les variables <varname>$_POST['nom']</varname> et
|
|
<varname>$_POST['age']</varname> sont automatiquement créées par PHP.
|
|
Un peu plus tôt dans ce tutoriel, nous avons utilisé la variable
|
|
<varname>$_SERVER</varname>, une superglobale. Maintenant, nous avons
|
|
introduit une autre superglobale <varname>$_POST</varname>
|
|
qui contient toutes les données envoyées par la méthode POST. Il est à noter que
|
|
dans notre formulaire, nous avons choisi la <emphasis>méthode</emphasis> POST.
|
|
Si nous avions utilisé la méthode <emphasis>GET</emphasis> alors notre formulaire
|
|
aurait placé ces informations dans la variable <varname>$_GET</varname>,
|
|
une autre superglobale. Il est également possible d'utiliser la variable
|
|
<varname>$_REQUEST</varname>,
|
|
pour ne pas se soucier de la méthode utilisée. Elle contient
|
|
un mélange des données de GET, POST et COOKIE.
|
|
</para>
|
|
</section>
|
|
|
|
<section xml:id="tutorial.whatsnext">
|
|
<info><title>Et après ?</title></info>
|
|
<para>
|
|
Avec ces connaissances, il est maintenant possible de comprendre
|
|
l'essentiel de la documentation PHP, et les différents scripts d'exemples
|
|
disponibles dans les archives.
|
|
</para>
|
|
<para>
|
|
Différentes présentations des capacités de PHP sont disponibles sur le
|
|
site des conférences PHP :
|
|
<link xlink:href="&url.php.talks;">&url.php.talks;</link>.
|
|
</para>
|
|
</section>
|
|
</chapter>
|
|
|
|
<!-- 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
|
|
-->
|