PHP 5.5.16 is released

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. Reportez-vous aux pages du manuel traitant des Auto-globales (aussi connues sous le nom de super-globales). Ces variables spéciales ont été introduites en » PHP 4.1.0. Auparavant, il fallait utiliser les variables $HTTP_*_VARS, comme $HTTP_SERVER_VARS. Bien qu'obsolètes, ces variables existent toujours. (Voir aussi la note sur l'ancien code.)

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/4.0 (compatible; MSIE 6.0; Windows NT 5.1)

Il y a de nombreux types de variables disponibles en PHP. Dans l'exemple ci-dessus, nous avons affiché un élément de Tableau (Array). Les tableaux peuvent être très utiles.

$_SERVER est juste une variable qui est automatiquement disponible dans votre script. Une liste de toutes les variables qui sont rendues disponibles est fournie dans la section Variables réservées ou vous pouvez aussi 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.

Vous pouvez 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 des Internet Explorer, nous pouvons faire cela :

Exemple #2 Exemple utilisant les structures de contrôle et les fonctions

<?php
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== FALSE) {
    echo 
'Vous utilisez Internet Explorer<br />';
}
?>

Le résultat de ce script, si vous utilisez Internet Explorer, sera :

Vous utilisez Internet Explorer<br />

Ici, nous introduisons plusieurs nouveaux concepts. Nous avons une structure if. Si vous êtes familier avec les syntaxes de base du langage C, cela ne vous surprendra pas. Si vous ne connaissez pas assez le langage C ou un autre langage dont la syntaxe est similaire à celle ci-dessus, il vaudrait mieux que vous lisiez une introduction à PHP, et assimiliez les premiers chapitres, ou bien lisez le chapitre consacré à la référence du langage.

Le second concept que nous avons introduit est la fonction strpos(). strpos() est une fonction intégrée à PHP, qui recherche la présence d'une chaîne dans une autre. Dans notre cas, nous avons recherché la chaîne "MSIE" dans la chaîne $_SERVER['HTTP_USER_AGENT']. Si cette chaîne est trouvée, la fonction retourne sa position dans la chaîne et, sinon, FALSE. Si elle ne retourne pas FALSE, la structure if reçoit TRUE et le code entre accolades {} est exécuté. Sinon, le code n'est pas exécuté. N'hésitez pas à 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. Si vous n'êtes pas sûr de l'utilisation de ces fonctions, vous devez lire la page du manuel "comment lire une définition de fonction" ainsi que la section sur les fonctions PHP.

Nous pouvons maintenant progresser et vous 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 (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== FALSE) {
?>
<h3>strpos() n'a pas retourné FALSE</h3>
<p>Vous utilisez Internet Explorer</p>
<?php
} else {
?>
<h3>strpos() a retourné FALSE</h3>
<p>Vous n'utilisez pas Internet Explorer</p>
<?php
}
?>

Un exemple de résultat obtenu dans ce script est :

<h3>strpos() n'a pas retourné FALSE</h3>
<p>Vous utilisez Internet Explorer</p>

Au lieu d'utiliser une commande echo, pour afficher du texte, vous pouvez utiliser du code HTML pur. Le point important à noter ici et que la logique de programmation est conservée. Seul un des deux blocs HTML sera affiché, suivant le résultat de la fonction strpos(). En d'autres termes, cela dépend si la chaîne MSIE a été trouvée ou non.

add a note add a note

User Contributed Notes 2 notes

up
16
Declan Kelly
3 months ago
Please note that Internet Explorer 11 no longer contains MSIE in its user agent string, for example on Windows 8 with IE11 I get the following:

Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko

So if you want to include a test for IE11, the code above changes to:

<?php
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== FALSE ||
   
strpos($_SERVER['HTTP_USER_AGENT'], 'Trident') !== FALSE) {
    echo
'You are using Internet Explorer.<br />';
}
?>
up
14
rfantin at coralwood dot com
7 years ago
While it's easy to get carried away mixing your logic and presentation together since it's so easy to do, you're better off using PHP within HTML only to fill in values, or include other source files.

Keep your actual processing in separate libraries that are called before you send any headers to the page. Try to avoid calling a script that retrieves or sets information, or manipulates it in the middle of your HTML. You'll find it's much easier to maintain.
To Top