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.

  • (I.e. Que sont les cookies ? Un cookie est un petit fichier, jusqu'à 4 Ko, que le serveur stocke sur le client et qui est renvoyé avec chaque requête ultérieure.
  • 🇧🇷 Quelles sont les séances ? Une session stocke des données sur le serveur sous un identifiant unique, conservé dans le tableau $_SESSION et référencé par un cookie de session.
  • ???? Différence clé : Les cookies résident sur le client et conviennent aux petites quantités de données non sensibles ; les sessions résident sur le serveur et contiennent des données plus volumineuses ou privées.
  • Création de cookies : La fonction setcookie() définit un nom, une valeur et, en option, les indicateurs d'expiration, de chemin, de domaine, de sécurité et d'utilisation exclusive de HTTP avant toute sortie HTML.
  • 📝 Création de sessions : session_start() lance une session, après quoi vous lisez et écrivez des valeurs via le tableau superglobal $_SESSION.
  • 🇧🇷 Nettoyer: Faites expirer un cookie en définissant une date et une heure antérieures ; terminez une session avec session_destroy() ou effacez une valeur avec unset().
  • 🤖 Assistance IA : Les outils d'IA peuvent mettre en œuvre une gestion sécurisée des sessions et signaler les faiblesses des cookies ou des sessions dans le code PHP existant.

Cookies et sessions PHP

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.

Qu'est-ce qu'un cookie

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.com signifie l'ensemble du domaine tandis que www.sub.cookiedomain.com limite l'accès aux cookies à www.sub.cookiedomain.com et 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

Récupération de la valeur du Cookie

Remarque : seul un tableau vide a été affiché

  • Étape 2 – Accédez à URL http://localhost/phptuts/cookies.php

Récupération de la valeur du Cookie

  • Étape 3 – revenez au premier onglet, puis cliquez sur le bouton d'actualisation

Récupération de la valeur du Cookie

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.

FAQ

Les cookies stockent des données dans un petit fichier sur le navigateur de l'utilisateur et sont conservés à chaque requête. Les sessions, quant à elles, stockent les données sur le serveur et n'envoient qu'un cookie d'identification de session. Les sessions sont plus sûres pour les données sensibles ou volumineuses.

Par défaut, PHP enregistre les données de session dans des fichiers situés dans le répertoire défini par `session.save_path` dans `php.ini`, généralement le répertoire temporaire du système. Les sites à fort trafic utilisent souvent une base de données, Redis ou Memcached pour cet enregistrement.

Définissez l'indicateur HttpOnly afin que JavaLe script ne peut pas lire le cookie, l'attribut Secure garantit que la connexion se fait uniquement via HTTPS, et l'attribut SameSite limite les envois intersites. Pour les sessions, l'identifiant est régénéré après la connexion.

Oui. L'IA peut générer un flux de connexion qui régénère l'identifiant de session, définit des indicateurs de sécurité pour les cookies, stocke un minimum de données côté serveur et applique des délais d'expiration. RevComparez les résultats à vos exigences de sécurité.

Oui. L'IA peut détecter l'absence des attributs HttpOnly ou Secure, les risques de fixation de session, le stockage de données sensibles dans les cookies et l'absence de régénération d'identifiant après la connexion, puis suggérer le code corrigé.

Résumez cet article avec :