Cookies & sessions Flashcards
cookies, c’est quoi ?
les cookies permettent de retrenir des informations sur un utilisateur (username, champs formulaires, identifier automatiquement un utilisateur)
Permet aussi de stocker un identifiant de session.
Pourquoi cookies ?
Permet d’étendre HTTP qui ne permet pas à la base de de lien entre 2 requêtes. Ils sont maintenant intégré au protocole.
Comment est stocké le cookie ?
les cookies sont stockés par le navigateur sur l’ordinateur de l’utilisateur à la demande du serveur.
Les cookies sont envoyés dans les entêtes HTTP.
Comment lire et écrire un cookie ?
fonction setcookie(nom, valeur).
Comment lire un cookie?
avec la superglobale $_COOKIE[];
ajouter une date d’expiration d’un cookie :
ajouter un timestamp en troisième argument :
setcookie(nom, valeur, mktime());
Comment supprimer un cookie ?
- sur l’ordinateur de l’utilisateur : donner une date dépassée => setcookie(name, value, 1)
- sur le serveur : unset($_COOKIE[‘name’]);
Qu’est ce qu’une sérialisation / désérialisation ?
- La sérialisation permet de transformer une varible array ou object en en chaine de caractère (string) et la désérialisation fait l’inverse.
Ce mécanisme permet de stocker des arrays ou objects en cookies.
serialize();
unserialize();
Attention ces functions peuvent être une faille de sécurité, privilégier le JSON avec json_encode() et json_decode();
Comment restreindre la portée d’un cookie ?
avec 2 paramètres supplémentaires :
- le chemin d’accès : “/manual”
- le nom de domaine “www.php.net” ou “.php.net”
Cookie : limitation et sécurité
- 20 cookies max par domaine et 4 Ko par cookie
- pas d’informations confidentielles stockées car ces informations peuvent être modifiée par l’utilisateur
Session ?
au lieu de stcoker chez le visiteur (cookies), vous stockez sur le serveur et on attribue au visiteur un identifiant. A chaque fois que le visiteur revient avec cet identifiant, PHP récupère toutes les informations relatives à cet identifiant.
Lecture et écriture d’une session
- session_start();
- les informations sont stockées dans la variable superglobale : $_SESSION[];
que ce passe t’il quand on fait session_start() ?
PHP essaie de lire le contenu d’un cookie nommé par défaut PHPSESSID. Il il n’existe pas, un nouvel identifiant est créé de manière aléatoire puis est envoyé par cookie au navigateur sans date d’expiration.
Comment supprimer une session ?
normalement pas besoin car PHP supprime automatiquement au bout d’un certain temps (1h30 environ si non utilisé).
On peut tout de même utiliser :
- session_destroy();
Comment récupérer le répertoire de stockage des sessions ?
echo session_save_path();