Vous êtes sur la page 1sur 32

Chapitre 4:

Cookies et Sessions

1
Les cookies
§ Qu'est-ce qu'un cookie ?

§ Un petit fichier texte stocké sur le disque dur du visiteur du site

§ On peut y sauvegarder plusieurs informations concernant ce visiteur et les réutiliser


lors de sa prochaine visite

§ Par exemple, on pourrait stocker dans ce cookie le nom du visiteur et par la suite,
afficher son nom à chaque fois qu'il se connectera sur le site (ceci bien sur, s'il
n'efface pas les cookies de son disque dur)

§ Ceci n'est possible que si le visiteur a entré lui-même ses informations dans un
formulaire sur le site
Les cookies
§ Où sont placés les cookies ?
§ Cela dépend du navigateur que vous utilisez
§ Pour I.E : outils=> Options Internet
Les cookies
n Où sont placés les cookies pour Google chrome?

4
Les cookies
n Où sont placés les cookies pour Firefox?
§ Cliquez sur le bouton de menu et sélectionnez Options .
§ Sélectionnez le panneau Vie privée
§ Dans la zone Historique, pour l'option Règles de conservation,
sélectionnez utiliser les paramètres personnalisés pour l'historique

4
Les cookies
comment créer de tels cookies ?
– On utilise la fonction setcookie()

5
Les cookies

§ Explications:

