Université de Grenoble Alpes - IUT2 - Département informatique
M1105 - Web

TP 6-1 (2H)
Formulaires HTML5
Introduction au traitement d'un formulaire en PHP


Objectifs du TP

Ce document est consultable sur la plateforme Chamilo du département.


Déploiement sur un Serveur Web

Par commodité, jusqu'à maintenant nous avons travaillé "en local". Ainsi, vous chargiez directement une page web dans votre navigateur via la commande firefox xxxx.html. Il est maintenant temps de nous placer dans le contexte d'un véritable site web dans lequel les pages web sont récupérées au moyen de requêtes HTTP adressées à un serveur web. Suivez le guide...

Information importante : Comme vous travaillez de chez vous, pour utiliser le serveur web Apache des étudiants de l'IUT (disponible à l'URL www-etu-info.iut2.upmf-grenoble.fr) il faut savoir accéder à distance à votre répertoire Linux.
Une alternative, est de travailler avec un serveur web de développement local (voir tout à la fin de ce document).

Comment utiliser le serveur web Apache des étudiants de l'IUT ?

Le logiciel serveur utilisé Apache est un logiciel libre faisant partie d'un ensemble plus large développé par la fondation Apache (http://www.apache.org/).
Nous allons utiliser le serveur Apache qui a été installé sur la machine www-etu-info.iut2.upmf-grenoble.fr.

Normalement, pour mettre des pages Web sur ce serveur Apache, il suffit de les copier dans le répertoire /var/www/ de la machine www-etu-info.iut2.upmf-grenoble.fr. Mais vous n'êtes pas autorisés à le faire! (vous n'avez pas les droits d'administrateur). Toutefois, le logiciel Apache permet à tout utilisateur d'avoir un répertoire personnel dans lequel il rangera ses propres pages qui seront alors accessibles par le serveur Apache.

Par exemple, pour l'utilisateur dont le login est toto:

Attention! Pour avoir accès aux pages contenues dans les répertoires public_html des utilisateurs, le serveur Apache a besoin d'avoir des droits en "lecture pour tous" sur ces pages. Pour donner ces droits facilement, un script setup-public-html a été développé pour vous qu'il faudra ne pas oublier d'exécuter!

Ce script va donner des droits en "lecture pour tous" sur l'ensemble des fichiers de votre répertoire ~/public_html et des sous-répertoires. Si vous voulez voir le code de ce script, il est rangé dans le répertoire /users/info/pub/bin/

Remarque: Comme les droits de vos répertoires sont réinitialisés toutes les nuits, il faudra à chaque séance, exécuter de nouveau ce script. De plus, il faut l'exécuter dès lors qu'un nouveau fichier est créé/inséré dans votre répertoire ~/public_html ou l'un de ses sous-répertoires.

Test de l'installation

  1. Créer un répertoire ~/public_html
  2. Copier dans ce répertoire une des pages web que vous avez réalisées lors d'une précédente séance de TP (ne pas oublier de recopier également le fichier de style et les images nécessaires).
  3. Exécuter le script setup-public-html afin que le serveur Apache puisse accéder aux répertoires et fichiers de votre répertoire ~/public_html
  4. Visualiser dans le navigateur votre page web. Pour cela :

Les formulaires et leur traitement en PHP

Préparation

  1. Créer un répertoire TP6-1 dans votre répertoire ~/public_html
  2. Se positionner dans ce répertoire ~/public_html/TP6-1
  3. Recopier dans votre répertoire ~/public_html/TP6-1 le contenu du répertoire /users/info/pub/1a/M1105/tp6-1
  4. Exécuter le script setup-public-html

Un premier formulaire: form1.html

Les formulaires html permettent la saisie d'information par l'internaute (côté client) et déclenche un traitement côté serveur.
Classiquement, le traitement effectué côté serveur (par un programme PHP) retourne une page HTML qui est transmise au client pour affichage.

Analyse du formulaire form1.html

formulaire 1

Editer (avec Atom) le fichier form1.html et en analysant le code répondre aux questions suivantes :

  1. Quelle balise permet d'introduire le formulaire ?
  2. Quel attribut de cette balise permet de spécifier le programme PHP qui sera appelé par le serveur ?
  3. Quel est le nom du programme PHP qui traitera le formulaire?
  4. Quelle méthode est ici utilisée pour transmettre les données du formulaire au serveur ?
  5. Quel attribut de la balise <input> indique la variable passée dans l'URL ?
  6. Ce formulaire a 2 champs texte. Ces champs sont "obligatoire". Quel mot-clé l'indique?
  7. Quels attributs des balises <input> et <label> associeent le champ du formulaire au label? A quoi cela sert-il?

