Module M2105 - RT web dyna - TD/P 2
En cas de problèmes avec le démarrage d'apache :
- Lancer le bash setup-xampp.bat du dossier de xampp
- Démarrer xampp-control
- Démarrer le serveur Apache
- Tester la réponse du serveur en allant à l'adresse http://127.0.0.1 dans un navigateur client
- Notions abordées
- Formulaires
- Tableaux associatifs
- Mémorisation des données du client de manière temporaire :
- sessions
- cookies
Préambule
- En invite de commande ou à partir de l'explorateur, aller à la racine de votre serveur web local {xampp-folder}/htdocs où {xampp-folder}=dossier de base de xampp
- Créer éventuellement un dossier tps{votreNom} où {votreNom}=votre nom
- Créer un sous dossier de tps{votreNom} nommé tp2
- Aller à l'adresse
http://127.0.0.1/tps{votreNom}/tp2
Exercices
Il s'agit de préparer un module permettant la réalisation de QCM.
Intro
- Créer un fichier functions.php qui contiendra toutes les fonctions implémentées dans la suite du TP
- Créer la fonction getHeader($startSession,$title) permettant d'insérer l'en-tête HTML5 d'une page, où $startSession est un booléen permettant de démarrer éventuellement la session, et où $title est le titre de la page
- Créer la fonction getFooter() permettant d'inclure la fermeture du body et de la page.
Exercice 1
- Créer un formulaire permettant à l'utilisateur de saisir son nom
- Valider vers une page créant une variable de session de nom user stockant le nom saisi
- Afficher le nom saisi pour contrôle
- Créer une page de test permettant d'afficher toutes les variables de session (elle servira pour la suite à vérifier le contenu de la session)
Exercice 2
- Ajouter la possibilité pour l'utilisateur d'être reconnu automatiquement à sa prochaine visite sur la page (case à cocher dans le formulaire de saisie du nom), en créant un cookie de durée de vie 5 minutes, mémorisant le nom saisi.
- La reconnaissance automatique activée doit permettre à l'utilisateur d'arriver sans passer par la connexion à une page recoAuto.php affichant un message de reconnaissance mentionnant son nom.
Exercice 3
- Réaliser le formulaire ci-dessous
- le post du formulaire doit permettre de mémoriser le navigateur favori dans une variable de session navigateur
- Afficher le résultat du POST pour vérification
Exercice 4
- Réaliser le formulaire ci-dessous, en tenant compte du fait que les checkbox vont produire un tableau de valeurs (les cases cochées)
- le post du formulaire doit permettre de mémoriser les réseaux sociaux utilisés dans une variable de session socialNetworks
- Afficher le résultat du POST pour vérification
Exercice 5
- Créer une page reset.php permettant de fermer la session et de détruire l'ensemble des variables définies.
- Afficher le résultat de la fermeture, et proposer une nouvelle connexion (accès à la page de l'exercice 1)
Exercice 6
- Créer une page resetCookie.php permettant de supprimer le cookie créé à l'exercice 2.
- Appeler resetCookie depuis un bouton présent sur une nouvelle page affichant les informations de cookie de l'utilisateur
Exercice 7
- Les questions du QCM et les réponses possibles sont stockées dans un tableau associatif initialisé de la manière suivante :
<?php function getQuestions(){ $questions=array(); $questions[]=["Quel est votre navigateur favori ?", ["multiple"=>false, "reponses"=>["Chrome"=>1,"Firefox"=>2,"IE"=>3,"Opera"=>4,"Autre"=>10] ] ]; $questions[]=["Quels réseaux sociaux utilisez vous fréquemment ?", ["multiple"=>true, "reponses"=>["Facebook"=>1,"Twitter"=>2,"Badoo"=>3,"Google+"=>4,"Autre"=>10] ] ]; return $questions; }
- Créer une fonction afficheQuestions($questions) parcourant le tableau et affichant la liste des questions comme ci-dessous
- Créer une page testant la fonction afficheQuestions
Exercice 8
- Créer une fonction afficheQuestion($index) affichant une question pour intégration à un formulaire, $index étant le numéro de la question à afficher.
- Réunir les fichiers des exercices 3 et 4 en utilisant cette fonction, le numéro de la question à afficher sera passé dans l'URL sous la form ?num=1
Exercice 9
- Créer une fonction getButtons($index) permettant d'afficher les boutons submit gérant le déplacement entre les questions du QCM, $index est le numéro de la question active.
Pour un questionnaire de 3 questions, getButtons doit produire les résultats suivants :
getButtons(0);
getButtons(1);
getButtons(2);
Exercice de Synthèse
Il s'agit maintenant d'utiliser les sources des exercices précédents pour permettre le scénario suivant :
- L'utilisateur arrive sur la page d'accueil
- S'il n'est pas connecté
- en présence d'un cookie → affichage des infos utilisateur + lien vers question 1 du QCM
- sinon → affichage formulaire de connexion
- sinon → affichage des infos utilisateur + lien vers question 1 du QCM
- Affichage et réponse à chaque question du QCM
- possibilité de naviguer entre les questions
- Affichage des réponses en fin et possibilité de déconnexion
- Déconnexion