Vous êtes sur la page 1sur 29

Chapitre 5 : Cookies et sessions

1
Les cookies : définition
• Les cookies sont des fichiers créés par les sites Web consulté. Ils
enregistrent des informations de navigation.
• Grâce aux cookies, les sites peuvent maintenir connecté le client, se
souvenir de ses préférences liées aux sites, et lui communiquer des
informations locales pertinentes.
•Un cookie est une petite pièce d'information que les scripts peuvent stocker
sur une machine côté client.
• Plusieurs risques sont liés à l'utilisation des cookies :

 Le client peut refuser les cookies .

 Le client peut effacer les cookies.

 Le client peut utiliser un navigateur qui n’accepte pas les cookies.

2
Afficher les cookies avec Mozilla Firefox
(options->vie privée-> supprimer des cookies spécifiques)

3
Afficher les cookies avec Google Chrome
(Paramètres->Paramètres avancés->Confidentialité et sécurité->Paramètres
du contenu->Cookies)

4
Contenu d’un cookie
• Le cookie contient les informations suivantes:
- nom
- valeur
- date d'expiration
- infos sur la machine qui l'a créé
• Seule la machine qui a créé le cookie peut lire les informations qu'il
contient. Chaque site qui dépose un cookie chez le poste client, ne peut
que lire que celui-là uniquement.

5
Sauvegarder un état avec les cookies
• Pour créer un cookie avec PHP, il faut le placer avant la première balise
<HTML> :

setCookie("nomCookie", "contenu", duréedevie);

Ex: setCookie ("infoperso", "Mohamed", time()+60);

• Pour accéder ou modifier la valeur contenue dans le cookie :

$_COOKIE["nomCookie"]

Les infos contenues dans $_COOKIE[] sont disponible quelque soit la page
sur laquelle on se trouve.

Ex: echo $_COOKIE["infoperso "]

6
Suppression des Cookies
• La suppression d'un cookie se fait en le recréant avec une date
d'expiration passée.

Ex : setCookie ("TestCookie", "", time() - 3600);


// a expiré il y'a une heure

• Ou bien, déclarer le cookie sans mettre de valeur

Ex : setCookie ("TestCookie");

7
Application
Créer deux pages, une première qui créé un
cookie dans lequel on placera des
informations sur le navigateur de l'utilisateur,
avec un lien vers une seconde page dans
laquelle s'affichera cette information. On en
rajoutera une troisième pour tuer le cookie.

8
ex01.php :
<?php
$var = $_SERVER['HTTP_USER_AGENT'];
setcookie("monCookie", $var , time()+3600);
?>
<HTML>
<HEAD><TITLE>Création d'un cookie</TITLE></HEAD>
<BODY>
Bonjour à tous ! <BR>
<A href="ex02.php">Allez à la page suivante.</A>
</BODY>
</HTML>

9
ex02.php :

<HTML>
<HEAD><TITLE>Utilisation d'un cookie</TITLE></HEAD>
<BODY>
Rebonjour!<BR>
<?php
echo "Sur votre précédente feuille, vous utilisiez un navigateur :
$_COOKIE["monCookie"] " ;
?>
<BR>
<A href="ex03.php">Voir la page où on tue les cookies.</A>
</BODY>
</HTML>

10
ex03.php :

<?php
setcookie("monCookie","",time()-60);
?>
<HTML>
<HEAD><TITLE>Suppression d'un cookie</TITLE></HEAD>
<BODY>
Rebonjour encore une fois !<BR>
<?php
if (isset($_COOKIE["monCookie"]))
echo " Le Cookie n’est pas mort !";
else
echo " Le Cookie est mort !";
?>
</BODY>
</HTML>

11
Sessions : définition
• Les sessions permettent de conserver des informations relatives
à un utilisateur lors de son parcours sur un site web.
• But : conserver des valeurs d'une page à l'autre.
• Contrairement aux cookies, les sessions sont basées sur des
fichiers créés sur le serveur.
• Les sessions ne sont pas stockées par Apache mais par PHP lui-
même.
• Elles ne sont pas dans un fichier mais chaque session est un
fichier.
• L'emplacement par défaut est défini dans le fichier de
configuration de PHP (bin/php/php.ini) par la directive
'session.save_path‘.
• Cet emplacement par défaut peut être modifié dans le script.
12
Démarrer la session
• Chaque visiteur en se connectant à un site reçoit un numéro
d'identification dénommé identifiant de session (SID)

• La fonction session_start() se charge de générer


automatiquement cet identifiant unique de session et de créer
un répertoire.
• Elle doit être placée au début de chaque page afin de démarrer
ou de continuer une session.

13
Exemple :
<?php
session_start();
echo session_save_path();
?>

Affiche le résultat suivant :

c:/wamp/tmp

14
Stocker les sessions
• On peut stocker et interroger les variables d'une session de la
manière suivante :
$_SESSION['nomVariable'];

L'affectation du tableau $_SESSION permet de créer des variables


de session

• Si on veut supprimer une session, on utilise la fonction :


session_destroy();

• Tant que la page n’est pas rechargée, les variables de session


restent accessibles. Pour les décharger de la mémoire :
session_unset();

15
Application

Créer une page qui créé une session. Faire afficher l'identifiant et
l'emplacement du fichier de session.
Entrer deux valeurs dans deux variables de session et créer un lien vers une
seconde page.
Cette seconde page se chargera d'afficher le contenu de ces deux variables
ainsi que la manière dont ces deux variables sont stockées dans le fichier de
session.

