Document 1 : client et serveur Les ordinateurs sur lesquels sont stockés les sites web sont appelés des serveurs. Ce sont des machines qui sont dédiées à cet effet : elles sont souvent sans écran et sans clavier. Lorsqu un ordinateur du réseau, appelé client, souhaite afficher une page web sur son écran, il envoie une demande appelée requête, en utilisant le protocole http, au serveur sur lequel le code source de cette page est enregistré. Le serveur envoie alors le code source au client en utilisant le même protocole. Cette organisation en «ordinateurs clients» et «ordinateurs serveurs» permet de diviser les tâches : les serveurs stockent un nombre considérable de données et sont spécialisés à cette fin, au détriment d autres applications. Si un ordinateur client ne peut pas agir comme un serveur, il contient en revanche un nombre d applications très diverses, dont le navigateur web qui permet d effectuer les requêtes et d interpréter les données envoyées par le serveur. L idée est la même que celle du fonctionnement d un restaurant : un client demande un repas, et le serveur le lui apporte. Le serveur rend ainsi un service au client. Le fonctionnement d un serveur est géré par un programme complexe. Ce programme complexe est un logiciel nommé APACHE, qui permet à un ordinateur de fonctionner en «serveur http», et notamment de traiter et de répondre aux requêtes http des ordinateurs clients. Il est possible de configurer son propre ordinateur en serveur connecté au réseau en installant le logiciel APACHE. il est également possible de simuler le fonctionnement d un serveur sur son propre ordinateur : une partie du disque dur et de la mémoire est alors utilisé comme un serveur virtuel, tandis que le reste constitue l ordinateur client. On parle alors d hôte local (Localhost). Des logiciels comme WAMP ou EASYPHP permettent de simuler une telle structure virtuelle, avec un serveur et un client, sur une seule machine. Document 2 : sites web statiques et sites web dynamiques. Le langage HTML permet de structurer du texte. C est un format de texte enrichi, permettant de donner du sens aux différentes parties du texte : organiser le texte en divisions, en listes ou en tableaux ; mettre en valeur certaines parties du texte ; créer des liens entre différents textes de façon à transformer le texte en hypertexte. Combiné avec le langage CSS, le langage HTML permet de mettre en forme un texte et de lui donner un style particulier. Le langage PHP (Personal Host Page ou encore Hypertext Preprocessor) est un langage de programmation et à ce titre permet de réaliser des instructions : déclarer des variables et leur affecter des valeurs, calculer des expressions, faire des tests et des boucles, exécuter des fonctions. Le langage PHP est interprété par le logiciel APACHE muni de l interpréteur PHP. Un programme en PHP s exécute donc uniquement sur un serveur, tandis que le langage HTML est interprété par un navigateur sur l ordinateur du client. Le langage HTML contient des informations sur la mise en forme du texte brut. En revanche, le langage PHP contient des instructions qui permettent de produire un code source en HTML. Le langage PHP peut également dialoguer avec un système de gestion de base de données, comme MYSQL par exemple, fonctionnant lui aussi sur un serveur. Lorsqu un client fait une requête d une page web présente sur le serveur et écrite en HTML uniquement, par exemple la page toto.html, le serveur envoie simplement le code source en HTML de cette page, ainsi que la feuille de style CSS correspondante. En revanche, si la page est écrite en PHP, ou contient du PHP en plus du HTML, alors le serveur exécute d abord les instructions PHP, ce qui aboutit à un code source uniquement en HTML : on dit qu il «génère» une page web en HTML. Le code source ainsi produit est ensuite envoyé au client comme précédemment. Le cheminement est donc le suivant : le client demande la page toto.php ; l interpréteur PHP présent sur le serveur exécute les instructions PHP, ce qui aboutit à un code source HTML. Le code source HTML produit est envoyé au navigateur du client, qui l interprète et affiche la page web. S il demande d afficher le code source de la page toto.php, le client ne voit donc pas les instructions PHP écrites dans le fichier toto.php, que son navigateur serait de toute façon incapable d exécuter. Le langage PHP permet donc de construire des sites web dynamiques, contrairement au langage HTML, qui donnera toujours la même page web. Document 3 : envoi de données par l url et traitement de ces données en PHP. Une URL (Uniform Ressource Locator) représente l adresse d une page web sur un serveur appartenant au réseau Internet. L URL correspond à l adresse IP de la machine sur laquelle est enregistrée la page web, complétée éventuellement par le chemin d accès vers le répertoire où se trouve cette page. Il est possible d utiliser l URL pour envoyer des données : c est d ailleurs un des rôles du protocole http que de permettre le transfert de données d une page à une autre via l URL.
Ces données envoyées par l URL sont appelés paramètres et peuvent être traitées par le langage PHP. Voici par exemple des paramètres écris directement dans l URL : http://www.page_1.php?jour=13&mois=janvier&annee=2014 Et le code de la page «traitement_parametre_url.php» qui les exploite, écrit avec l éditeur de texte NOTEPAD++ : L affichage des paramètres peut aussi se faire sur une seule ligne avec l opérateur de concaténation «.» : Document 4 : les formulaires HTML et leur traitement en PHP. Pour interagir avec l utilisateur (le «client»), le langage HTML dispose d une construction appelée formulaire permettant de saisir des données dans des champs spécifiques. Ces données sont ensuite envoyées à une page web du serveur qui les traite grâce au langage PHP. Il existe deux façons d envoyer des données vers une page web en utilisant le protocole http : - la méthode GET, où les données, limitées à 256 caractères, sont transmises dans l URL de la requête vers la page cible du serveur; - la méthode POST, où les données ne sont pas limitées en taillent, et transitent dans une deuxième requête http, et non dans l URL de la première requête demandant la page cible. Cette méthode est généralement utilisée dans les formulaires. Voici un exemple de pages HTML comprenant un formulaire utilisant la méthode GET, ainsi que la page traitant les données entrées par l utilisateur. Page «formulaire_get.html» contenant le formulaire utilisant la méthode GET:
Page «traitement_formulaire_get.php» traitant le formulaire : Un formulaire utilisant la méthode POST est semblable, seul le paramètre de l attribut «method» doit changer : il est remplacé par «post». De même, la nouvelle page cible, par exemple «traitement_formulaire_get.php», doit utiliser la valeur «$_POST [ nombre ]», le reste étant inchangé. Ces deux types de variables $_POST et $_GET sont en fait des tableaux (ou listes) associatifs, l index entier étant remplacé par un index de type chaîne de caractère (string). Ce sont de plus des variables générées automatiquement par PHP à chaque page (d où la syntaxe curieuse avec un underscore et en majuscule), il n est ainsi pas nécessaire de les déclarer en leur assignant une valeur préalable ; de telles variables sont appelées superglobales. Il est ainsi possible de transmettre de nombreux paramètres d une page à une autre, chaque paramètre étant identifié par le nom stipulé pour l attribut «name» du formulaire HTML, récupéré dans le tableau $_POST ou $_GET généré par PHP. Document 5 : les tableaux en PHP Le langage PHP permet de créer des tableaux associatifs. Un tableau (liste) associatif est une variable de type composite. Comme toutes les variables en PHP, elle doit commencer par le signe «$», et peut se déclarer de différentes façons : Un élément s affiche aussi de différentes façons, soit individuellement, soit avec une boucle dédiée aux tableaux, la boucle foreach :
Document 6 : never trust user Il est nécessaire d être très vigilant dès qu il s agit d exploiter avec le langage PHP des données rentrées par l utilisateur. Il faut tout d abord contrôler à l aide d un test si les données ont été correctement rentrées. Dans l exemple précédent, si l utilisateur ne rentre pas un nombre ou si ce nombre est négatif, ou encore trop grand, alors il ne se produit pas ce qui est attendu, ce qui peut aller jusqu à un message d erreur. Les instructions suivantes rajoutées entre les balises PHP permettent d éviter cela : Mais il y a plus gênant : il ne faut pas que l utilisateur puisse rentrer du code HTML, ou pire des instructions en langage JAVASCRIPT. Pour cela, il existe une fonction qui permet de retirer les balises insérées dans des données, que ce soit dans un formulaire ou dans l URL. Cette fonction essentielle pour la sécurité est la fonction «strip_tags». Par exemple, imaginons qu un méchant utilisateur rentre le code suivant dans le champ du formulaire : <script type="text/javascript">alert('badaboum')</script> Une instruction echo $_GET [ nombre ] donnerait le résultat suivant dans la fenêtre du navigateur : En revanche, les instructions : Afficheront simplement dans la fenêtre du navigateur : alert('badaboum') Les instructions JAVASCRIPT sont donc neutralisées. Cette précaution est indispensable dès qu il s agit de traiter des données entrées par un utilisateur.
Document 6 : utiliser le logiciel EASYPHP pour simuler les interactions entre un client et un serveur. Première étape : démarrer le serveur virtuel produit par le logiciel EASYPHP : Aller dans le menu démarrer tous les programmes EASYPHP DevServer 13.1 VC9 Vérifier ensuite que l icône suivante est présente dans la barre des taches : Double-cliquer sur l icône et vérifier que les services sont bien démarrés : Réduire ensuite la barre de contrôle d EASYPHP (ne pas la fermer!). Deuxième étape : enregistrer des pages dans le dossier «my portable files» du serveur web local. Ouvrir le dossier dont le chemin d accès est le suivant : Créer un dossier nommé «www». Enregistrer les pages au format.html ou.php. Troisième étape : effectuer une requête vers les pages stockées sur le serveur web local. Lancer le navigateur MOZILLA FIREFOX. Dans la barre d adresse du navigateur, taper l URL suivante : 127.0.0.1 Cette adresse est celle par défaut du serveur local, appelé hôte local (localhost). Les dossiers du serveur web local s affichent alors. Accéder au fichier voulu en cliquant dessus. Il est possible de taper directement l URL de la page cherchée, par exemple «mapage.html» : 127.0.0.1/my portable files/www/mapage.html Attention, toutes les pages doivent être stockées dans même dossier pour pouvoir effectuer des liens relatifs.