PHP : on reprend tout à zéro
Le 11-07-2005 par Cédric dans Tutoriels PHP.
XHTML, CSS, JavaScript,... et PHP : tout cela peut facilement embrouiller le débutant. Néanmoins la création d'un site web professionel nécessite la maîtrise de nombreux domaines, il est donc utile de revenir sur les principaux mécanismes employés lors de l'utilisation de PHP. Ceux-ci nécessitent d'être correctement compris et assimilés si l'on souhaite profiter du potentiel offert par les langages côté serveur.Dans cet article, nous nous proposons de ne pas aborder la programmation proprement dite mais de reprendre les bases nécessaires à la bonne compréhension et donc à l'utilisation de PHP. Nous décrirons de quelle façon PHP intervient lors de la consultation du site et nous nous pencherons sur les principales utilisation faites avec PHP: inclusion de fichier, utilisation de formulaires, etc.
Un peu de théorie
Cette section décrit de façon simple la façon dont se déroule "en interne" l'éxécution des scripts que nous évoquerons plus loin dans cet article. Il est nécessaire de bien comprendre le fonctionnement de PHP : il diffère à la fois du couple XHTML / CSS et bien qu'il s'agisse d'un langage de programmation à part entière, son fonctionnement est fort éloigné d'un programme "classique", écrit en C++ par exemple.
Les bases du HTTP
Que se passe-t-il lorsque vous entrez l'adresse d'une page dans votre agent utilisateur ?
L'agent utilisateur va établir une requête HTTP indiquant entre autre la page demandée. Cette requête, une fois arrivée au serveur correspondant à l'URI entrée, est traitée par un serveur web (tel qu'Apache ou IIS) qui va l'interpréter. Prenons le cas d'une requête demandant une page HTML "classique" : elle indique le nom de la page, qui une fois trouvée par le serveur web sur le disque dur du serveur est tout simplement renvoyée vers l'agent utilisateur du visiteur.
Ainsi, la visite d'un site ne se fait que par "morceau", page après page. Le serveur web et le client ne sont en relation qu'au moment où une requête est interprétée par le serveur web. Une fois que la page a été envoyée au client, le serveur web perd tout contact avec celui-ci.
Nous allons voir que ce mécanisme peut se compliquer fortement, notamment lors de l'emploi d'un langage côté serveur.
Langage côté serveur
Cette expression désigne un langage dont l'exécution à lieu sur le serveur et non sur la machine du "client" comme le sont les scripts JavaScript, les animations Flash ou tout simplement les rendus CSS de la page HTML : logique. Toutefois cela a de nombreuses implications :
- l'éxécution du script est indépendante du client : la machine de celui-ci ou son agent utilisateur n'interviennent pas ;
- le visiteur ne peut pas refuser l'éxécution du script, comme il peut le faire pour Javascript en le désactivant, ou avec dans le cas d'une animation Flash s'il ne possède pas le plug in ;
- les paramètres d'éxécution dépendent de la configuration du serveur web : il doit implémenter le "moteur" du langage côté serveur employé (PHP 4 ou 5, ASP, …) ;
- le script n'est pas en relation directe avec le client : celui-ci doit lui passer ses données (variables diverses) par un mécanisme particulier s'il veut qu'elles soient disponibles au moment de l'éxécution ;
- le client n'a aucune idée du traitement effectué : une fois le script exécuté, le document renvoyé ne contient plus le code PHP, il s'agit d'un simple document HTML, CSS ou autre. L'éxécution du script est donc totalement transparente pour l'agent utilisateur.
Exécution d'une page PHP
PHP étant un langage côté serveur, voyons comment l'éxécution d'une page contenant un script PHP se déroule. Imaginons une requête demandant au serveur web de livrer à l'agent utilisateur une page quelconque contenant du PHP. Il peut s'agir d'un document (X)HTML dont l'URI est entrée directement par le visiteur ou d'une feuille de style CSS apellée par l'agent utilisateur lors de la lecture d'une page html.
La configuration du serveur fait en sorte qu'il reconnaisse certaines extensions de fichiers (pour un fichier PHP il s'agit le plus souvent de .php). Quand le serveur web à affaire à ce type de fichier, son comportement diffère de celui que nous avons détaillé plus haut dans le cas d'une page "classique". Une fois le fichier trouvé, il va d'abord le passer à l'interpréteur correspondant (PHP dans notre cas). Celui-ci va traiter le script et renvoyer les données en sortie au serveur web, qui va lui-même les renvoyer au client.
Quelles sont ces données renvoyées au client ? Il s'agit tout simplement de ce que la fonction de la page implique : s'il s'agit d'un document (X)HTML, ce sera du (X)HTML, mais si la page est un fil RSS, les données renvoyées seront des données XML. Ainsi, une fois la page envoyée au client, il n'est plus question de PHP. C'est donc à vous de faire en sorte que votre script PHP renvoie les données correspondant au type de page générée et le cas échéant que ces données soient valides.
Quel a été le rôle de PHP ? Celui-ci a servi à générer les données qui ont été renvoyées au client. Par exemple, nous pouvons établir un script PHP qui va générer une page html en assemblant plusieurs fichiers, ou en insérant le contenu issu d'une base de données dans une page html existante.
Ainsi, le traitement effectué par PHP ne sert que d'intermédiaire : le client demande une page particulière (page html, feuille de style css, etc), le serveur web interprête la demande et lance l'éxécution d'un script qui va permettre la génération de la page avant de la renvoyer au client. Ainsi, pour le client il n'est pas question de PHP : une fois la page renvoyée elle ne contient plus de code PHP, mais uniquement des données d'un type particulier (une page html le plus souvent).
Ce mécanisme implique également que le script s'arrête une fois la page générée et renvoyée. Prennons l'exemple de la consultation d'un forum : il ne s'agit pas d'un processus continu, où un script PHP s'éxécute constamment. A chaque fois, le script reprend depuis le début, génère une page et s'arrête. Entre chacune de ses éxécutions (ou entre l'éxécution de différents script des pages d'un même site), un script PHP ne garde aucun "souvenir" du client. Chaque éxécution est totalement indépendantes des précédentes (nous verrons plus loin qu'il y a quand même moyen de garder une "trace" des éxécutions précédentes).
PHP dans la pratique
Mise en place d'un script
Un script PHP peut prendre place n'importe où à l'intérieur d'un document. Lorsque l'interpréteur PHP lit le fichier, il envoie en sortie tout le contenu qu'il trouve avant un script, ensuite le script est éxécuté (et renvoie peut être lui même des données). Une fois le script terminé, l'interpréteur continue de parcourir le fichier de la même façon et éxécute les éventuels autres script présents dans la suite du document.
Un script doit être encadré par un balisage particulier afin d'être reconnu comme tel. Le balisage suivant est le plus courant (et recommandé) afin de définir le début et la fin d'un script :
]]>
Différentes utilisations de PHP
Tout cela est bien beau, mais à quoi peut bien servir PHP ?
Nous pouvons faire une liste des utilisations les plus courantes :
- Traitement de formulaire: il est possible de traiter facilement les données envoyées via un formulaire HTML, par exemple, les données peuvent être traitées et insérées dans une base de données ou envoyées par email à l'auteur du site ;
- Utilisation d'un modèle de page : PHP est très souvent utilisé pour construire dynamiquement les pages sur base de modèles / template. Le contenu d'une page particulière est inséré dynamiquement au sein d'une page servant de modèle ;
- Gestion d'un panier d'achat : il est possible de suivre les visiteurs de page en page et ainsi de suivre leurs achats. Comme nous l'avons décrit plus haut, la consultation d'un site se fait "par bond", le serveur web ne gardant pas trace des précédentes pages consultées. PHP permet par l'utilisation des variables de session de contourner ce problème.
En guise de conclusion
La création d'un site web nécessite l'imbrication de nombreux langages, on a vite fait de s'embrouiller les pinceaux. Il convient donc de bien se rendre compte de ce que l'on fait, plus particulièrement lorsqu'on utilise un langage côté serveur. La connaissance théorique du fonctionnement "interne" évite le plus souvent les confusions.
N'hésitez pas à consulter la FAQ PHP afin de vous clarifier les idées si vous rencontrez des problèmes avec vos premiers scripts.