16
Page01.php

<?php
session_start();
?>
<HTML>
<BODY>
<?php
$_SESSION['nom'] = " Tounsi Mohamed";
$_SESSION['mdp'] = "Tm2011";
?>
<a href="page02.php">Page suivante</a>
</BODY>
</HTML>

17
Page02.php

<?php
session_start();
?>
<HTML>
<BODY>
<?php
echo "Les variables ont été enregistrées ";
echo "Nom : ".$_SESSION['nom'];
echo " Mdp : ".$_SESSION['mdp'];
?>
</BODY>
</HTML>

18
Traitement des sessions stockées dans la BD
• Créer la table « session » dans la base de données
« personnel » : session(id,login,pass).
• Créer la classe session :
session

login
pass

rechsession()
insertsession()
modifsession()
suppsession()
destruction()

19
Rappel des paramètres de connexion MYSQL :
config/config.php
<?php
class connexion
{
public function CNXbase()
{
$dbc=new
PDO('mysql:host=localhost;dbname=personnel','root','');
return $dbc;
}
}
?>

20
Création de la classe : class/session.class.php
<?php
class session {
public $login;
public $pass;
function __construct() {
session_start();
}
function rechsession ($login,$pass)
{
require_once('../config/config.php');
$cnx=new connexion();
$pdo=$cnx->CNXbase();
$req= "SELECT count(*) FROM session WHERE login='$login' and pass='$pass' " ;
$res=$pdo->query($req);
return $res;
}

21
function insertsession ($login,$pass)
{
require_once('../config/config.php');
$cnx=new connexion();
$pdo=$cnx->CNXbase();
$req="insert into session values('','$login','$pass')";
$pdo->exec($req);
}
function modifsession ($login,$pass,$ancienpass)
{
require_once('../config/config.php');
$cnx=new connexion();
$pdo=$cnx->CNXbase();
$req="UPDATE session SET pass='$pass' WHERE login='$login' and
pass='$ancienpass' ";
$pdo->exec($req);
}

22
function suppsession ($login,$pass)
{
require_once('../config/config.php');
$cnx=new connexion();
$pdo=$cnx->CNXbase();
$req="DELETE FROM session WHERE login='$login' and pass='$pass'";
$pdo->exec($req);
}
function destruction() {
session_unset();
}
}
?>

23
Création du formulaire d’identification : view/formsession.html
<form id="form1" name="form1" method="post" action="../controller/verifsession.php">
<label>login</label>
<p>
<input type="text" name="login" />
</p>
<p>
<label>mot de passe</label>
<input type="password" name="pass" />
</p>
<p>
<input type="submit" name="submit" value="OK" />
</p>
</form>

24
Vérification et enregistrement de la session : controller/verifession.php

<?php
require_once '../class/sessions.class.php';
$sess = new session();
$login=$_POST['login'];
$pass=$_POST['pass'];
$row=$sess->rechsession($login,$pass);
$n= $row->fetchColumn(0);
if($n==0)
{
header('location:../view/formsession.html');
}
else
{
$_SESSION['login']=$login; $_SESSION['pass']=$pass;
header('location:../view/menu.php');
}
?>

25
Contrôle de la page sécurisée par la session : view/menu.php
<?php
require_once '../class/sessions.class.php';
$sess = new session();
If(isset($_SESSION['login'] ) and isset($_SESSION['pass'] ))
{echo "menu"; }
else
{header('location:../view/formsession.html');}

?>

26
Formulaire de modification de mot de passe : view/formmodifpass.html
<form id="form1" name="form1" method="post" action="../controller/modifmotdepass.php">
<p><label>login</label>
<input type="text" name="login" /></p>
<p><label>ancien mot de passe </label>
<input type="password" name="pass" /></p>
<p><label>nouveau mot de passe</label>
<input type="password" name="nouvpass" /></p>
<p><label>réecrire nouveau mot de passe</label>
<input type="password" name="reecnouvpass" /></p>
<p><input type="submit" name="submit" value="OK" /></p>
</form>

27
Vérification et modification du mot de passe :
controller/modifmotdepass.php
<?php
require_once '../class/sessions.class.php';
$sess = new session();
$login=$_POST['login'];
$pass=$_POST['pass'];
$nouvpass=$_POST['nouvpass'];
$reecnouvpass=$_POST['reecnouvpass'];
if(strcmp($nouvpass,$reecnouvpass)==0)
{ //nouveau mot de passe et réécriture nouveau mot de passe identiques
$row=$sess->rechsession($login,$pass);
$n= $row->fetchColumn(0);
if($n==0)
{ //login et/ou mot de passe incorrect(s)
header('location:../view/formmodifpass.html');
}
28
else
{ //login et mot de passe correct(s)
$row1=$sess->rechsession($login,$nouvpass);
$n1= $row1->fetchColumn(0);
if($n1==0)
{ // couple login et mot de passe inexistant
$sess-> modifsession ($login,$nouvpass,$ancienpass);
header('location:../view/menu.php');
}
else
{ // couple login et mot de passe existe déjà
header('location:../view/formmodifpass.html');
}
}
}
else //nouveau mot de passe et réécriture nouveau mot de passe ne sont pas identiques
header('location:../view/formmodifpass.html');
?>

29

Vous aimerez peut-être aussi