Travaux Pratiques de PHP no4
Transcription
Travaux Pratiques de PHP no4
Travaux Pratiques de PHP no4 Cours d’Informatique de première Année —IMAC— Les sessions Ce tp vous aidera à implémenter une partie très importante voire la plus importante de votre projet. x Exercice 1. Les cookies Un cookie est un petit fichier (max 4ko) enregistré sur le disque dur du visiteur qui permet de stocker une valeur, par exemple l’identifiant de l’utilisateur. Pour créer un cookie il suffit d’utiliser la fonction ???, à vous de trouver sur www.nexen.net ou sur php.net. Lisez bien la page de documentation. 1. Implémentez un script qui crée un cookie dont la durée de vie est de 15 minutes et stocker une certaine valeur (votre login, votre plat préféré ou votre station de ski préférée etc.). 2. Vérifiez que votre navigateur est paramétré pour accepter les cookies et profitez-en pour consulter (dans le cookie manager de votre navigateur) les informations contenues dans le cookie que vous venez de créer. 3. Dans une deuxième page, récupérez cette valeur (si elle est bien définie) grâce au tableau global $_COOKIE[] 4. Puisque vous avez bien lu la doc, vous savez comment créer un cookie de session c’està-dire qui durera jusqu’à ce que vous fermiez votre navigateur 5. Pour la même raison que précédement, vous savez comment supprimer votre cookie, vérifiez dans le cookie manager que celui-ci a bien été détruit. Les cookies présentent un certain nombre d’inconvénients. Premièrement votre visiteur peut avoir configuré son navigateur afin de refuser les cookies (voire les niveau de confiance sur IE). Deuxièmement les cookies sont des fichiers textes il est donc facile de l’éditer et de le modifier. Aussi, il est déconseillé d’utiliser les cookies (seuls) pour gérer les sessions (à cause du premièrement) ou pour stocker des données sensibles (à cause du deuxièmement). Ils serviront principalement lorsque l’on souhaitera conserver des informations sur le long terme (d’une visite à l’autre). 1 x Exercice 2. Les sessions Php propose des fonctions dédiées à la gestion des sessions ce qui aura pour effet de nous faciliter grandement la tâche. La fonction session_start() détecte les utilisateurs et leurs associe un identifiant unique, via cet identifiant il sera possible de stocker les informations (appelées variables de session) associées à celui-ci (par exemple le login et le mot de passe). Les variables sont stockées sous forme de fichier dans le répertoire /tmp du serveur. Pour chaque page nécessitant une identification il faudra faire appel à session_start() qui soit conserve le numéro d’identification préalablement attribué soit en définit un nouveau. Recopiez et exécutez le code suivant: $session = array(’session.save_path’=>ini_get(’session.save_path’), ’session.name’=>ini_get(’session.name’), ’session.use_cookies’=>ini_get(’session.use_cookies’), ’session.use_trans_sid’=>ini_get(’session.use_trans_sid’), ); print_r($session); Ceci vous permet de connaı̂tre quelques options de configuration de php (présentes dans le fichier php.ini. Vous pouvez constater que l’option session.use_cookies a pour valeur 1, cela signifie que le numéro d’identification est transmis pas défaut via les cookies (la fonction setcookie() est appelée implicitement par session_start()). Le paramètre session.use_trans_sid étant à 1 dans php.ini, l’id de session est transmis de manière transparente. C’est-à-dire: si le cookie n’est pas accepté par le navigateur de l’utilisateur l’id de session est automatiquement transmis via l’url. Cela est donc on ne peut plus simple. Attention, comme pour la fonction setcookie() il faut que l’appel à session_start() ait lieu avant tout affichage. Le cookie généré ici a une date d’expiration définie à 0, ce cookie sera donc détruit dés la fermeture du navigateur. Il serait possible de modifier cette date en changeant le paramètre session.cookie_lifetime du fichier php.ini mais cela est impossible sur le serveur etudiant. La fonction session_start() ne permet pas de transmettre l’id de session via une redirection ou si vous devez utiliser une url absolue. Dans ces conditions vous devez transmettre cette information à la main. Pour ce faire 2 possibilités, il faut écrire soit ’ma_page.php?’.session_name().’=’.session_id() soit ’ma_page.php?’.strip_tags(SID). La constante SID est vide si le cookie a été accepté et session_name()=session_id() sinon. 1. Créez une page démarrant une session et affichez le nom et l’ID de session correspondant. 2. Ouvrez le cookie manager de votre navigateur pour constater la création du cookie de session. 3. Toujours dans cette page, créez 1 variable de session $_SESSION[’login’] et attibuez lui une valeur quelconque. Créer 3 liens qui pointent vers une deuxième page qui affichera le nom et l’id de session et la valeur de la variable de session $_SESSION[’login’]. Le premier lien sera un lien simple classique 2 <a href="page2.php"> Les 2 autres reprendront les méthodes de transmission à la main vues plus haut. Comparez les url selon que vous acceptiez ou non les cookies. 4. Désactivez la variable de session. 5. Détruisez complétement la session. x Exercice 3. Un système d’identification En résumé: • pour conserver des informations d’une visite à l’autre: utilisez les cookies. • pour conserver des informations de page en page au cours d’une visite: utilisez les sessions. • pour transmettre des informations d’une page à une autre: passage par url (mapage?ma_var=ma_val). Attention à la sécurité, il faut effectuer des tests sur les valeurs prises par les variables. • pour transmettre des informations d’une page à une autre avec un formulaire: champ caché (type hidden). Attention à la sécurité, il faut effectuer des tests sur les valeurs prises par les variables. Maintenant c’est à vous de jouer pour imaginer et implémenter un système d’identification et de suivi d’utilisateur. 3