Un serveur Web comme Apache, avec son module PHP, va nous permettre d'exécuter des pages Web dynamiques.
Les pages Web dynamiques permettront, dans un site Web : d'utiliser une base de données (pour stocker les utilisateurs, des messages, etc.), d'envoyer des courriers électroniques, de gérer des niveaux de droits utilisateurs, etc. Ces choses sont impossibles en HTML/CSS.
Le PHP est exécuté côté serveur, seul le résultat est envoyé au navigateur. Les navigateurs ne savent donc pas exécuter le PHP, et ne sont pas censés en recevoir.
Une page PHP contient par défaut du HTML, elle doit donc commencer par les balises <html><head>.... Toutefois, on a la possibilité de basculer du HTML au PHP, et inversement, grâce aux balises suivantes :
(code HTML) <?PHP (instructions PHP) ?> (code HTML)
Si vous voulez transformer votre ordinateur en serveur Internet, téléchargez WampServer puis installez-le.
Si vous voulez utiliser le serveur Internet du lycée, téléchargez Filezilla Client puis installez-le, vous pourrez ainsi transférer vos fichiers vers le serveur.
Pour dépanner, vous pouvez utiliser le PHP Instant (aux possibilités très limitées).
Le Hello World ! est une coutume en informatique : cela permet de montrer la mise en place minimale pour exécuter un programme dans un environnement de programmation que vous êtes en train de découvrir.
Lancez un traitement de texte brut comme Notepad++ par exemple.
Tapez dedans le code de Hello Word ! :
Enregistrez-le sous c:\wamp64\www\helloworld.php (éventuellement utilisez FileZilla pour l'envoyer sur votre espace Web sur le serveur du lycée).
Ouvrez-le dans le navigateur et tapant l'URL 127.0.0.1/helloworld.php (ou sur le serveur du lycée : v_anonyme.bts-sio.com/helloworld.php)
Vous devez obtenir le résultat suivant :
Vous remarquez dans cet exemple :
Les erreurs les plus fréquentes sont :
Écriture en PHP | Explication |
---|---|
$nb | Notez bien q'une variable en PHP est précédée du signe $. |
$nb = 5 ; | On affecte 5 à la variable $nb. $nb vaut 5. |
$nb = $nb + 1; | On ajoute 1 à la valeur de la variable $nb. |
$nb = $nb - 1; | On enlève 1 à la valeur de la variable $nb. |
$login = 'v_anonyme'; | Une variable peut contenir une chaine de caractères. |
$login = "v_anonyme"; | Une chaine de caractères peut être entourée de guillemets simples ou doubles. |
$message = "Bonjour $login !"; | Une chaine de caractères peut contenir une variable ! (À condition que la chaine soit entourée de guillemets doubles). |
$existe = true; | Une variable peut contenir un booléen. |
Écrivez puis testez une page PHP où :
- vous affectez la valeur 10 à une variable nommée $nb,
- vous ajoutez 5 à cette variable,
- vous affichez le résultat dans le navigateur grâce à la fonction echo.
Après l'avoir testé, collez ici ce code HTML/PHP :
Un grand intérêt de PHP est qu'il peut récupérer les formulaires remplis par les internautes, puis en traiter les données (par exemple : les insérer dans une base de données, effectuer une recherche, etc.).
Tapez ce fichier, sauvegardez-le avec le nom get.php puis testez-le dans le navigateur :
Créez un fichier bonjour.php :
- ce fichier contient un formulaire où l'on peut saisir son prénom,
- vous renommez le champ ma_zone_de_texte pour lui donner un nom approprié, puisqu'on va y saisir un prénom,
- le traitement php affiche "Bonjour " suivi du prénom qu'on a saisi.
Après l'avoir testé, collez ici ce code PHP/HTML :
Créez un fichier somme.php :
- ce fichier contient un formulaire où l'on peut saisir deux entiers,
- le traitement en PHP affiche la somme des deux nombres, de façon claire. Par exemple si on a saisi 5 et 7, PHP affiche : 5 + 7 = 12.
Après l'avoir testé, collez ici ce code PHP/HTML :
PHP génère une erreur la première fois que l'on arrive sur la page, car il essaie de traiter un formulaire qui n'a pas encore été soumis.
Plus précisément : il ne connait pas $_GET['ma_zone_de_texte'], ni aucun $_GET['...'].
Pour éviter cette erreur, on va dire à php : tu fais le traitement seulement si le formulaire a été validé, c'est à dire seulement si $_GET['ma_zone_de_texte'] existe.
Tapez ce fichier, sauvegardez-le avec le nom get2.php puis testez-le dans le navigateur :
Reprenez vos deux fichiers précédent (bonjour.php et somme.php), et faite en sorte qu'ils n'affichent plus d'erreur.
Remarque : on peut faire en sorte que le traitement soit effectué par un autre fichier que celui qui affiche le formulaire. On utilise pour ça l'attribut action de la balise form :
Par défaut, un formulaire est en méthode GET. C'est pourquoi les données du formulaire sont transmises par l'URL. C'est comme si on avait écrit (mais c'est inutile car c'est la valeur par défaut) :
Cette méthode présente plusieurs inconvénients :
Il existe donc une autre méthode : la méthode POST, qui corrige tous ces inconvénients. Cela doit être précisé explicitement dans la balise <form> et demande quelques adaptations dans le code PHP :
Repenez votre fichier somme2.php et adaptez-le pour qu'elle travaille avec la méthode POST,
Collez ici le contenu de ce fichier somme3.php :
Un cookie ressemble à une variable : il a un nom et une valeur.
Un cookie est déposée depuis un script PHP vers le navigateur.
Lorsqu'on le navigateur demande une page Web à un serveur, le navigateur lui renvoie tous les cookie que ce site Web a déjà déposé. Cela permet donc :
Les cookies sont déposés grâce à la fonction PHP setcookie :
Les cookies vont être utilisés dans le chapitre suivant : le jeu des multiplications.
Les cookies sont relus grâce au tableau PHP $_COOKIE. Attention, ils ne sont lisible qu'après rechargement de la page 'ou de n'importe quelle autre page du site) :
Pour détruire un cookie :
Pour afficher la liste des cookies :
Le jeu des multiplications utilise ce qu'on a vu jusqu'ici. Il consiste à tirer deux nombres au hasard, et faire deviner le résultat de la multiplication à l'internaute.
Rendez-vous ici pour faire ce TP.
Voici une boucle while en PHP qui affiche un compteur qui varie de 1 à 10 :
1 2 3 4 5 6 7 8 9 10
Un internaute saisi un nombre dans un formulaire. Vous affichez la table de multiplication correspondante. Par exemple, s'il saisit 5, vous affichez :
5 x 1 = 5 5 x 2 = 10 ... 5 x 10 = 50
Améliorez l'affichage de façon à ce que les résultats soient affichés dans un tableau HTML, de la façon suivante :
Cela oblige à se poser la question : ou afficher les balises <table>, <tr> et <td> ? Avant, à l'intérieur ou après le while ?
Collez le code ici :
Ecrivez un code PHP qui affiche la table de multiplication suivante. Attention :
- cela demande d'imbriquer deux boucles while, qui utiliseront donc deux compteurs différents.
- une première boucle while peut permettre d'afficher la première ligne du tableau.
Collez ici le code PHP correspondant :