Module I3 Introduction au PHP Chapitre 3 : Cookies et Sessions
Transcription
Module I3 Introduction au PHP Chapitre 3 : Cookies et Sessions
Module I3 Portée des variables : Les variables globales PHP ont une durée de vie limitée à celle du script qui les a créé. Introduction au PHP Comment transmettre leurs valeurs de page en page ? Chapitre 3 : Cookies et Sessions 2 1 Champ caché dun formulaire : Exemple de champ caché de formulaire : debut.php On peut utiliser un champs HIDDEN dun formulaire pour transmettre des données (VALUE) à sa page cible (ACTION) Les VALUE peuvent être des valeurs de variables <?php $tableau = array("Paul", "Jean", "Vincent") ; echo "<FORM ACTION='suite.php' METHOD='GET'>" ; foreach($tableau as $val) { echo "<INPUT TYPE=HIDDEN NAME='tab[]' VALUE=$val"; } echo "<INPUT TYPE=SUBMIT NAME='ok' VALUE='OK'>"; echo "</FORM>" ; ?> suite.php Inconvénients : - nécessite un formulaire et bouton SUBMIT - transmission de tableau par une boucle 3 <?php $tableau_recu = $_GET['tab'] ; ?> 4 Passage par lurl dun lien hypertexte : Passage par lurl dun lien hypertexte : On peut utiliser un lien hypertexte avec paramètres pour transmettre des données à la page cible selon un mécanisme semblable à la méthode GET dun formulaire. Exemple : <A REF="suite.php?imprimer=oui&format=A4"> Imprimer au format A4</A> les paramètres sont cités après le ? et séparés par des & Inconvénients : - les données transmises sont visibles à lurl - nécessite de cliquer sur le lien - difficulté pour transmettre un tableau Exemple : <?php //script debut.php $prenoms = array("Paul", "Jean", "Vincent") ; echo "<A REF="suite.php?precedente=debut"; foreach($prenoms as $val) echo "&prenoms[]=$val"; echo "Page suivante</A>" ; ?> <?php // script suite.php if isset($_GET['imprimer']) { echo "Vous avez choisi d’imprimer au format "; echo $_GET['format'] ; } ?> 5 6 Principe : Mécanisme de stockage des données Enregistrement depuis une page et récupération depuis une autre Petit fichier texte stocké coté client contient des informations enregistrées par un script nom du cookie, sa valeur, son site de provenance informations supplémentaires (date dexpiration,) Si plusieurs cookies proviennent du même site, ils sont tous stockés dans le même fichier (séparés par des *) 7 8 Création dun coockie : Lecture dun coockie : Avant lenvoi de tout code HTLM au navigateur dans un bloc <?php php> avant la balise <HTML> Lors de la visite du site, php va regarder si un fichier contenant des cookies existe sur la machine du client setcookie("nom","valeur",date expiration); Les valeurs des différents cookies sont alors accessibles sous leurs noms dans le tableau associatif $_COOKIES[] Exemple : <?php setcookie("langue","français",100000000); setcookie("prénom","Paul",time()+3600); ?> <HTML> … Exemple : <?php if ($_COOCKIES['langue'] == "français") echo "Bonjour $_COOCKIES['prénom']"; else echo "Hello $_COOCKIES['prénom']"; La durée de vie sexprime en secondes ?> Le cookie ne sera actif que lors du prochain chargement 9 Effacement dun cookie : 10 Principe : Pour effacer un cookie il faut utilise setcookie() avec pour seul argument le nom du cookie à détruire Une session est un fichier enregistré sur le serveur elle est personnelle à chaque visiteur (un fichier / visiteur) exemple : setcookie("prénom") ; elle permet de stocker temporairement des données accessibles depuis toutes les pages du site Problèmes avec les cookies : elle existe durant toute la consultation du site Le navigateur peut être configuré pour refuser les cookies elle reste active pendant une durée définie au niveau du serveur (généralement 30min) lorsquon quitte le site Les cookies sont contenus dans un fichier texte qui peut être consulté, modifié ou recopié sur un autre ordinateur On peut tenter daccéder à distance un cookie en se faisant passer pour son émetteur. 11 elle se comporte comme si on navait pas quitté le site si on y revient avant lexpiration du délai 12 Démarrage de session : Manipulation la session : Commande session_start() ; Accessible par le tableau associatif $_SESSION[] Avant lenvoi de tout code HTLM au navigateur par précaution (nécessaire dans certaines configurations) dans un bloc <?php php> avant la balise <HTML> Enregistrement dune donnée dans la session : $_SESSION['nom'] = valeur ; la valeur peut être dun type « primitif » quelconque (chaîne, entier, flottant) ou de type tableau Crée une nouvelle session sil nen existe pas (nouvelle arrivée sur le site ou expiration du délai) exemple : Restaure et continue la session courante si elle existe $tab = array('prénom'=>"Paul",'age'=>19); $_SESSION['etudiant'] = $tab Accès à une donnée de la session : $_SESSION['nom'] doit être effectué dans chaque page du site qui manipule la session exemple : echo $_SESSION['etudiant']['prénom']; echo $_SESSION['etudiant']['age']; 13 <?php // initialisation.php session_start(); $_SESSION=array(); $_SESSION['initialisation']=date('h:i:s'); echo "session (ré)-initialisée.<br>"; ?> Manipulation la session : Effacement de données dans la session : unset($_SESSION['nom']); effacement dune donnée $_SESSION=array(); effacement de toutes les données <?php // visite.php session_start(); if (!isset($_SESSION['initialisation']) echo "Erreur; session non initialisée<br>"; else { echo "session initialisée à $_SESSION['initialisation']<br>"; if (!isset($_SESSION['visite']) { echo "première visite sur cette page<br>"; $_SESSION['visite']=1 ; } else { $_SESSION['visite']=$_SESSION['visite']+1 ; echo "visite n°$_SESSION['visite']<br>"; } ?> Test de lexistence dune donnée dans la session : isset($_SESSION['nom']) Terminer une session : 14 (renvoie TRUE ou FALSE) session_destroy(); la session en cours est entièrement supprimée utile pour changer dutilisateur (déconnexion) si le site gère une procédure de login 15 16