Session PHP et cookies PHP avec exemple
โก Rรฉsumรฉ intelligent
En PHP, les cookies et les sessions prรฉservent l'รฉtat du systรจme malgrรฉ le protocole HTTP sans รฉtat, mais stockent les donnรฉes diffรฉremment. Ce guide explique comment les cookies enregistrent de petits fichiers cรดtรฉ client, comment les sessions conservent les donnรฉes sur le serveur, et comment crรฉer, lire et supprimer chacun d'eux ร l'aide d'un code fonctionnel.

Quโest-ce quโun cookie ?
Un cookie est un petit fichier d'une taille maximale de 4 Ko que le serveur web stocke sur l'ordinateur client.
Une fois qu'un cookie a รฉtรฉ dรฉfini, toutes les requรชtes de page qui suivent renvoient le nom et la valeur du cookie.
Un cookie ne peut รชtre lu que depuis le domaine qui l'a รฉmis. Par exemple, un cookie dรฉfini ร l'aide du domaine www.guru99.com ne peut pas รชtre lu depuis le domaine carriere.guru99.com.
La plupart des sites Web sur Internet affichent des รฉlรฉments provenant dโautres domaines tels que la publicitรฉ. Les domaines desservant ces รฉlรฉments peuvent รฉgalement paramรฉtrer leurs propres cookies. Ceux-ci sont appelรฉs cookies tiers.
Un cookie crรฉรฉ par un utilisateur ne peut รชtre visible que par lui. Les autres utilisateurs ne peuvent pas voir sa valeur.
La plupart des navigateurs web proposent des options pour dรฉsactiver les cookies, les cookies tiers, ou les deux.
Si tel est le cas, PHP rรฉpond en transmettant le jeton du cookie dans le URL.
Le schรฉma ci-dessous illustre le fonctionnement des cookies.
Ici,
1) Un utilisateur demande une page qui stocke des cookies
2) Le serveur dรฉpose le cookie sur l'ordinateur de l'utilisateur
3) Les autres demandes de page de l'utilisateur renverront le nom et la valeur du cookie
Pourquoi et quand utiliser les Cookies ?
- HTTP est un protocole sans รฉtat ; les cookies nous permettent de tracL'รฉtat de l'application est enregistrรฉ grรขce ร de petits fichiers stockรฉs sur l'ordinateur de l'utilisateur. L'emplacement de ces cookies dรฉpend du navigateur. Internet Explorer les stocke gรฉnรฉralement dans le dossier des fichiers Internet temporaires.
- La personnalisation de l'expรฉrience utilisateur passe par la possibilitรฉ pour les utilisateurs de sรฉlectionner leurs prรฉfรฉrences. Les pages suivantes sont personnalisรฉes en fonction des prรฉfรฉrences enregistrรฉes dans les cookies.
- Tracking les pages visitรฉes par un utilisateur
Crรฉation de cookies
Examinons maintenant la syntaxe de base utilisรฉe pour crรฉer un cookie.
<?php setcookie(cookie_name, cookie_value, [expiry_time], [cookie_path], [domain], [secure], [httponly]); ?>
ICI,
- ยซ setcookie ยป est le Fonction PHP utilisรฉ pour crรฉer le cookie.
- ยซ cookie_name ยป est le nom du cookie que le serveur utilisera pour rรฉcupรฉrer sa valeur ร partir de la variable de tableau $_COOKIE. Ce champ est obligatoire.
- ยซ cookie_value ยป correspond ร la valeur du cookie et est obligatoire.
- L'option ยซ [expiry_time] ยป est facultative ; elle permet de dรฉfinir la durรฉe de validitรฉ du cookie, par exemple une heure. Cette durรฉe est calculรฉe ร l'aide de la fonction PHP `time()` ร laquelle on ajoute ou soustrait un nombre de secondes supรฉrieur ร zรฉro ; par exemple, `time() + 3600` correspond ร une heure.
- ยซ [cookie_path] ยป est facultatif ; il peut รชtre utilisรฉ pour dรฉfinir le chemin du cookie sur le serveur. La barre oblique ยซ / ยป signifie que le cookie sera mis ร disposition sur l'ensemble du domaine. Les sous-rรฉpertoires limitent l'accรจs des cookies au sous-domaine.
- ยซ [domaine] ยป est facultatif ; il peut รชtre utilisรฉ pour dรฉfinir la hiรฉrarchie dโaccรจs aux cookies, cโest-ร -dire
www.cookiedomain.comsignifie l'ensemble du domaine tandis quewww.sub.cookiedomain.comlimite l'accรจs aux cookies รwww.sub.cookiedomain.comet ses sous-domaines. - L'option ยซ [secure] ยป est facultative ; sa valeur par dรฉfaut est ยซ false ยป. Elle dรฉtermine si le cookie est envoyรฉ via HTTPS si elle est activรฉe, ou via HTTP si elle est dรฉsactivรฉe.
- L'option ยซ [httponly] ยป est facultative. Si elle est dรฉfinie sur true, les langages de script cรดtรฉ client tels que Javascรฉnario Impossible d'accรฉder au cookie.
ร noter: La fonction PHP setcookie doit รชtre exรฉcutรฉe avant la balise d'ouverture HTML.
Prenons maintenant un exemple utilisant des cookies.
Nous allons crรฉer un programme simple qui nous permettra de stocker le nom d'utilisateur dans un cookie qui expirera aprรจs soixante secondes.
Le code ci-dessous montre l'implรฉmentation de l'exemple ci-dessus ยซ cookies.php ยป.
<?php setcookie("user_name", "Guru99", time()+ 60,'/'); // expires after 60 seconds echo 'the cookie has been set for 60 seconds'; ?>
Sortie :
the cookie has been set for 60 seconds
Rรฉcupรฉration de la valeur du Cookie
Crรฉez un autre fichier nommรฉ ยซ cookies_read.php ยป avec le code suivant.
<?php
print_r($_COOKIE); // output the contents of the cookie array variable
?>
Sortie :
Array ( [PHPSESSID] => h5onbf7pctbr0t68adugdp2611 [user_name] => Guru99 )
Remarque : $_COOKIE est une variable superglobale intรฉgrรฉe ร PHP. Elle contient les noms et les valeurs de tous les cookies dรฉfinis.
Le nombre de cookies et leur taille sont limitรฉs par le navigateur, gรฉnรฉralement autour de 50 cookies par domaine et 4 Ko par cookie.
Testons notre application. Supposons que vous ayez enregistrรฉ vos fichiers PHP dans un dossier phptuts.
- รtape 1 โ ouvrez votre navigateur Web et saisissez le URL http://localhost/phptuts/cookies_read.php
Remarque : seul un tableau vide a รฉtรฉ affichรฉ
- รtape 2 โ Accรฉdez ร URL http://localhost/phptuts/cookies.php
- รtape 3 โ revenez au premier onglet, puis cliquez sur le bouton d'actualisation
Attendez une minute, puis cliquez ร nouveau sur le bouton d'actualisation. Quels rรฉsultats avez-vous obtenus ?
Supprimer les cookies
- Si vous souhaitez dรฉtruire un cookie avant son heure d'expiration, vous dรฉfinissez l'heure d'expiration sur une heure dรฉjร รฉcoulรฉe.
- Crรฉez un nouveau fichier nommรฉ cookie_destroy.php avec le code suivant
<?php setcookie("user_name", "Guru99", time() - 360,'/'); ?>
- Rรฉpรฉtez les รฉtapes 1 ร 3 de la section ci-dessus sur la rรฉcupรฉration des valeurs des cookies.
- Ouvrez le URL http://localhost/phptuts/cookie_destroy.php
- Passer ร la URL http://localhost/phptuts/cookies_read.phpQuels rรฉsultats affiche-t-il ?
Qu'est-ce qu'une sรฉance ?
- Une session est une variable globale stockรฉe sur le serveur.
- Chaque session se voit attribuer un identifiant unique qui est utilisรฉ pour rรฉcupรฉrer les valeurs stockรฉes.
- ร chaque crรฉation de session, un cookie contenant l'identifiant unique de session est stockรฉ sur l'ordinateur de l'utilisateur et renvoyรฉ avec chaque requรชte au serveur. Si le navigateur client ne prend pas en charge les cookies, l'identifiant unique de session PHP est affichรฉ dans le navigateur. URL.
- Les sessions ont la capacitรฉ de stocker des donnรฉes relativement volumineuses par rapport aux cookies.
- Les valeurs de session sont automatiquement supprimรฉes ร la fermeture du navigateur. Si vous souhaitez stocker les valeurs de maniรจre permanente, vous devez les stocker dans la base de donnรฉes.
- Tout comme la variable de tableau $_COOKIE, les variables de session sont stockรฉes dans la variable de tableau $_SESSION. Tout comme les cookies, la session doit รชtre dรฉmarrรฉe avant toute balise HTML.
Pourquoi et quand utiliser Sessions ?
- Vous souhaitez stocker des informations importantes, telles que l'identifiant de l'utilisateur, de maniรจre plus sรฉcurisรฉe sur le serveur, hors de portรฉe des utilisateurs malveillants.
- Vous souhaitez transmettre des valeurs d'une page ร une autre.
- Vous souhaitez une alternative aux cookies sur les navigateurs qui ne prennent pas en charge les cookies.
- Vous souhaitez stocker les variables globales de maniรจre plus efficace et plus sรปre que de les passer en paramรจtre. URL.
- Vous รชtes en dรฉveloppementping une application telle qu'une boutiqueping un panier qui doit stocker temporairement des informations d'une capacitรฉ supรฉrieure ร 4 Ko.
Crรฉation d'une session
Pour crรฉer une session, vous devez d'abord appeler la fonction PHP session_start, puis stocker vos valeurs dans la variable de tableau $_SESSION.
Supposons que nous voulions connaรฎtre le nombre de fois qu'une page a รฉtรฉ chargรฉe. Nous pouvons utiliser une session pour cela.
Le code ci-dessous montre comment crรฉer et rรฉcupรฉrer des valeurs ร partir de sessions.
<?php session_start(); // start the session if(isset($_SESSION['page_count'])) { $_SESSION['page_count'] += 1; } else { $_SESSION['page_count'] = 1; } echo 'You are visitor number ' . $_SESSION['page_count']; ?>
Sortie :
You are visitor number 1
Dรฉtruire les variables de session
La fonction session_destroy() est utilisรฉe pour dรฉtruire l'intรฉgralitรฉ de la session PHP.
Si vous souhaitez supprimer un seul รฉlรฉment de session, utilisez la fonction unset().
Le code ci-dessous illustre comment utiliser les deux mรฉthodes.
<?php
session_destroy(); // destroy entire session
?>
<?php unset($_SESSION['product']); // destroy product session item ?>
La fonction session_destroy supprime toutes les donnรฉes de session, y compris les cookies associรฉs ร la session.
La commande ยซ unset ยป libรจre uniquement les variables de session individuelles. Les autres donnรฉes restent intactes.




