e-Miage - module C216 - devoir 1
Tuteur du module : Lionel Médini
Dans ce devoir, vous allez développer une application simple de calculatrice en ligne,
que vous allez améliorer petit à petit.
Objectifs pédagogiques
- Langages de structuration côté client
- Scripting côté serveur
- Gestion des sessions
Formulaire Web
Vous allez tout d'abord créer l'interface de
votre application : il s'agit d'une page Web basique comportant deux
champs textuels pour les opérandes, une boîte de
sélection pour l'opérateur (4
opérations possibles), et un bouton de validation pour
lancer le calcul. Vous prévoierez également un
espace d'affichage pour le résultat.
Votre
formulaire peut par exemple ressembler à l'image suivante :
Lorsque
l'utilisateur cliquera sur le bouton "Calculer", les données
seront envoyées en POST à une page
nommée "WebCalc" sur votre serveur.
Exercice :
réalisez une page XHTML statique possédant les
caractéristiques décrites ci-dessus. Ne vous
préoccupez pas pour l'instant de l'affichage du
résultat.
Application Web
Vous allez maintenant écrire quelques pages
PHP dynamiques
Exercice :
dans un premier temps, contentez-vous de
récupérer les
données des formulaires et d'afficher l'opération
à réaliser. Une fois cela fait,
écrivez un script
PHP qui calcule le résultat de cette opération,
et
rajoutez, à la suite de l'affichage
précédent, le
caractère "=" , suivi de ce résultat.
Au
final, votre page PHP doit afficher simplement une ligne de texte
ressemblant à : "4 + 3 = 7".
Remarques- Depuis PHP
4, les variables globales sont désactivées par
défaut. Vous ne pourrez donc pas utiliser la notation
présentée dans le cours pour
récupérer les données des formulaires.
Voici un lien
vers une page qui vous explique comment faire.
- Vous
allez devoir de transtyper les données
reçues (les paramètres des requêtes
sont des strings, et vous allez manipuler des nombres
réels). Vous trouverez ici
une aide sur ce sujet.
Exercice : modifiez
ensuite votre application pour que le résultat apparaisse
en bas du formulaire de saisie, afin que l'utilisateur n'ait pas
à utiliser le bouton "Back" pour effectuer un nouveau
calcul.
Pour cela, vous devrez inclure le code de votre formulaire directement dans la page PHP de calcul des résultats.
Amélioration de
l'application
Vous allez tout d'abord "verrouiller" votre application, de façon à éviter les messages d'erreurs que les utilisateurs pourraient provoquer.
- Protégez votre application pour que la division par zéro ne renvoie pas une erreur PHP, mais un message particulier dans le champ résultat.
- Faites en sorte que si aucun nombre n'est entré dans un champ, celui-ci soit considéré comme une valeur nulle (sauf s'il s'agit de la seconde opérande d'une division, auquel cas sa valeur sera 1).
- Faites en sorte de ré-afficher les opérandes et l'opérateur du calcul précédent après chaque envoi du formulaire.
Rendez votre application modulaire en séparant la présentation (formulaire HTML et affichage du résultat) de la logique métier (réalisation des
calculs). Pour cela, vous allez créer quatre nouveaux
fichiers PHP (un pour chaque opération) qui vont chacun
réaliser l'une des opérations. Depuis la page
principale (qui contient votre formulaire), vous incluerez les
résultats renvoyés par la page PHP correspondant
à l'opération demandée par
l'utilisateur (ici,
un lien sur la syntaxe d'inclusion d'une page PHP dans une autre).
Gestion de sessions
Vous allez maintenant rajouter deux boutons à votre
formulaire. Ils vont permettre à l'utilisateur
de stocker en "mémoire" le dernier résultat
calculé, et de le réafficher, toujours dans le
champ
"résultat".
Remarque : vous ne
pouvez pas stocker cette valeur dans une variable globale de votre
application, car celle-ci serait commune à tous les
utilisateurs qui utiliseront votre système. C'est la raison
pour laquelle, pour
chacun de vos utilisateurs, vous stockerez ce nombre dans une variable
de session (voir
ici
pour la procédure à suivre).
Modalités de rendu du devoir
Vous m'enverrez par mail le
code (correctement commenté) de la dernière
version de votre devoir, compressé dans un fichier au format ZIP.
Vous veillerez particulièrement à ce que le code servi au client (celui de vos pages Web statiques ainsi que le code généré dynamiquement) soit conforme aux recommandations XHTML strict et CSS.