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

Documents pareils