On envoie par ce code chez le client (donc le visiteur du


site) un cookie de nom pseudo portant la valeur ensak
De plus, avec time(), on impose que le cookie ait une durée de vie de un an (soit en
fait l'instant présent plus un an, donc un an)
Maintenant, si le visiteur ne supprime pas ce cookie, dans toutes les pages WEB de
notre site, on pourra accéder à la variable $_COOKIE["pseudo"]qui contiendra la
chaîne de caractères ensak.
Les cookies

Exemple

§ Supposons que sur une page de notre site WEB nous souhaitons faire en sorte

que si le visiteur vient pour la première fois (ou qu'il a supprimé ses cookies), il

aurait alors, la possibilité de saisir son nom dans un formulaire,

§ ou bien s'il ne s'agit pas de sa première visite, d'afficher tout simplement

Bonjour puis son nom


Index.php
Traitement.php
Résultat
Résultat sur Google Chrome

12
Résultat sur Firefox
Remarque

-header() doit être appelée avant que le moindre contenu ne soit envoyé,
soit par des lignes HTML habituelles dans le fichier, soit par des
affichages PHP.

Une erreur très classique est de lire un fichier avec include ou require, et
de laisser des espaces ou des lignes vides, qui produiront un affichage
avant que la fonction header() ne soit appelée. Le même problème existe
avec les fichiers PHP/HTML standards
Les cookies

Plusieurs conditions sont à respecter afin que l'utilisation des cookies se passe au mieux :
§ l'envoie d'un cookie doit être la première fonction PHP que vous utilisez dans votre
script, ce qui veut dire que vous devez utiliser la fonction setcookie() tout en haut de
votre script (Aucun affichage et aucun code html avant un setcookie)
§ Si vous envoyez un cookie sur un poste client, celui-ci effacera automatiquement l'ancien
cookie qui portait le même nom (si il y en avait un), autrement il le créera

§ pour effacer un cookie, vous devez lancer un cookie qui aura le même nom que le cookie
que vous voulez effacer, tout en lui donnant une valeur nulle (vous pouvez également
l'envoyer avec un temps de vie dépassé)
Les sessions
17

Les Sessions

§ Les sessions sont un moyen de stocker des informations relatives au visiteur.


§ les sessions sont stockés dans des fichiers présents sur le serveur.
Elles permettent de stocker des types de données simples (texte, nombres, …)
mais pas de ressources comme des images ou bdd.
§ les sessions permettent de stocker des informations sur le visiteur de
manière transparente, c'est-à-dire qu'elles n'apparaissent pas dans l'url ou
dans des champs cachés.
Comment fonctionne une session

§ Les informations sont stockées dans des fichiers, sur le serveur, à chaque
session correspond un fichier. Chaque session est désignée par un nom et un
identifiant.
§ Lorsque le visiteur accepte les cookies, l'identifiant de la session est stocké
dans un cookie.
§ Normalement, la session est détruite ou à la fermeture du navigateur, ou au
bout de 30 minutes. Cette valeur peut être modifiée dans le fichier php.ini du
serveur (session.gc_maxlifetime)
Quand est ce qu’on utilise les sessions?

§ Les sessions sont particulièrement utilisées pour ce type d'applications :


§ Les espaces membres et accès sécurisés avec authentification.
§ Gestion d'un caddie sur un site de vente en ligne.
§ Formulaires éclatés sur plusieurs pages.
§ Stockage d'informations relatives à la navigation de l'utilisateur (thème préféré,
langues...).
Initialisation (et restauration) d'une session

§ PHP introduit nativement une unique fonction permettant de démarrer ou de continuer une
session. Il s'agit de session_start().
§ Cette fonction ne prend pas de paramètre et renvoit toujours true. Elle vérifie l'état de la session
courante. Si elle est inexistante, alors le serveur la crée sinon il la poursuit.

<?php
session_start();
?>

Note :
1. il faut appeler session_start() sur chaque page utilisant le système de session.
2. il faut appeler session_start() sur chacune de vos pages AVANT d'écrire votre code HTML
Les Sessions

Sauvegarder une variable


§ Les variables de sessions sont stockées dans le tableau super-global $_SESSION

<?php
session_start(); // Création de la session
$_SESSION['prenom'] = 'ILHAM'; // Sauvegarde de la variable
prenom dans la session
?>
Les Sessions

Récupération de données dans une session

– Quand on démarre une session avec session_start(), le


tableau super-global $_SESSION est automatiquement
initialisé avec les variables de la session

<?php
echo $_SESSION['prenom'];
?>
Les Sessions

n Savoir si une variable appartient à une session


– Utiliser sur le tableau $_SESSION la fonction isset() qui
renvoie vrai si la variable passée en argument existe
réellement
– Exemple
<?php
if (isset($_SESSION['prenom'])) {
echo 'La variable prenom est déjà enregistrée !';
// On est certain de pouvoir y accéder ici
} else {
echo 'La variable prenom n\'est pas enregistrée !';
}
?>
Les Sessions

n Exemple 1 : réaliser un formulaire de connexion


– Le formulaire permet, par une page, de s'identifier
– L'accès à toutes les autres pages sera tributaire de cette identification
– Voici les étapes à suivre :
• Initialisez votre session
• Initialisez vos variables

• Affichez votre formulaire, ou effectuez son traitement :


v dans un cas, mes variables de session seront vides,
v dans l'autre, elles ne seront remplies que si le traitement retourne un résultat
correct
• Enfin, si le formulaire de connexion est validé, affichez un lien pour passer à la page
suivante en "mode connecté"
• Autrement, pas d'accès aux autres pages
Remarque: opérateur Ternaire
La page accueil.php
Résultat
QUESTION:

Mais qu'en est-il de la page accueil.php ? Si un visiteur mal

intentionné rentre son adresse directement dans le navigateur

pour contourner le formulaire ?


– Solution
<?php
session_start();
if ((!isset($_SESSION['login'])) ||
(empty($_SESSION['login']))) {
// la variable 'login' de session est non déclarée ou vide
echo ' <a href="index_connexion.php">

Connexion d'abord !</a>';


exit();
}
?>
[...] suite du code : contenu réel de la page.
Les sessions
n Supprimer une variable d'une session
– Utiliser unset() qui prend en paramètre la variable à
détruire
– Exemple
<?php
unset($_SESSION['prenom']); // La variable de
//session "prenom" a été supprimée, on ne peut plus
//y avoir accès !
?>
Les sessions
n Détruire une session
– Utiliser session_destroy() qui ne prend aucun paramètre
et qui renvoie vrai en cas de succès et faux en cas
d'erreur
– Fonctionnement :
<?php
if (session_destroy()) {
echo 'Session détruite !';
} else {
echo 'Erreur : impossible de détruire la session !';
}
?>

Vous aimerez peut-être aussi