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.





