Sunteți pe pagina 1din 15

Cookies

Objectifs du cours

 Présentation
 Envoi et réception d’un cookie
 Lecture et écriture d’un cookie
 Validité et date d’expiration
 Tableaux et types complexes
 Limitations et sécurité
 Cas d’application
Présentation :
 Les cookies permettent de retenir des informations sur
un utilisateur : vous pouvez enregistrer des données
qui seront associées à un visiteur particulier. Les
utilisations les plus fréquentes des cookies sont :
 se souvenir du nom d’un utilisateur pour lui éviter de le
ressaisir lors de sa prochaine authentification ;
 se souvenir des informations saisies dans un formulaire
pour éviter de les redemander ou pour pré-remplir le
formulaire la prochaine fois ;
 identifier chaque utilisateur de façon unique lors de ses
visites à des fins statistiques.
Envoi et réception d’un cookie:

Envoi et réception d’un cookie


Avantages / Inconvénients :
 Avantages :
 Rappelle au serveur des informations sur le client
 L'échange de la données dans le sens
serveur  client est limité au dépôt du cookie
 Ne nécessite pas de modifier les pages HTML
 Compatible avec les formulaires
 Le cookie a une durée de validité
 Inconvénients :
 Les données circulent en permanence dans le sens client 
serveur
 Les données circulent en clair sur le réseau
 La quantité de données doit être limitée
Methode setCookie() :
setcookie (nom, valeur, expiration, chemin, domaine, securite)
permet de créer un cookie sur le poste client.
 Le premier champs nom est obligatoire et défini son nom.
 Si l'on souhaite lui associer une valeur on renseignera le second
champs.
 Le troisième permet de spécifier une date d'expiration;dans le
cas où rien n'est précisé, le cookie devient permanent.
 Les champs chemin et domaine permettent de préciser les URL
et domaines auxquels sont associés le cookie. Enfin le dernier,
sécurité permet de n'envoyer le cookie que si la connexion est
réalisée via le protocole sécurisé HTTPS (TRUE).
Methode setCookie() :
Une fois le cookie crée, il est possible de le récupérer dans les
pages suivantes via le tableau $_COOKIE['nom cookie'].
 setcookie("TestCookie", $value, time()+3600); // expire dans
une heure
 La suppression d'un cookie se fait en le recréant...mais avec
une date d'expiration passée !
 setcookie ("TestCookie", "", time() - 3600); // a expiré y'a une
heure
 Les cookies ne sont malheureusement pas supportés par
l'ensemble des navigateurs pour des raisons de confidentialité.
Aussi, il est nécessaire de mettre en oeuvre d'autres
mécanismes afin de gérer les sessions.
Écriture d’un cookie :
 setcookie(nom, valeur) pour écrire dans un cookie :
 Exemple :
