TP2

Transcription

TP2
Université de Versailles
IUT de Vélizy - PHP
Vanessa Vitse
2006/2007
- TP n˚2 Les sessions
Votre compte-rendu de TP doit être rendu sous la forme d’un seul fichier dans un
format éditable (en particulier pas d’extension .pdf) et comprendre :
– les listings des différents fichiers sources
– des commentaires concis sur les parties importantes du programme
– des exemples d’utilisation du programme, ainsi que des captures d’écran illustrant les
résultats
– un rapport de synthèse rappelant l’objectif du TP.
Avertissement : Il est rappelé que le compte-rendu est strictement personnel, les
devoirs comportant des ressemblances seront sanctionnés dans la note.
Tout travail rendu après la date limite ne sera pas corrigé.
Objectif : Utiliser des sessions pour identifier un utilisateur et “suivre” cet utilisateur
et les données qui lui sont associées, d’une page à l’autre.
Outils : le cours, la spécification HTML et le validateur du W3C, le manuel PHP en
français (disponible en ligne sur http://www.php.net/manual/fr/), les feuilles de style
CSS...
Exercice 1. Mise en place d’une session
1. Copiez les fichiers login.php, bonjour.php, quitter.php, entete.inc et pied.inc
dans un répertoire nommé TP2 sur votre espace de publication web. Assurez-vous
qu’ils sont bien accessibles en lecture par tout le monde.
2. Visualisez et testez dans un navigateur les scripts login.php, bonjour.php et
quitter.php, puis faites un schéma des interactions entre ces pages.
3. Expliquez en détail le contenu de ces trois scripts, en insistant bien sur la nécessité
de faire appel aux fonctions session start() et session destroy() en début et
fin de script respectivement.
4. Que se passe-t-il si vous essayez de vous connecter directement à la page bonjour.php
sans passer par login.php ?
5. Ajoutez à bonjour.php un lien vers login.php permettant de modifier le nom
d’utilisateur courant (c’est à dire, celui pour lequel une session est déjà ouverte).
Faites en sorte que login.php propose par défaut comme nom d’utilisateur, celui
de l’utilisateur courant.
Exercice 2. Script testQI.php
Dans cet exercice, vous allez développer votre application PHP en rajoutant un lien dans
bonjour.php vers un script testQI.php qui propose à l’utilisateur courant de faire un
test de QI.
1. Dès le début du script testQI.php, vous devez réactiver la session courante, afin
de conserver les informations de l’utilisateur courant. Dans le cas où la variable
$ SESSION["nom"] ne serait pas initialisée, affichez un message d’erreur, et proposez
à l’utilisateur de s’identifier en le redirigeant sur login.php.
2. Si l’utilisateur est identifié, affichez un formulaire comprenant quelques questions
auxquelles il pourra répondre en cochant des boutons radio. Ce formulaire pourra
avoir l’allure suivante :
Les boutons radio ? seront sélectionnés par défaut, et le formulaire sera envoyé à un
script score.php qui fait l’objet de l’exercice suivant.
3. Rajoutez enfin dans testQI.php un lien vers quitter.php permettant à l’utilisateur
de se déconnecter à tout moment.
4. Affichez votre page dans un navigateur, et vérifier que le code est valide. Il est
conseillé d’inclure entete.inc et pied.inc selon le modèle des autres pages.
Exercice 3. Script score.php
1. De la même façon que cela a été fait au début de testQI.php, réactivez la session
courante, et assurez-vous que l’utilisateur courant est bien identifié.
2. Dans le cas où la variable $ SESSION["nom"] est initialisée, validez le formulaire de
l’utilisateur en comparant ses réponses aux réponses attendues. Affichez alors son
score sous la forme suivante :
Score de nom utilisateur : n bonnes réponses sur 3.
Rajoutez également un lien vers quitter.php lui permettant de se déconnecter.
Exercice 4. Quelques améliorations à apporter à vos scripts
1. Evaluation du temps mis par l’utilisateur pour faire son test
– Rajoutez dans testQI.php, une variable de session $ SESSION["date debut"]
qui servira de repère temporel, marquant le commencement du test de l’utilisateur.
Vous pourrez à cet effet, utiliser la fonction time().
– Evaluez dans score.php, le temps écoulé depuis le début du test en comparant la
valeur de $ SESSION["date debut"] avec celle retournée par la fonction time().
Vous stockerez cette valeur dans une variable nommée $duree.
– Affichez le temps mis par l’utilisateur, en convertissant la variable $duree au
format mn:sec à l’aide de la fonction date()
Auteur : Vanessa Vitse
2
2. Traitement générique des questions
Le script questionnaire.inc.php contient la déclaration d’un tableau $formulaire
dans lequel sont stockées les données du test (intitulés des questions, différents choix
possibles, ainsi que la bonne réponse pour chacune d’elles). L’objectif de cet exercice est d’exploiter ce format de données, afin de traiter génériquement les questions
posées dans le test de QI et les réponses de l’utilisateur. La maintenance de votre test
sera ainsi facilitée, puisqu’il suffira de modifier directement le tableau $formulaire,
sans toucher aux scripts testQI.php et score.php.
– Créez un script affiche tableau.php permettant d’afficher le contenu du tableau
indépendemment du nombre de questions stockées dans celui-ci (utilisez foreach).
Le résultat devra avoir l’allure suivante :
Pour pouvoir accéder au tableau $formulaire stocké dans questionnaire.inc.php
depuis votre script affiche tableau.php , vous utiliserez la fonction include.
– Modifiez les scripts testQI.php et score.php de façon à ce que les intitulés du
test de QI soient directement récupérés dans le tableau $formulaire (utilisez
la fonction include pour inclure le contenu du fichier questionnaire.inc.php
dans chacun des 2 scripts).
– Apportez quelques modifications au tableau $formulaire pour vérifier la validité
de vos programmes.
Auteur : Vanessa Vitse
3