Trucs pratiques
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 variable.
Les variables sont faciles à repérer, car elles commencent toutes par
un signe dollar. La variable qui nous intéresse ici est
$_SERVER['HTTP_USER_AGENT'].
Note:
$_SERVER 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
Auto-globales
(aussi connues sous le nom de super-globales).
Pour afficher cette variable, nous pouvons simplement faire :
Exemple #1 Afficher le contenu d'une variable (élément de tableau)
<?php
echo $_SERVER['HTTP_USER_AGENT'];
?>
Un résultat possible du script pourra alors être :
Mozilla/5.0 (Linux) Firefox/112.0
Il y a de nombreux types de
variables disponibles en PHP. Dans l'exemple ci-dessus, nous avons affiché
un élément d'une variable Tableau (Array).
Les tableaux peuvent être très utiles.
$_SERVER 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
Variables réservées ; il est
également possible d'en obtenir une liste complète en lisant l'affichage de la fonction
phpinfo() utilisée dans l'exemple de la section précédente.
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 :
<?php
if (str_contains($_SERVER['HTTP_USER_AGENT'], 'Firefox')) {
echo 'Vous utilisez Firefox.';
}
?>
Le résultat de ce script, avec Firefox, sera :
Ici, nous introduisons plusieurs nouveaux concepts. Nous avons une
structure if.
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é à
la référence du langage.
Le second concept que nous avons introduit est la fonction str_contains().
str_contains() 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 "Firefox" (appelée needle)
dans $_SERVER['HTTP_USER_AGENT'] (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 if
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
if,
else, et d'autres
fonctions comme strtoupper() et
strlen(). 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
"comment lire une définition de fonction"
ainsi que la section sur les fonctions PHP.
Il est maintenant possible de progresser et de montrer comment utiliser le mode PHP,
au milieu du code HTML :
Exemple #3 Passer du mode PHP au mode HTML et vice-versa
<?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
}
?>
Un exemple de résultat obtenu dans ce script est :
<h3>str_contains() a retourné true</h3>
<p>Vous utilisez Firefox</p>
Au lieu d'utiliser une commande echo 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 str_contains().
En d'autres termes, cela dépend si la chaîne Firefox
a été trouvée ou non.