Session PHP et cookies PHP avec exemple

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 qu'à partir du domaine à partir duquel il a été émis. Par exemple, un cookie défini à l'aide du domaine www.guru99.com ne peut pas être lu à partir du 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 disposent d'options permettant de désactiver les cookies, les cookies tiers ou les deux.

Si tel est le cas, PHP répond en transmettant le jeton de cookie dans l'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 suivre l'état de l'application à l'aide de petits fichiers stockés sur l'ordinateur de l'utilisateur. Le chemin où les cookies sont stockés dépend du navigateur. Internet Explorer les stocke généralement dans le dossier Temporal Internet Files.
  • Personnalisation de l'expérience utilisateur – ceci est réalisé par allowing les utilisateurs peuvent sélectionner leurs préférences. Les pages demandées qui suivent sont personnalisées en fonction des préférences définies dans les cookies.
  • Suivi des 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,

  • Php « setcookie » est le Fonction PHP utilisé pour créer le cookie.
  • « cookie_name » est le nom du cookie que le serveur utilisera lors de la récupération de sa valeur à partir de la variable du tableau $_COOKIE. Il est obligatoire.
  • « cookie_value » est la valeur du cookie et son caractère obligatoire
  • « [expiry_time] » est facultatif ; il peut être utilisé pour définir le délai d'expiration du cookie, par exemple 1 heure. L'heure est définie à l'aide des fonctions PHP time() plus ou moins un nombre de secondes supérieur à 0, c'est-à-dire time() + 3600 pour 1 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 le domaine entier tandis que www.sub.cookiedomain.com limite l'accès aux cookies à www.sub.cookiedomain.com et ses sous-domaines. Notez qu'il est possible d'avoir un sous-domaine d'un sous-domaine tant que le nombre total de caractères ne dépasse pas 253 caractères.
  • « [secure] » est facultatif, la valeur par défaut est false. Il permet de déterminer si le cookie est envoyé via https s'il est défini sur true ou http s'il est défini sur false.
  • « [Httponly] » est facultatif. S'il est défini sur true, alors uniquement les langages de script côté client, c'est-à-dire JavaScript ne peut pas y accéder.

Remarque: la fonction php set cookie doit être exécutée avant la balise d'ouverture HTML.

Regardons maintenant un exemple qui utilise des cookies.

Nous allons créer un programme de base qui nous permettra de stocker le nom d'utilisateur dans un cookie qui expire au bout de dix 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 la suitewing code.

<?php
     print_r($_COOKIE);    //output the contents of the cookie array variable 
?>

Sortie :

Array ( [PHPSESSID] => h5onbf7pctbr0t68adugdp2611 [user_name] => Guru99 )

Remarque : $_COOKIE est une variable super globale intégrée à PHP.

Il contient les noms et valeurs de tous les cookies définis.

Le nombre de valeurs que le

Le tableau $_COOKIE peut contenir en fonction de la taille de la mémoire définie dans php.ini.

La valeur par défaut est 1 Go.

Test de notre application.

Supposons que vous ayez enregistré vos fichiers PHP dans le dossier phptus.

  • Étape 1 – ouvrez votre navigateur Web et entrez l'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 – Navigateur vers l'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 Actualiser

Récupération de la valeur du Cookie

Attendez une minute puis cliquez à nouveau sur le bouton Actualiser. Quels résultats as-tu 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 la suitewing code
<?php

 setcookie("user_name", "Guru99", time() - 360,'/');

?>
  • Répétez les étapes 1 à 3 de la section ci-dessus pour récupérer les valeurs des cookies.
  • Ouvrez l'URL http://localhost/phptuts/cookie_destroy.php
  • Passer à l'URL http://localhost/phptuts/cookies_read.php quels 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 fois qu'une session est créée, un cookie contenant l'identifiant de session unique est stocké sur l'ordinateur de l'utilisateur et renvoyé à chaque demande au serveur. Si le navigateur client ne prend pas en charge les cookies, l'identifiant de session php unique est affiché dans l'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, là où les utilisateurs malveillants ne peuvent pas les modifier.
  • 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écurisée que de les transmettre dans l'URL
  • Vous développez une application telle qu'un panier d'achat qui doit stocker temporairement des informations d'une capacité supérieure à 4 Ko.

Création d'une session

Afin de créer une session, vous devez d'abord appeler la fonction PHP session_start puis stocker vos valeurs dans la variable 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 le faire.

Le code ci-dessous montre comment créer et récupérer des valeurs à partir de sessions

<?php

session_start(); //start the PHP_session function 

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é des variables de session Php.

Si vous souhaitez détruire un seul élément de session, vous 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 

?>

Session_destroy supprime toutes les données de session, y compris les cookies associés à la session.

La désactivation libère uniquement les variables de session individuelles.

Les autres données restent intactes.

Résumé

  • Les cookies sont de petits fichiers enregistrés sur l'ordinateur de l'utilisateur
  • Les cookies ne peuvent être lus qu'à partir du domaine émetteur
  • Les cookies peuvent avoir un délai d'expiration, s'il n'est pas défini, le cookie expire à la fermeture du navigateur.
  • Les sessions sont comme des variables globales stockées sur le serveur
  • Chaque session reçoit un identifiant d'identification unique qui est utilisé pour suivre les variables d'un utilisateur.
  • Les cookies et les sessions doivent être démarrés avant que des balises HTML ne soient envoyées au navigateur.