Généralités sur le navigateur PHP, les structures de contrôle, et plus de détails sur les matrices
PHP vu sous l’angle de RPG : Les fonctions du navigateur PHP
Comme vous le verrez, presque tout ce qui concerne PHP, et spécialement le traitement de l’entrée du navigateur, fait appel aux matrices, à des degrés divers. L’exemple de ce mois vous présentera certains aspects des matrices PHP. Mais il y a d’autres fonctions intéressantes pas faciles à incorporer dans l’exemple, c’est pourquoi vous les trouverez dans l’encadré « Jouons un peu avec les matrices » ci-après. Outre les fonctions de base de l’entrée du navigateur, nous verrons de plus près les structures de contrôle en comparant celles de PHP et de RPG.
Séparer la logique du formatage de l’affichage
Parce que c’est une question courante et qu’elle concerne le sujet de ce mois, je tiens à expliquer brièvement la séparation de la logique PHP du code de formatage de l’affichage (c’est-à-dire, HTML). Pendant mes cours PHP, les RPGistes demandent souvent pourquoi, dans la plupart de mes exemples PHP, le HTML est imbriqué dans le script. La raison est très simple, selon moi. Contrairement à RPG, PHP n’a pas un équivalent unique de fichiers d’affichage décrits en externe. Quand j’écris un exemple RPG, j’ai la certitude que si j’utilise un EXFMT dans le code, mon auditoire ou lectorat comprendra ce que je fais. PHP peut, et il le fait dans la plupart des applications modernes, externaliser ses formats d’écran à l’instar de RPG, mais cela peut se faire de multiples manières. Par conséquent, les exemples ne peuvent pas être subordonnés à la connaissance de telle ou telle méthode par le lecteur.
D’autres approches de ce genre vous seront proposées dans la suite de cette série. Pour l’instant, j’utiliserai l’approche de HTML imbriqué, mais avec une astuce dans cet exemple particulier. Dans le cas présent, j’utilise la technique principale suivante : j’incorpore le formulaire HTML dans le script principal, mais je le code en HTML pur plutôt que d’utiliser echo ou print pour l’ajouter à la page web. Cela me permet d’utiliser un éditeur HTML classique pour créer le formulaire. Bien entendu, l’éditeur PHP de Zend Studio, dans lequel j’effectue la plus grande partie de mon travail PHP, comprend et vérifie la syntaxe HTML, mais il n’a pas une vue WYSIWYG. La plupart des éditeurs WYSIWYG HTML d’aujourd’hui (comme Dreamweaver et KompoZer) comprennent des îlots de code PHP jusqu’au point de pouvoir les mettre en évidence en tant que tels dans leurs vues WYSIWYG. En revanche, ces éditeurs ne comprennent pas la syntaxe PHP, et donc je préfère m’en tenir à Zend Studio.
Pour employer le HTML statique dans un script PHP, vous devez d’abord comprendre comment PHP peut être utilisé pour conditionner la sortie d’un tel HTML. Et avant de pouvoir comprendre cela, vous devez savoir comment la logique conditionnelle de base est codée en PHP. Et tout cela pour un simple formulaire d’entrée ! Mais après avoir réfléchi longuement au mode d’explication de cette série de techniques simples connexes, j’en ai conclu qu’il fallait procéder étape par étape. Ce n’est pas vraiment difficile, mais tout repose sur un certain nombre de principes.
Une illustration utile
La figure 1 illustre la technique de base. Le script commence par attribuer la valeur 5 à la variable $x. Ensuite il fait un test (en A de la figure 1) pour voir si $ contient la valeur 5 (je sais bien que ce sera toujours vrai à ce stade, mais un peu de patience !). Si oui, le script utilise echo pour émettre un message à cet effet. Si le test échoue, la condition else entre en jeu et on a un message d’échec. C’est simple, non ? Mais peut-être qu’une explication de la structure de contrôle if de PHP s’impose. J’approfondis les structures de contrôle dans l’encadré « Structures de contrôle conditionnelles de PHP » ci-après. Mais, pour l’instant, sachez simplement qu’il y a trois principales différences dans l’utilisation d’instructions if en PHP et en RPG. En RPG, la syntaxe de base de if/else est la suivante :
If expression;
code to execute if true;
else;
code to execute if false;
endif;
En PHP, la même chose serait codée ainsi :
if (expression) {
code to execute if true;
} else {
code to execute if false;
}
L’alignement des caractères { } relève du style, mais la construction de base reste la même. On voit bien les trois principales différences :
- L’expression qui est évaluée doit être entre parenthèses ( ) pour PHP ; tandis qu’en RPG, c’est une bonne pratique conseillée mais pas obligatoire.
- En PHP, le code à exécuter est délimité par des caractères { } (on appelle cela un groupe d’instructions), et il n’y a pas de point-virgule (;) après le if ou le else.
- endif n’est pas obligatoire en PHP : le signe } le remplace. Mais il existe une variante de syntaxe PHP qui l’utilise. Pour plus de détails, lisez l’encadré « Structures de contrôle conditionnelles de PHP » ci-après.
En B de la figure 1, vous voyez une instruction if identique à celle de A—mais—suivant immédiatement le { qui commence le vrai groupe d’instructions, je termine l’îlot de code PHP par un ?>. Cela vous étonne peut-être ? Mais l’effet est le suivant : le texte HTML en C de la figure 1 ne sera envoyé au navigateur que si l’expression en B est vraie. En D de la figure 1, j’ai ouvert un autre îlot de code, dans lequel je ferme immédiatement le groupe vrai, code un else, puis ouvre le groupe d’instructions avant de terminer immédiatement l’îlot de code PHP, en laissant le HTML en E être considéré comme faisant partie du groupe d’instructions. Naturellement, le contenu en E ne sera envoyé en sortie que lorsque le résultat du test if sera faux. Pour finir, en F de la figure 1, j’ouvre un dernier îlot de code pour fermer le groupe else. Cette façon de faire est courante en PHP et elle vous permet de placer des contrôles conditionnels sur la sortie HTML sans utiliser print ou echo.
Exécutez le script et vous verrez que seuls les messages « true » (vrai) apparaissent dans le navigateur. Modifiez le script pour donner une valeur différente à $x (n’importe quoi sauf 5) et exécutez à nouveau le script dans le navigateur. Cette fois-ci vous devriez voir les messages « false » (faux) apparaître.
Ce mécanisme étant bien compris, revenons en arrière et regardons comment ce principe s’applique à la sortie du formulaire HTML (figure 4). En identifiant les parties du script que je veux décrire, j’ai groupé les composants HTML avec la partie appropriée du code PHP en utilisant la même lettre initiale. Ainsi, A dans le script PHP correspond à A1, A2, et A3 dans le HTML.
Mais avant d’examiner le HTML et le code PHP derrière lui, jetons un coup d’oeil au formulaire Web (figure 2) que j’utiliserai dans cet exemple. Simple, ce formulaire se résume à deux champs d’entrée et à une liste à sélections multiples. (La figure 3 montre le résultat obtenu en exécutant le script avec les entrées du formulaire de la figure 2.) Cependant, je suis intervenu sur le nommage des champs du formulaire pour faciliter leur utilisation dans le script PHP (figure 4).
Téléchargez cette ressource
Sécuriser votre système d’impression
Longtemps sous-estimée, la sécurisation d’un système d’impression d’entreprise doit être pleinement prise en compte afin de limiter le risque de fuite d’informations sensibles. Voici les 3 principales précautions à prendre.