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