Les cookies =========== * « workaround », astuce : pour contourner l'aspect non connecté de HTTP * Informations données par le serveur web au navigateur, qui les stocke et les renvoie au serveur web à chaque connexion * Peuvent être associées à un domaine et à un chemin d'accès * Se situent dans la mémoire vive ou dans un fichier texte (si une durée de vie est associée à la cookie) * Peuvent contenir des informations textuelles Fonctions PHP ------------- * Création et envoi d'un cookie : * Fonctions : * setcookie(,)‏ * setcookie(,,)‏ * Lecture d'un cookie : * Variable : * $_COOKIE[] * Suppression d'un cookie : * Fonction : * setcookie()‏ **création** .. literalinclude:: file/cookie_creation.php :language: php **lecture** .. literalinclude:: file/cookie_lecture.php :language: php Données complexes ----------------- * Permettent d'enregistrer une valeur textuelle * Comment enregistrer une valeur plus complexe (par ex, un tableau) ? * Il faut transformer les données en texte, par la « sérialisation ». * Fonctions : - serialize()‏ - unserialize() - json_encode() - json_decode() .. literalinclude:: file/cookie_creation_liste.php :language: php .. literalinclude:: file/cookie_lecture_liste.php :language: php La sécurité des cookies ----------------------- * Il est possible de restreindre la portée d'un cookie, en spécifiant : * un chemin d'accès * et/ou un nom de domaine * Le navigateur n'enverra alors le cookie que pour le domaine indiqué et/ou le chemin d'accès * Fonctions : * setcookie(, , , , )‏ .. literalinclude:: file/cookie_creation_restrictionDomaine.php :language: php * Les cookies n'ont aucune sécurité : * Ils sont lisibles par le client * Ils sont modifiables par le client * Ils sont lisibles par d'autres applications * Ils ne sont pas cryptés * Ils sont limités, en général, à quelques Ko (4) et à par domaine (20 cookies)‏ * Ils ne peuvent donc contenir aucune donnée sensible !!! **Exercice** .. configuration-block:: .. code-block:: php-annotations # Ecrivez un script qui permette d'implémenter un compteur de visites en PHP, et qui en donne l'affichage. .. code-block:: html+php Visite

Compteur :

.. configuration-block:: .. code-block:: php-annotations # Ecrivez un petit programme PHP qui affiche à l'utilisateur un nombre aléatoire entre 1 et 6... # Mais, au sein de cette page, l'utilisateur doit pouvoir spécifier sa couleur préférée de fond de page dans une liste qui en compte 5 (rouge, jaune, vert, bleu, blanc). # Lorsqu'il se connecte sur cette page, il reçoit alors la page dans sa couleur préférée. # Attention : pour modifier sa couleur, l'utilisateur doit utiliser une liste déroulante, dans laquelle sa couleur préférée sera toujours pré-sélectionnée. .. code-block:: php "Rouge", "green" => "Vert", "yellow" => "Jaune", "white" => "Blanc", "blue" => "Bleu" ]; if (isset ($_COOKIE['couleurPreferee'])) { $couleur = $_COOKIE['couleurPreferee']; } else $couleur = "white"; if (isset ($_REQUEST['couleurChoisie'])) { $couleur = $_REQUEST['couleurChoisie']; setcookie('couleurPreferee', $couleur, mktime(0, 0, 0, 12, 31, 2037)); } $nombre = mt_rand(1, 6); ?> Visite

NOMBRE ALEATOIRE :



Sélectionnez votre couleur préférée :