Pages web dynamiques et PHP

Licence Informatique, semestre 6

Alexandre NiveauJean-Marc Lecarpentier — Judith Jeyafreeda Andrew

Enseignement des technologies du Web

 

Pages web dynamiques et PHP

Notes de cours

  • Pages web dynamiques
    • Limites des pages statiques
    • Utilisation de langages pour générer dynamiquement le HTML
    • Transmission de données du client au serveur
  • Introduction à PHP
    • Syntaxe générale : variables, structures de contrôle, fonctions…
    • Tableaux et tableaux associatifs
    • Lecture d’un fichier
    • Divers détails spécifiques au langage

Travail personnel

Objectifs

Après avoir fait ce TP, vous devriez maîtriser les bases du langage PHP pour la génération de pages HTML.

Exercice 1 — Premiers pas avec PHP #

Un corrigé de cet exercice est disponible (archive du code, résultat).

Cet exercice vise à vous familiariser avec les pages dynamiques et le fonctionnement de PHP. Pour rappel, une page PHP est un script, qu'il faut exécuter pour en voir le résultat. C'est le serveur qui exécute le script quand un client y accède via HTTP : si vous essayez d'ouvrir une page PHP locale avec votre navigateur, ça ne fonctionnera pas (le navigateur vous proposera probablement de la télécharger).

  1. Créer, sur votre espace web (dev), un fichier hello.php et y placer le code suivant :
    <?php
    	$nom = "World";
    ?>
    <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="UTF-8" />
    	<title>Hello World en PHP</title>
    </head>
    <body>
    	<p>Hello <?php echo $nom; ?>!</p>
    </body>
    </html>
    
    Accéder à la page correspondante sur votre site (en HTTP ; pas en local, ni en SFTP). Vérifiez que tout se passe bien (le résultat doit être similaire à cette page).
  2. Modifier le contenu de la variable $nom pour que la page vous salue (par ex. « Hello Jean-Benoît! » si vous vous appelez Jean-Benoît).
  3. Ajouter un titre h1 à la page : « Page de bienvenue de Jean-Benoît »
  4. Changer à nouveau le contenu de $nom (mettre un autre prénom) : vérifier que le titre s'adapte.
  5. Ajouter une deuxième variable et l'utiliser dans la page (par exemple une variable $age).
  6. Regarder le code source de la page dans le navigateur, et le comparer au code source PHP. Le navigateur peut-il savoir que la page a été générée par un script PHP ?

Exercice 2 — Boucles, tableaux et fonctions en PHP #

Un corrigé de cet exercice est disponible (archive).

Cet exercice a pour objectif de vous faire manipuler la syntaxe de base de PHP.

  1. Créer une page PHP test.php qui affiche tous les nombres entiers de 1234 à 5678, avec un saut de ligne après chaque nombre.
  2. Dans une page PHP, mettre dans une variable $tab un tableau (array) de 10 cases, tel que la case d'indice i contienne la valeur 3×i+2, en utilisant une boucle for.
  3. Afficher le contenu de $tab en utilisant une boucle foreach. On n'attend pas que vous fassiez un tableau HTML ; affichez juste les valeurs, en les séparant par exemple par une espace.
  4. Dans une page PHP, créer une fonction prenant en paramètre un tableau de nombres et renvoyant la moyenne arithmétique de ces nombres. Tester par exemple sur le tableau $tab.
  5. Dans une page PHP, créer un tableau associatif contenant quelques URL de sites : http://google.fr à la clef « Google » et http://wikipedia.org à la clef « Wikipédia », par exemple. Afficher ensuite un menu (HTML) en utilisant ce tableau, par exemple
  6. Amélioration de la question précédente : écrire une fonction prenant un tableau associatif en paramètre, ayant pour clefs des noms de site et pour valeurs des URL, et qui retourne une chaîne de caractères contenant le code HTML du menu correspondant.

Exercice 3 — Manipulation de fichiers, inclusion et redirection #

Un corrigé de cet exercice est disponible (archive).

Téléchargez l'archive de l'exercice, qui contient un fragment de HTML et un fragment de PHP, ainsi qu'un script inclusion.php qui utilise ces fragments.

Inclusion avec include/require

  1. Placez le contenu de l'archive sur votre serveur, regardez bien le contenu des scripts, observez le résultat. Assurez-vous de bien comprendre ce qui se passe.
  2. Remplacez les trois include par des require, et regardez à nouveau le résultat. Quelle est la différence ?
  3. Enlevez l'inclusion du fragment inexistant et vérifiez que cette fois la conclusion s'affiche bien.
  4. Dupliquez le contenu du body (copiez le contenu, du début jusqu'à la conclusion, et collez-le après la conclusion). Chaque inclusion aura donc lieu deux fois. Que se passe-t-il, et pourquoi ?
  5. Remplacez les quatre require par des require_once, et expliquez le résultat.

Il existe aussi include_once, mais il est moins utile. À moins d'avoir une bonne raison, il vous est recommandé d'utiliser include pour inclure un fragment de contenu (HTML ou PHP), et require_once pour inclure un fichier PHP contenant des déclarations (constantes, fonctions, classes…).

Récupération du contenu d'un fichier dans une variable

Les instructions include et require exécutent immédiatement le code : elles sont en quelque sorte remplacées par le résultat de l'exécution. Il est souvent utile de récupérer ce résultat avant affichage, pour le modifier ou pour le passer à une fonction.

  1. Dans un script PHP, récupérez avec la fonction file_get_contents le contenu du fragment HTML dans une variable $frg et l'afficher.
  2. Faites de même avec le fragment PHP. Que se passe-t-il, et pourquoi ?
  3. Pour récupérer le résultat de l'exécution du fragment PHP, il faut utiliser un include en activant l'output buffering. Faites-le.

Redirection et header

La fonction PHP header permet de manipuler les en-têtes HTTP de la réponse envoyée par le serveur.

  1. Dans une nouvelle page PHP, mettez le contenu suivant :
    <?php
    header('X-Mon-Entete-Perso: lorem ipsum dolor sit amet');
    ?>
    
    Ouvrez l'onglet « Réseau » des outils développeur de Firefox (raccourci : control-shift-E), accédez à la page, et vérifiez que l'en-tête custom a bien été transmis.
  2. Mettez un peu de HTML après l'appel à header, et vérifiez qu'il est bien interprété par le navigateur.
  3. Modifiez l'appel à header pour transmettre l'en-tête Content-Type : faites en sorte que le contenu soit transmis comme du texte simple. Vérifiez que le HTML n'est plus interprété par le navigateur.
  4. Que se passe-t-il si vous mettez le HTML avant l'appel à header ? Expliquez ce qui se passe.
  5. Utilisez l'en-tête Location pour que toute personne visitant la page soit redirigée vers une autre page sur le web (par exemple https://fr.wikipedia.org/wiki/Chien). Observez ce qui se passe avec l'outil « Réseau » de Firefox.