<?php
// Attention :
// aucun texte HTML ne doit être envoyé avant le cookie.
setcookie('langage', 'PHP version 5') ;
?>
<html>
<head><title>titre</title></head>
<body>
<p>Un cookie a été envoyé</p>
<p>Son nom est : langage</p>
<p>Son contenu est : PHP version 5</p>
</body>
</html>
Lecture d’un cookie :
Exemple :
<html> Si vous cherchez à savoir quels
<head><title>titre</title></head>
cookies sont utilisés, lisez
<body>
simplement le tableau
<?php
// On vérifie si le cookie a été reçu
$_COOKIE[] : ils y sont
if ( isset($_COOKIE['langage']) ) {
tous listés.
// C’est le cas, le cookie existe
echo '<p>Un cookie a été envoyé</p>' ;
echo '<p>Son nom est : langage</p>' ;
echo '<p>Son contenu est : ' ;
// On lit la valeur du cookie et on l’affiche
echo $_COOKIE['langage'] ;
echo '</p>' ;
} else {
// Le cookie n’a pas été reçu
echo '<p>Aucun cookie du nom de langage n\’a été reçu</p>' ; } ?>
</body>
</html>
Supprimer un cookie
<?php
// Si le cookie compteur de visite existe,
if ( isset( $_COOKIE['visites'] ) ) {
// on demande au navigateur d’effacer son cookie
setcookie('visites') ;
// et on en efface la valeur en local pour éviter
// de l’utiliser par erreur dans la suite de notre script
unset($_COOKIE['visites']) ;
}
?>
Modifier les valeurs d’un cookie
<?php
$message = array() ;
if (! isset($_COOKIE['visites']) ) {
$message[] = '$_COOKIE[\'visites\'] est vide' ;
$message[] = 'le cookie n\'a pas été reçu par le serveur' ;
message[] = 'on envoie le cookie avec la valeur 1' ;
setcookie('visites', 1 ) ;
} else {
$message[] = '$_COOKIE[\'visites\'] n\'est pas vide' ;
$message[] = 'la valeur reçue est ' . $_COOKIE['visites'] ;
$message[] = 'on envoie un nouveau cookie avec la valeur ‘
. ( $_COOKIE['visites'] +1 ) ;
setcookie('visites', $_COOKIE['visites'] +1 ) ;
$message[] = 'le navigateur va modifier le cookie pour lui'
.' donner la nouvelle valeur ' . ( $_COOKIE['visites'] +1 ) ;
}
$message[] = 'vous pouvez recharger la page pour voir l'évolution';
echo join('<br>', $message) ;
?>
Validité et date d’expiration
<?php
La date d’expiration d’un
// On vérifie si le cookie est présent
if ( !isset( $_COOKIE['visites'])) {
cookie est gérée comme un
// Il n’est encore jamais passé sur la page timestamp Unix. La valeur
// donc il n’a pas de cookie maximale de ces dates
$visites = 1 ; sur la plupart des systèmes
$message = 'Vous venez pour la première fois' ; actuels est mi-janvier 2038.
}else{
Contentez-vous de dates
// Il est déjà venu, on incrémente son nombre de visites
entre les années 2000
$visites = $_COOKIE['visites'] + 1 ;
$message = 'Vous êtes venu '.$_COOKIE['visites'].' fois' ; et 2037.
}
// On met le cookie à jour avec le nouveau nombre de visites
setcookie('visites', $visites, mktime(0,0,0,12,31,2037) ) ;
?>
<html>
<head><title>titre</title></head>
<body>
<p> <?php echo $message ; ?> </p>
</body>
</html>
Tableaux et types complexes
<?php // On récupère la liste actuelle
qui s’appelle sérialisation, est
if ( isset( $_COOKIE['liste'] ) ) { gérée par les
// Si le cookie existe , on récupère la liste des heures de visite fonctions PHP serialize()et
$liste_serialisee = $_COOKIE['liste'] ; unserialize(). La première sert à
// Il faut maintenant décoder le contenu pour obtenir le tableau transformer une variable
$liste_tableau = unserialize( $liste_serialisee ) ;
en une chaîne de caractères, la
}else{ // Si le cookie n’existe pas encore, la liste est un tableau vide
$liste_tableau = array() ; }
seconde fait l’opération
// On ajoute l’heure actuelle contraire.
$liste_tableau[] = time() ;
// On renvoie le cookie avec sa nouvelle valeur Pour cela, on sérialise le tableau avant
$liste_serialisee = serialize( $liste_tableau ) ;
setcookie('liste', $liste_serialisee) ; ?>
<html><head><title>titre</title></head>
<body>
<p> vous êtes venu <?php echo count( $liste_tableau ) ; ?> fois, voici le détail : </p>
<ul>
<?php foreach( $liste_tableau as $heure ) { echo '<li>le ',date("d/m/Y H:i:s:", $heure),'</li>'; } ?>
</ul>
</body>
</html>
Autre variable :
 setrawcookie() : est exactement la même que setcookie()
excepté que la valeur du cookie ne sera pas automatiquement
encodée URL lors de l'envoi au navigateur.
exemple :
setrawcookie('cookie_name', rawurlencode($value), time()+60*6
0*24*365);
 http_parse_cookie () : Analyse des cookies HTTP comme ceux
envoyés dans une réponse.
Exemple:
print_r(http_parse_cookie("foo=bar; bar=baz; path=/; domain=e
xample.com; comment=; secure", 0, array("comment")));
 http_build_cookie () : Construit un cookie depuis un
objet/tableau comme retourné par la
fonction http_parse_cookie()

S-ar putea să vă placă și