Test du formulaire form1.html

  1. Accéder à l'URL http://www-etu-info.iut2.upmf-grenoble.fr/~votre_login/ et accéder au formulaire form1.html
  2. Entrer votre nom et votre prénom dans les champs texte et cliquer sur le bouton d'envoi. Vous devez voir s'afficher un message de salutation qui vous est personnellement adressé.
  3. Examiner l'URL apparaissant dans la barre d'adresse de votre navigateur:
    1. Quel est le nom du programme PHP qui a été appelé?
    2. Quel caractère permet de séparer le nom du programme PHP des paramètres (les couples variable=valeur)?
    3. Examiner bien l'URL et identifier les paramètres transmis au formulaire (variables et valeurs).
    4. Quel caractère permet de séparer ces paramètres (les couples variable=valeur) les uns des autres ?
    5. Ici, quelles variables et valeurs sont passées au programme PHP?

Remarque:
En fait, que la méthode soit GET ou POST, les données du formulaire sont bien passés au serveur! Dans le cas de la méthode GET, vous avez vu que les paramètres sont visibles dans la barre d'adresse URL. Ainsi les données du formulaire sont encodées dans l'URL.
Dans le cas du POST, les données du formulaire n'apparaissent pas dans l'URL. Elles sont passées dans le corps de la requête HTTP.
Pour plus allez plus loin, voir l'article "Où vont les données?".

Un formulaire plus complet: form2.html

Analyse du formulaire form2.html

formulaire 2

Editer (avec Atom) le fichier form2.html et analyser le code pour le comprendre. Repérez par exemple:

Editer (avec Atom) le fichier styleForm2.css et analyser le code pour le comprendre.

Test du formulaire form2.html

Accéder à l'URL http://www-etu-info.iut2.upmf-grenoble.fr/~votre_login/ à partir de votre navigateur et accéder au formulaire form2.html

  1. Remplir les différents champs "input", tester les cases à cocher, les boutons radio, la liste déroulante,... Faites plusieurs essais.
  2. Quelle différence y-a-t-il entre les cases à cocher et les boutons radio ?
  3. Y-a-t-il une différence de fond entre les boutons radio et les listes déroulantes ?
  4. Editer (avec Atom) le programme PHP qui est appelé. Que fait-il?

Dans form2.html changer le programme PHP appelé par script2-simple-bis et tester de nouveau.

  1. Editer (avec Atom) ce nouveau programme PHP. Que fait t-il? Comprenez-vous l'instruction "foreach"?

Dans form2.html changer le programme PHP appelé par script2.php et tester de nouveau.

  1. Editer (avec Atom) ce nouveau programme PHP. Etudier précisément ce programme pour le comprendre.

A vous de faire! Formulaire de l'entreprise ACME (extrait d'un examen)

Voici le formulaire de commande de matériel de l'entreprise ACME *:

formulaire entreprise ACME

Remarque 1: pour les cadeaux, les choix possibles sont

Remarque 2: Le dernier champ est un champ textarea.

Réalisation du formulaire:

Réalisation de la réponse:

formaulaire entreprise ACME

*Vous ne connaissez pas l'entreprise ACME??? Voici son histoire...

D'après https://fr.wikipedia.org/wiki/Compagnie_ACME: La compagnie ACME (ACME Corporation) est une société fictive. Elle a été fondée par le personnel de la Warner Bros. Les premiers produits à sortir des usines sont des bouchons de liège et sont vus pour la première fois en 1935 dans le dessin animé Buddy's Bug Hunt. Toutefois, la plupart des produits sont vus dans les dessins animés Bip Bip et Coyote où des produits ACME sont fréquemment achetés par Wile E. Coyote, qui commande armes, fusées et autres dispositifs, dans ses tentatives inventives et sans fin pour attraper Bip Bip. C'est dans cette série que l'entreprise prendra sa renommée.

L'activité de la compagnie n'est jamais clairement définie, mais elle apparaît comme un conglomérat pouvant manufacturer n'importe quel produit et offrir n'importe quel service imaginable, et ce peu importe leur extravagance ou leur inutilité. L'acronyme de la compagnie signifierait American Company Making Everything (Compagnie Américaine Fabriquant Tout) ou, selon d'autres, A Company that Makes Everything (Une Compagnie qui Fait Tout), ou encore Another Company Making Everything.

Alternative: travailler avec un serveur web de développement local

Introduction

Plutôt que d'utiliser le serveur Apache de l'IUT, ou d'installer un serveur Apache sur votre machine, vous pouvez utiliser un serveur web de développement local:

Installation de PHP

Est-ce que PHP est installé sur ma machine?

Utiliser un terminal et entrer la commande php -v
si PHP est installé, vous devriez obtenir quelque chose d'équivalent à:

PHP 7.3.11 (cli) (built: Dec 13 2019 19:21:21) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.11, Copyright (c) 1998-2018 Zend Technologies

Et si PHP n'est pas installé sur ma machine?

Il faut l'installer!! Voici 3 petits tutos en fonction de votre machine:

Test de l'interpréteur PHP

Utilisation du serveur local

Remarque importante:
Il faut toujours vous situer dans le "bon" répertoire (celui où se trouvent vos fichiers formulaires et fichiers PHP) avant de lancer le serveur avec la commande php -S localhost:8080.

Vous êtes prêt! Vous pouvez tester tous vos formulaires et leurs réponses PHP.