PHP

durée = 2h

Lire le code de test.php

On aura besoin de 3 fenêtres : Chrome, FileZilla et Notepad++.

  • Connectez-vous à votre compte SFTP avec FileZilla
  • Clic-droit sur test.php > éditer (dans Notepad++)
  • Comprendre que :
    • les variables commencent par le symbole « $ »
    • chaque fin d’instruction est ponctuée d’un « ; »
    • dans l’heure php : « i » signifie minute (la 2e lettre « i »)
      car « m » signifie month.

Puis dans Chrome :

  • Mettre en URL : https://f.nsirennes.fr/ puis aller dans votre dossier > test.php
  • Afficher le code source de Chrome et voir que ce code source ne contient que du HTML … et pas du tout de PHP !
    En effet, dès que le serveur reçoit une requête GET pour test.php :
    1. Le serveur commence par compiler le PHP, l’instruction echo génère du code HTML
      Le résultat de cette compilation est donc du code HTML.
    2. Le serveur envoie le fichier HTML au client.

Remarques :

  1. L’extension du fichier doit obligatoirement être *.php (sinon le PHP ne s’exécute pas).
  2. Le client ne verra jamais les instructions PHP.
    On dit que le PHP est compilé côté serveur. Contrairement au javascript qui est compilé côté client.

Boucle et if en PHP

Voici la structure d’une boucle en PHP :

for ($i = 0 ; $i < 10 ; $i++) {
   // insérer ici les instructions (terminées par ";" )
}
  • Modifier test.php pour ajouter un code qui écrit 100 paragraphes : <p>ligne 1</p> etc … <p>ligne 100</p>
  • Modifier à nouveau pour ajouter un trait de séparation <hr> toutes les 10 lignes.
    Pour vous aider, inspirez-vous de ce petit code qui donne la parité d’un nombre :
if ($nb % 2 == 0) {echo "$nb est pair";}
else {echo "$nb est impair";}

Une table de multiplication

Lire la documentation de la fonction random_int sur la documentation officielle : https://www.php.net/manual/fr/function.random-int.php

En PHP, l’opérateur de concaténation est le point :
"17"." ans" donne "17 ans"

=> Ecrire un code PHP qui affiche la table de multiplication d’un entier choisi au hasard.

Bien entendu, on n’hésitera pas à utiliser une balise titre <h1> , un bloc paragraphe <p> et les retours à la ligne <br>.

Double boucle for

Modifier votre fichier test.php pour créer un carré de 10×10 de symboles (voir ci-dessous).

On utilisera une variable $symbole .
Cette variable peut même être choisie parmi les entités HTML de l’unicode (UTF-8) sur cette page https://unicode-table.com/fr/sets/

Par exemple : $symbole = "&#127801;"; // l'entité HTML d'une rose

Une page de réponse avec GET

Créer un nouveau fichier analyse.php et y copier-coller la structure du HTML5 et ce code PHP :

<?php
$nom = $_GET["prenom"];
$age = $_GET["age"];
echo "Bonjour, $nom, et vous avez $age ans.";
?>

Dans Chrome, taper en URL, cette requête GET : https://f.nsirennes.fr/<votre_prénom>/analyse.php?nom=toto&age=17
==> Mince, une petite erreur s’est glissée ! Corrigez-là !

En fait, $_GET[] est un tableau prédéfini de PHP, qui contient toutes les variables passées par l’URL, sous la forme :
page.php?nom=mario&x=151&y=1234

La requête GET a un corps vide et les données sont ajoutées à l’URL. La requête ressemble à ceci :

couche 5 (Session) : Hypertext Transfer Protocol
GET /nom/analyse.php?nom=toto&age=17 HTTP/1.1
Host: f.nsirennes.fr

Un formulaire en méthode GET

Evidemment la page analyse.php n’est intéressante que si elle est constitue la réponse à une page formulaire.php (ou html).

Créer un nouveau fichier formulaire.php ou formulaire.html avec :

<form action="analyse.php" method="GET">
	nom : <input type="text" name="prenom"> <br>
	age : <input type="text" name="age"> <br>
	<input type="submit" value="soumettre">	
</form>

Notez bien qu’on met method="GET" car la récupération PHP se fait avec le tableau $_GET[] .

Tester et observez bien l’URL (vous devriez y voir les variables GET et leur contenu).

Formulaire en méthode POST

Modifier les 2 fichiers précédents :

  • Dans le fichier formulaire : Changer la méthode de transmission en method="POST"
  • Dans le fichier d’analyse : Changer la méthode de récupération des variable en tableau $_POST[]

Tester et observez bien l’URL : vous ne devriez voir aucune variable cette fois … c’est plus confidentiel !

Avec cette méthode POST, les données sont ajoutées au corps de la requête HTTP.
La requête ressemble à ceci :

couche 5 (Session) : Hypertext Transfer Protocol

POST /nom/analyse.php HTTP/1.1
Host: f.nsirennes.fr
Content-Length: 13
Content-Type: application/x-www-form-urlencoded

couche 7 (Application) : HTML form URL Encoded: application/x-www-form-urlencoded

Form item: "nom" = toto
Form item: "age" = 17