Blog Alphorm Logo de blog informatique spécialisé en technologie et solutions IT
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
En cours de lecture : Gérer les sessions en PHP 8
Agrandisseur de policeAa
Blog AlphormBlog Alphorm
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
Search
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
Suivez-nous
© Alphorm 2024 - Tous droits réservés
Développement

Gérer les sessions en PHP 8

L'Équipe Alphorm Par L'Équipe Alphorm 18 janvier 2025
Partager
14e lecture en min
Partager
Cet article fait partie du guide Tutoriel Complet pour Apprendre PHP 8 à Travers des Projets Pratiques, partie 24 sur 28.

Bien que les cookies soient couramment utilisés pour stocker des informations utilisateur, ils présentent des limitations en termes de sécurité et de gestion des données sensibles. Les développeurs PHP recherchent des solutions plus robustes pour la gestion de l’état des utilisateurs.

En se fiant uniquement aux cookies, les applications peuvent être vulnérables aux attaques et aux erreurs de manipulation des données, compromettant l’expérience utilisateur et la sécurité.

Les sessions en PHP 8 offrent une alternative sécurisée et efficace pour stocker et récupérer des informations utilisateur entre les pages. Cet article vous guide sur la configuration et la gestion des sessions, complétant ainsi votre compréhension des cookies et des sessions en PHP.

Table de matière
Introduction aux Sessions PHP 8Pourquoi utiliser les sessions en PHP 8 pour la gestion des données utilisateurComment créer une session en PHP 8 : Étape par étapeUtiliser et maintenir une session active en PHP 8Gestion de plusieurs variables dans une session PHP 8Gérer plusieurs variables de session dans PHP 8Supprimer et détruire une session en PHP 8Techniques avancées pour sécuriser et optimiser les sessions en PHP 8Conclusion

Introduction aux Sessions PHP 8

Les sessions en PHP vous permettent de stocker des informations sur le serveur pour suivre les utilisateurs au cours de leurs visites. Contrairement aux cookies, les sessions ne stockent pas directement les données sur l’ordinateur du client, mais sur le serveur, avec un identifiant unique transmis au client via un cookie.

Comprendre le Fonctionnement des Sessions

Qu’est-ce qu’une Session ?

Une session est une méthode de gestion des informations sur l’utilisateur en associant des données spécifiques à un identifiant unique appelé ID de session. Cet identifiant est stocké dans un cookie sur l’ordinateur du client et est utilisé pour retrouver les données stockées sur le serveur.

Schéma expliquant comment fonctionnent les sessions PHP 8 sur le serveur.

Pourquoi utiliser les sessions en PHP 8 pour la gestion des données utilisateur

Pour comprendre le rôle des sessions en PHP, voyons comment elles permettent de conserver et de transférer des informations utilisateur entre différentes pages d’un site web. En créant trois fichiers index.php, traitement.php, et page.php, nous allons illustrer comment les sessions peuvent résoudre le problème de la persistance des données utilisateur.

Voici le code pour chaque fichier :

  • Fichier index.php
				
					<!DOCTYPE html>
<html lang="en">
<head>

<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>session</title>
<style id="wpr-lazyload-bg-container"></style><style id="wpr-lazyload-bg-exclusion"></style>
<noscript>
<style id="wpr-lazyload-bg-nostyle">.jet-image-accordion__item-loader span{--wpr-bg-cd5ef084-e88b-4572-ae86-c9b88b6a32cb: url('https://blog.alphorm.com/wp-content/plugins/jet-tabs/assets/images/spinner-32.svg');}.rll-youtube-player .play{--wpr-bg-4812fd14-f059-48be-a6ea-854315dfccd0: url('https://blog.alphorm.com/wp-content/plugins/wp-rocket/assets/img/youtube.png');}</style>
</noscript>
<script type="application/javascript">const rocket_pairs = [{"selector":".jet-image-accordion__item-loader span","style":".jet-image-accordion__item-loader span{--wpr-bg-cd5ef084-e88b-4572-ae86-c9b88b6a32cb: url('https:\/\/blog.alphorm.com\/wp-content\/plugins\/jet-tabs\/assets\/images\/spinner-32.svg');}","hash":"cd5ef084-e88b-4572-ae86-c9b88b6a32cb","url":"https:\/\/blog.alphorm.com\/wp-content\/plugins\/jet-tabs\/assets\/images\/spinner-32.svg"},{"selector":".rll-youtube-player .play","style":".rll-youtube-player .play{--wpr-bg-4812fd14-f059-48be-a6ea-854315dfccd0: url('https:\/\/blog.alphorm.com\/wp-content\/plugins\/wp-rocket\/assets\/img\/youtube.png');}","hash":"4812fd14-f059-48be-a6ea-854315dfccd0","url":"https:\/\/blog.alphorm.com\/wp-content\/plugins\/wp-rocket\/assets\/img\/youtube.png"}]; const rocket_excluded_pairs = [];</script></head>
<body>
<form action="traitement.php" method="post">
<input type="text" name="pseudo" id="pseudo" placeholder="pseudo">
<input type="submit" value="Valider" name="valider">
</form>
<script>class RocketElementorAnimation{constructor(){this.deviceMode=document.createElement("span"),this.deviceMode.id="elementor-device-mode-wpr",this.deviceMode.setAttribute("class","elementor-screen-only"),document.body.appendChild(this.deviceMode)}_detectAnimations(){let t=getComputedStyle(this.deviceMode,":after").content.replace(/"/g,"");this.animationSettingKeys=this._listAnimationSettingsKeys(t),document.querySelectorAll(".elementor-invisible[data-settings]").forEach(t=>{const e=t.getBoundingClientRect();if(e.bottom>=0&&e.top<=window.innerHeight)try{this._animateElement(t)}catch(t){}})}_animateElement(t){const e=JSON.parse(t.dataset.settings),i=e._animation_delay||e.animation_delay||0,n=e[this.animationSettingKeys.find(t=>e[t])];if("none"===n)return void t.classList.remove("elementor-invisible");t.classList.remove(n),this.currentAnimation&&t.classList.remove(this.currentAnimation),this.currentAnimation=n;let s=setTimeout(()=>{t.classList.remove("elementor-invisible"),t.classList.add("animated",n),this._removeAnimationSettings(t,e)},i);window.addEventListener("rocket-startLoading",function(){clearTimeout(s)})}_listAnimationSettingsKeys(t="mobile"){const e=[""];switch(t){case"mobile":e.unshift("_mobile");case"tablet":e.unshift("_tablet");case"desktop":e.unshift("_desktop")}const i=[];return["animation","_animation"].forEach(t=>{e.forEach(e=>{i.push(t+e)})}),i}_removeAnimationSettings(t,e){this._listAnimationSettingsKeys().forEach(t=>delete e[t]),t.dataset.settings=JSON.stringify(e)}static run(){const t=new RocketElementorAnimation;requestAnimationFrame(t._detectAnimations.bind(t))}}document.addEventListener("DOMContentLoaded",RocketElementorAnimation.run);</script></body>
</html>
				
			
  • Fichier traitement.php
				
					<?php
$pseudo=$_POST['pseudo']; ?>
<!DOCTYPE html>
<html lang="en">
<head>

<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Traitement</title>
<style id="wpr-lazyload-bg-container"></style><style id="wpr-lazyload-bg-exclusion"></style>
<noscript>
<style id="wpr-lazyload-bg-nostyle">.jet-image-accordion__item-loader span{--wpr-bg-cd5ef084-e88b-4572-ae86-c9b88b6a32cb: url('https://blog.alphorm.com/wp-content/plugins/jet-tabs/assets/images/spinner-32.svg');}.rll-youtube-player .play{--wpr-bg-4812fd14-f059-48be-a6ea-854315dfccd0: url('https://blog.alphorm.com/wp-content/plugins/wp-rocket/assets/img/youtube.png');}</style>
</noscript>
<script type="application/javascript">const rocket_pairs = [{"selector":".jet-image-accordion__item-loader span","style":".jet-image-accordion__item-loader span{--wpr-bg-cd5ef084-e88b-4572-ae86-c9b88b6a32cb: url('https:\/\/blog.alphorm.com\/wp-content\/plugins\/jet-tabs\/assets\/images\/spinner-32.svg');}","hash":"cd5ef084-e88b-4572-ae86-c9b88b6a32cb","url":"https:\/\/blog.alphorm.com\/wp-content\/plugins\/jet-tabs\/assets\/images\/spinner-32.svg"},{"selector":".rll-youtube-player .play","style":".rll-youtube-player .play{--wpr-bg-4812fd14-f059-48be-a6ea-854315dfccd0: url('https:\/\/blog.alphorm.com\/wp-content\/plugins\/wp-rocket\/assets\/img\/youtube.png');}","hash":"4812fd14-f059-48be-a6ea-854315dfccd0","url":"https:\/\/blog.alphorm.com\/wp-content\/plugins\/wp-rocket\/assets\/img\/youtube.png"}]; const rocket_excluded_pairs = [];</script></head>
<body>
<h1>Bonjour <?= $pseudo ?></h1>
<p><a href="page.php" data-wpel-link="internal" target="_self" rel="follow noopener noreferrer">Allez vers la page</a></p>
</body>
</html>
				
			
  • Fichier page.php
				
					<!DOCTYPE html>
<html lang="en">
<head>

<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>page</title>
<style id="wpr-lazyload-bg-container"></style><style id="wpr-lazyload-bg-exclusion"></style>
<noscript>
<style id="wpr-lazyload-bg-nostyle">.jet-image-accordion__item-loader span{--wpr-bg-cd5ef084-e88b-4572-ae86-c9b88b6a32cb: url('https://blog.alphorm.com/wp-content/plugins/jet-tabs/assets/images/spinner-32.svg');}.rll-youtube-player .play{--wpr-bg-4812fd14-f059-48be-a6ea-854315dfccd0: url('https://blog.alphorm.com/wp-content/plugins/wp-rocket/assets/img/youtube.png');}</style>
</noscript>
<script type="application/javascript">const rocket_pairs = [{"selector":".jet-image-accordion__item-loader span","style":".jet-image-accordion__item-loader span{--wpr-bg-cd5ef084-e88b-4572-ae86-c9b88b6a32cb: url('https:\/\/blog.alphorm.com\/wp-content\/plugins\/jet-tabs\/assets\/images\/spinner-32.svg');}","hash":"cd5ef084-e88b-4572-ae86-c9b88b6a32cb","url":"https:\/\/blog.alphorm.com\/wp-content\/plugins\/jet-tabs\/assets\/images\/spinner-32.svg"},{"selector":".rll-youtube-player .play","style":".rll-youtube-player .play{--wpr-bg-4812fd14-f059-48be-a6ea-854315dfccd0: url('https:\/\/blog.alphorm.com\/wp-content\/plugins\/wp-rocket\/assets\/img\/youtube.png');}","hash":"4812fd14-f059-48be-a6ea-854315dfccd0","url":"https:\/\/blog.alphorm.com\/wp-content\/plugins\/wp-rocket\/assets\/img\/youtube.png"}]; const rocket_excluded_pairs = [];</script></head>
<body>
<p><?=$pseudo?> je suis content de vous reconnaitre</p>
</body>
</html>
				
			

Si on exécute ce programme il s’affiche les résultats suivants en tapant comme un pseudo le nom Elon Musk

Résultat affichant pourquoi les sessions sont nécessaires en PHP 8.

Observations

Si vous entrez le pseudo « Elon Musk » dans le formulaire de index.php et soumettez le formulaire, la page traitement.php affiche « Bonjour Elon Musk ». Cependant, lorsque vous cliquez sur le lien vers page.php, une erreur se produit car la variable $pseudo n’est pas définie dans page.php.

Comment pouvez-vous faire en sorte que le pseudo soit disponible dans page.php sans perdre l’information entre les pages ?

Solution : Utiliser les Sessions

Les sessions en PHP permettent de conserver des informations utilisateur entre les pages.

Comment créer une session en PHP 8 : Étape par étape

Pour mettre en place une session en PHP, suivez ces étapes en créant trois fichiers : index.php, traitement.php, et page.php. Cela vous permettra de conserver et de transférer des informations utilisateur entre différentes pages de votre site web.

Fichier index.php

Ce fichier contient un formulaire simple vous permettant de saisir votre pseudo.

				
					<!DOCTYPE html>
<html lang="en">
<head>

<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>session</title>
<style id="wpr-lazyload-bg-container"></style><style id="wpr-lazyload-bg-exclusion"></style>
<noscript>
<style id="wpr-lazyload-bg-nostyle">.jet-image-accordion__item-loader span{--wpr-bg-cd5ef084-e88b-4572-ae86-c9b88b6a32cb: url('https://blog.alphorm.com/wp-content/plugins/jet-tabs/assets/images/spinner-32.svg');}.rll-youtube-player .play{--wpr-bg-4812fd14-f059-48be-a6ea-854315dfccd0: url('https://blog.alphorm.com/wp-content/plugins/wp-rocket/assets/img/youtube.png');}</style>
</noscript>
<script type="application/javascript">const rocket_pairs = [{"selector":".jet-image-accordion__item-loader span","style":".jet-image-accordion__item-loader span{--wpr-bg-cd5ef084-e88b-4572-ae86-c9b88b6a32cb: url('https:\/\/blog.alphorm.com\/wp-content\/plugins\/jet-tabs\/assets\/images\/spinner-32.svg');}","hash":"cd5ef084-e88b-4572-ae86-c9b88b6a32cb","url":"https:\/\/blog.alphorm.com\/wp-content\/plugins\/jet-tabs\/assets\/images\/spinner-32.svg"},{"selector":".rll-youtube-player .play","style":".rll-youtube-player .play{--wpr-bg-4812fd14-f059-48be-a6ea-854315dfccd0: url('https:\/\/blog.alphorm.com\/wp-content\/plugins\/wp-rocket\/assets\/img\/youtube.png');}","hash":"4812fd14-f059-48be-a6ea-854315dfccd0","url":"https:\/\/blog.alphorm.com\/wp-content\/plugins\/wp-rocket\/assets\/img\/youtube.png"}]; const rocket_excluded_pairs = [];</script></head>
<body>
<form action="traitement.php" method="post">
<input type="text" name="pseudo" id="pseudo" placeholder="pseudo">
<input type="submit" value="Valider" name="valider">
</form>
</body>
</html>
				
			

Fichier traitement.php

Ce fichier traite le formulaire, stocke votre pseudo dans une session, et fournit un lien vers une autre page où le pseudo sera affiché.

				
					<?php
session_start(); // Démarrer la session
$pseudo = $_POST['pseudo'];
$_SESSION['pseudo'] = $pseudo; // Stocker le pseudo dans la session
?>
<!DOCTYPE html>
<html lang="en">
<head>

<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Traitement</title>
<style id="wpr-lazyload-bg-container"></style><style id="wpr-lazyload-bg-exclusion"></style>
<noscript>
<style id="wpr-lazyload-bg-nostyle">.jet-image-accordion__item-loader span{--wpr-bg-cd5ef084-e88b-4572-ae86-c9b88b6a32cb: url('https://blog.alphorm.com/wp-content/plugins/jet-tabs/assets/images/spinner-32.svg');}.rll-youtube-player .play{--wpr-bg-4812fd14-f059-48be-a6ea-854315dfccd0: url('https://blog.alphorm.com/wp-content/plugins/wp-rocket/assets/img/youtube.png');}</style>
</noscript>
<script type="application/javascript">const rocket_pairs = [{"selector":".jet-image-accordion__item-loader span","style":".jet-image-accordion__item-loader span{--wpr-bg-cd5ef084-e88b-4572-ae86-c9b88b6a32cb: url('https:\/\/blog.alphorm.com\/wp-content\/plugins\/jet-tabs\/assets\/images\/spinner-32.svg');}","hash":"cd5ef084-e88b-4572-ae86-c9b88b6a32cb","url":"https:\/\/blog.alphorm.com\/wp-content\/plugins\/jet-tabs\/assets\/images\/spinner-32.svg"},{"selector":".rll-youtube-player .play","style":".rll-youtube-player .play{--wpr-bg-4812fd14-f059-48be-a6ea-854315dfccd0: url('https:\/\/blog.alphorm.com\/wp-content\/plugins\/wp-rocket\/assets\/img\/youtube.png');}","hash":"4812fd14-f059-48be-a6ea-854315dfccd0","url":"https:\/\/blog.alphorm.com\/wp-content\/plugins\/wp-rocket\/assets\/img\/youtube.png"}]; const rocket_excluded_pairs = [];</script></head>
<body>
<h1>Bonjour <?= htmlspecialchars($pseudo) ?></h1>
<p><a href="page.php" data-wpel-link="internal" target="_self" rel="follow noopener noreferrer">Aller vers la page</a></p>
</body>
</html>
				
			

Fichier page.php

Ce fichier affiche le pseudo stocké dans la session, même si vous accédez à cette page directement.

				
					<?php
session_start(); // Démarrer la session
$pseudo = isset($_SESSION['pseudo']) ? $_SESSION['pseudo'] : 'inconnu'; // Récupérer le pseudo depuis la session
?>
<!DOCTYPE html>
<html lang="en">
<head>

<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Page</title>
<style id="wpr-lazyload-bg-container"></style><style id="wpr-lazyload-bg-exclusion"></style>
<noscript>
<style id="wpr-lazyload-bg-nostyle">.jet-image-accordion__item-loader span{--wpr-bg-cd5ef084-e88b-4572-ae86-c9b88b6a32cb: url('https://blog.alphorm.com/wp-content/plugins/jet-tabs/assets/images/spinner-32.svg');}.rll-youtube-player .play{--wpr-bg-4812fd14-f059-48be-a6ea-854315dfccd0: url('https://blog.alphorm.com/wp-content/plugins/wp-rocket/assets/img/youtube.png');}</style>
</noscript>
<script type="application/javascript">const rocket_pairs = [{"selector":".jet-image-accordion__item-loader span","style":".jet-image-accordion__item-loader span{--wpr-bg-cd5ef084-e88b-4572-ae86-c9b88b6a32cb: url('https:\/\/blog.alphorm.com\/wp-content\/plugins\/jet-tabs\/assets\/images\/spinner-32.svg');}","hash":"cd5ef084-e88b-4572-ae86-c9b88b6a32cb","url":"https:\/\/blog.alphorm.com\/wp-content\/plugins\/jet-tabs\/assets\/images\/spinner-32.svg"},{"selector":".rll-youtube-player .play","style":".rll-youtube-player .play{--wpr-bg-4812fd14-f059-48be-a6ea-854315dfccd0: url('https:\/\/blog.alphorm.com\/wp-content\/plugins\/wp-rocket\/assets\/img\/youtube.png');}","hash":"4812fd14-f059-48be-a6ea-854315dfccd0","url":"https:\/\/blog.alphorm.com\/wp-content\/plugins\/wp-rocket\/assets\/img\/youtube.png"}]; const rocket_excluded_pairs = [];</script></head>
<body>
<p><?= htmlspecialchars($pseudo) ?>, je suis content de vous reconnaître.</p>
</body>
</html>
				
			

Explication

  • Démarrage de la Session : Dans traitement.php et page.php, utilisez session_start() pour démarrer la session ou récupérer une session existante. Cela doit être la première chose faite dans chaque fichier PHP utilisant des sessions.
  • Stockage des Données : Dans traitement.php, récupérez le pseudo soumis via le formulaire et stockez-le dans une variable de session $_SESSION[‘pseudo’].
  • Récupération des Données : Dans page.php, récupérez le pseudo stocké dans la session et affichez-le. Si la session n’existe pas, une valeur par défaut (ici, ‘inconnu’) est utilisée.
Pourquoi Utiliser les Sessions ?
  • Les sessions en PHP sont essentielles pour maintenir l’état de l’utilisateur entre les pages. Contrairement aux cookies, les sessions stockent les données sur le serveur, ce qui est plus sécurisé pour les informations sensibles. En utilisant les sessions, vous pouvez facilement conserver des informations telles que les identifiants de connexion, les préférences utilisateur, ou les articles dans un panier d’achat, tout en assurant une expérience utilisateur cohérente et sécurisée.
  • Si vous entrez le pseudo « Elon Musk » dans le formulaire de index.php et soumettez le formulaire, la page traitement.php affichera « Bonjour Elon Musk ». En cliquant sur le lien vers page.php, vous verrez « Elon Musk, je suis content de vous reconnaître », grâce à la session qui a conservé l’information du pseudo entre les pages.
  • Résultat affiché
Résultat visuel après la mise en place pour gérer des données utilisateur.

Utiliser et maintenir une session active en PHP 8

Pour ajouter une nouvelle page page-2.php qui utilise la session pour afficher le pseudo de l’utilisateur, vous pouvez suivre le même principe que pour page.php. Voici comment faire :

  • Fichier page-2.php

Ce fichier affiche le pseudo stocké dans la session, indiquant que vous êtes sur la deuxième page.

				
					<?php
session_start(); // Démarrer la session
$pseudo = isset($_SESSION['pseudo']) ? $_SESSION['pseudo'] : 'inconnu'; // Récupérer le pseudo depuis la session?>
<!DOCTYPE html>
<html lang="en">
<head>

<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Page 2</title>
<style id="wpr-lazyload-bg-container"></style><style id="wpr-lazyload-bg-exclusion"></style>
<noscript>
<style id="wpr-lazyload-bg-nostyle">.jet-image-accordion__item-loader span{--wpr-bg-cd5ef084-e88b-4572-ae86-c9b88b6a32cb: url('https://blog.alphorm.com/wp-content/plugins/jet-tabs/assets/images/spinner-32.svg');}.rll-youtube-player .play{--wpr-bg-4812fd14-f059-48be-a6ea-854315dfccd0: url('https://blog.alphorm.com/wp-content/plugins/wp-rocket/assets/img/youtube.png');}</style>
</noscript>
<script type="application/javascript">const rocket_pairs = [{"selector":".jet-image-accordion__item-loader span","style":".jet-image-accordion__item-loader span{--wpr-bg-cd5ef084-e88b-4572-ae86-c9b88b6a32cb: url('https:\/\/blog.alphorm.com\/wp-content\/plugins\/jet-tabs\/assets\/images\/spinner-32.svg');}","hash":"cd5ef084-e88b-4572-ae86-c9b88b6a32cb","url":"https:\/\/blog.alphorm.com\/wp-content\/plugins\/jet-tabs\/assets\/images\/spinner-32.svg"},{"selector":".rll-youtube-player .play","style":".rll-youtube-player .play{--wpr-bg-4812fd14-f059-48be-a6ea-854315dfccd0: url('https:\/\/blog.alphorm.com\/wp-content\/plugins\/wp-rocket\/assets\/img\/youtube.png');}","hash":"4812fd14-f059-48be-a6ea-854315dfccd0","url":"https:\/\/blog.alphorm.com\/wp-content\/plugins\/wp-rocket\/assets\/img\/youtube.png"}]; const rocket_excluded_pairs = [];</script></head>
<body>
<p><?= htmlspecialchars($pseudo) ?>, vous ette  dans la page 2</p>
</body>
</html>
				
			
  • Mise à jour de page.php pour inclure un lien vers page-2.php

Ajoutez un lien dans page.php pour naviguer vers page-2.php.

				
					<!DOCTYPE html>
<html lang="en">
<head>

<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Page</title>
<style id="wpr-lazyload-bg-container"></style><style id="wpr-lazyload-bg-exclusion"></style>
<noscript>
<style id="wpr-lazyload-bg-nostyle">.jet-image-accordion__item-loader span{--wpr-bg-cd5ef084-e88b-4572-ae86-c9b88b6a32cb: url('https://blog.alphorm.com/wp-content/plugins/jet-tabs/assets/images/spinner-32.svg');}.rll-youtube-player .play{--wpr-bg-4812fd14-f059-48be-a6ea-854315dfccd0: url('https://blog.alphorm.com/wp-content/plugins/wp-rocket/assets/img/youtube.png');}</style>
</noscript>
<script type="application/javascript">const rocket_pairs = [{"selector":".jet-image-accordion__item-loader span","style":".jet-image-accordion__item-loader span{--wpr-bg-cd5ef084-e88b-4572-ae86-c9b88b6a32cb: url('https:\/\/blog.alphorm.com\/wp-content\/plugins\/jet-tabs\/assets\/images\/spinner-32.svg');}","hash":"cd5ef084-e88b-4572-ae86-c9b88b6a32cb","url":"https:\/\/blog.alphorm.com\/wp-content\/plugins\/jet-tabs\/assets\/images\/spinner-32.svg"},{"selector":".rll-youtube-player .play","style":".rll-youtube-player .play{--wpr-bg-4812fd14-f059-48be-a6ea-854315dfccd0: url('https:\/\/blog.alphorm.com\/wp-content\/plugins\/wp-rocket\/assets\/img\/youtube.png');}","hash":"4812fd14-f059-48be-a6ea-854315dfccd0","url":"https:\/\/blog.alphorm.com\/wp-content\/plugins\/wp-rocket\/assets\/img\/youtube.png"}]; const rocket_excluded_pairs = [];</script></head>
<body>
<p><?= htmlspecialchars($pseudo) ?>, je suis content de vous reconnaître.</p>
<p><a href="page-2.php" data-wpel-link="internal" target="_self" rel="follow noopener noreferrer">Aller vers la page 2</a></p>
</body>
</html>
				
			

Maintenant en va tester notre code

  • Résultat affiché
Affichage montrant la continuité

Formation PHP 8 : Gestion des Sessions

Découvrir cette formation
Diagramme des fonctionnalités et avantages de PHP pour développeurs web

Gestion de plusieurs variables dans une session PHP 8

Pour mettre en place plusieurs variables dans une session, suivez ces étapes en modifiant les fichiers index.php, traitement.php, page.php, et page-2.php afin d’inclure et d’afficher les nouvelles variables.

Exemple Pratique : Mettre en Place Plusieurs Variables de Session

  • Fichier index.php

Ce fichier contient un formulaire vous permettant de saisir votre pseudo, âge et ville.

				
					<!DOCTYPE html>
<html lang="en">
<head>

<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Session</title>
<style id="wpr-lazyload-bg-container"></style><style id="wpr-lazyload-bg-exclusion"></style>
<noscript>
<style id="wpr-lazyload-bg-nostyle">.jet-image-accordion__item-loader span{--wpr-bg-cd5ef084-e88b-4572-ae86-c9b88b6a32cb: url('https://blog.alphorm.com/wp-content/plugins/jet-tabs/assets/images/spinner-32.svg');}.rll-youtube-player .play{--wpr-bg-4812fd14-f059-48be-a6ea-854315dfccd0: url('https://blog.alphorm.com/wp-content/plugins/wp-rocket/assets/img/youtube.png');}</style>
</noscript>
<script type="application/javascript">const rocket_pairs = [{"selector":".jet-image-accordion__item-loader span","style":".jet-image-accordion__item-loader span{--wpr-bg-cd5ef084-e88b-4572-ae86-c9b88b6a32cb: url('https:\/\/blog.alphorm.com\/wp-content\/plugins\/jet-tabs\/assets\/images\/spinner-32.svg');}","hash":"cd5ef084-e88b-4572-ae86-c9b88b6a32cb","url":"https:\/\/blog.alphorm.com\/wp-content\/plugins\/jet-tabs\/assets\/images\/spinner-32.svg"},{"selector":".rll-youtube-player .play","style":".rll-youtube-player .play{--wpr-bg-4812fd14-f059-48be-a6ea-854315dfccd0: url('https:\/\/blog.alphorm.com\/wp-content\/plugins\/wp-rocket\/assets\/img\/youtube.png');}","hash":"4812fd14-f059-48be-a6ea-854315dfccd0","url":"https:\/\/blog.alphorm.com\/wp-content\/plugins\/wp-rocket\/assets\/img\/youtube.png"}]; const rocket_excluded_pairs = [];</script></head>
<body>
<form action="traitement.php" method="post">
<input type="text" name="pseudo" id="pseudo" placeholder="Pseudo" required>
<input type="number" name="age" id="age" placeholder="Âge" required>
<input type="text" name="ville" id="ville" placeholder="Ville" required>
<input type="submit" value="Valider" name="valider">
</form>
</body>
</html>
				
			
  • Fichier traitement.php

Ce fichier traite le formulaire et stocke votre pseudo, âge et ville dans une session.

				
					<?php
session_start(); // Démarrer la session
$pseudo = $_POST['pseudo'];
$age = $_POST['age'];
$ville = $_POST['ville'];
$_SESSION['pseudo'] = $pseudo; // Stocker le pseudo dans la session
$_SESSION['age'] = $age;       // Stocker l'âge dans la session
$_SESSION['ville'] = $ville;   // Stocker la ville dans la session
?>
<!DOCTYPE html>
<html lang="en">
<head>

<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Traitement</title>
<style id="wpr-lazyload-bg-container"></style><style id="wpr-lazyload-bg-exclusion"></style>
<noscript>
<style id="wpr-lazyload-bg-nostyle">.jet-image-accordion__item-loader span{--wpr-bg-cd5ef084-e88b-4572-ae86-c9b88b6a32cb: url('https://blog.alphorm.com/wp-content/plugins/jet-tabs/assets/images/spinner-32.svg');}.rll-youtube-player .play{--wpr-bg-4812fd14-f059-48be-a6ea-854315dfccd0: url('https://blog.alphorm.com/wp-content/plugins/wp-rocket/assets/img/youtube.png');}</style>
</noscript>
<script type="application/javascript">const rocket_pairs = [{"selector":".jet-image-accordion__item-loader span","style":".jet-image-accordion__item-loader span{--wpr-bg-cd5ef084-e88b-4572-ae86-c9b88b6a32cb: url('https:\/\/blog.alphorm.com\/wp-content\/plugins\/jet-tabs\/assets\/images\/spinner-32.svg');}","hash":"cd5ef084-e88b-4572-ae86-c9b88b6a32cb","url":"https:\/\/blog.alphorm.com\/wp-content\/plugins\/jet-tabs\/assets\/images\/spinner-32.svg"},{"selector":".rll-youtube-player .play","style":".rll-youtube-player .play{--wpr-bg-4812fd14-f059-48be-a6ea-854315dfccd0: url('https:\/\/blog.alphorm.com\/wp-content\/plugins\/wp-rocket\/assets\/img\/youtube.png');}","hash":"4812fd14-f059-48be-a6ea-854315dfccd0","url":"https:\/\/blog.alphorm.com\/wp-content\/plugins\/wp-rocket\/assets\/img\/youtube.png"}]; const rocket_excluded_pairs = [];</script></head>
<body>
<h1>Bonjour <?= htmlspecialchars($pseudo) ?></h1>
<p>Vous avez <?= htmlspecialchars($age) ?> ans et vous habitez à <?= htmlspecialchars($ville) ?>.</p>
<p><a href="page.php" data-wpel-link="internal" target="_self" rel="follow noopener noreferrer">Aller vers la page</a></p>
</body>
</html>
				
			
  • Fichier page.php

Ce fichier affiche les informations stockées dans la session.

				
					<?php
session_start(); // Démarrer la session
$pseudo = isset($_SESSION['pseudo']) ? $_SESSION['pseudo'] : 'inconnu';
$age = isset($_SESSION['age']) ? $_SESSION['age'] : 'inconnu';
$ville = isset($_SESSION['ville']) ? $_SESSION['ville'] : 'inconnu';
?>
<!DOCTYPE html>
<html lang="en">
<head>

<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Page</title>
<style id="wpr-lazyload-bg-container"></style><style id="wpr-lazyload-bg-exclusion"></style>
<noscript>
<style id="wpr-lazyload-bg-nostyle">.jet-image-accordion__item-loader span{--wpr-bg-cd5ef084-e88b-4572-ae86-c9b88b6a32cb: url('https://blog.alphorm.com/wp-content/plugins/jet-tabs/assets/images/spinner-32.svg');}.rll-youtube-player .play{--wpr-bg-4812fd14-f059-48be-a6ea-854315dfccd0: url('https://blog.alphorm.com/wp-content/plugins/wp-rocket/assets/img/youtube.png');}</style>
</noscript>
<script type="application/javascript">const rocket_pairs = [{"selector":".jet-image-accordion__item-loader span","style":".jet-image-accordion__item-loader span{--wpr-bg-cd5ef084-e88b-4572-ae86-c9b88b6a32cb: url('https:\/\/blog.alphorm.com\/wp-content\/plugins\/jet-tabs\/assets\/images\/spinner-32.svg');}","hash":"cd5ef084-e88b-4572-ae86-c9b88b6a32cb","url":"https:\/\/blog.alphorm.com\/wp-content\/plugins\/jet-tabs\/assets\/images\/spinner-32.svg"},{"selector":".rll-youtube-player .play","style":".rll-youtube-player .play{--wpr-bg-4812fd14-f059-48be-a6ea-854315dfccd0: url('https:\/\/blog.alphorm.com\/wp-content\/plugins\/wp-rocket\/assets\/img\/youtube.png');}","hash":"4812fd14-f059-48be-a6ea-854315dfccd0","url":"https:\/\/blog.alphorm.com\/wp-content\/plugins\/wp-rocket\/assets\/img\/youtube.png"}]; const rocket_excluded_pairs = [];</script></head>
<body>
<p><?= htmlspecialchars($pseudo) ?>, je suis content de vous reconnaître.</p>
<p>Vous avez <?= htmlspecialchars($age) ?> ans et vous habitez à <?= htmlspecialchars($ville) ?>.</p>
<p><a href="page-2.php" data-wpel-link="internal" target="_self" rel="follow noopener noreferrer">Aller vers la page 2</a></p>
<p><a href="logout.php" data-wpel-link="internal" target="_self" rel="follow noopener noreferrer">Déconnexion</a></p>
</body>
</html>
				
			
  • Fichier page-2.php

Ce fichier affiche également les informations stockées dans la session.

				
					<?php
session_start(); // Démarrer la session
$pseudo = isset($_SESSION['pseudo']) ? $_SESSION['pseudo'] : 'inconnu';
$age = isset($_SESSION['age']) ? $_SESSION['age'] : 'inconnu';
$ville = isset($_SESSION['ville']) ? $_SESSION['ville'] : 'inconnu';
?>
<!DOCTYPE html>
<html lang="en">
<head>

<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Page 2</title>
<style id="wpr-lazyload-bg-container"></style><style id="wpr-lazyload-bg-exclusion"></style>
<noscript>
<style id="wpr-lazyload-bg-nostyle">.jet-image-accordion__item-loader span{--wpr-bg-cd5ef084-e88b-4572-ae86-c9b88b6a32cb: url('https://blog.alphorm.com/wp-content/plugins/jet-tabs/assets/images/spinner-32.svg');}.rll-youtube-player .play{--wpr-bg-4812fd14-f059-48be-a6ea-854315dfccd0: url('https://blog.alphorm.com/wp-content/plugins/wp-rocket/assets/img/youtube.png');}</style>
</noscript>
<script type="application/javascript">const rocket_pairs = [{"selector":".jet-image-accordion__item-loader span","style":".jet-image-accordion__item-loader span{--wpr-bg-cd5ef084-e88b-4572-ae86-c9b88b6a32cb: url('https:\/\/blog.alphorm.com\/wp-content\/plugins\/jet-tabs\/assets\/images\/spinner-32.svg');}","hash":"cd5ef084-e88b-4572-ae86-c9b88b6a32cb","url":"https:\/\/blog.alphorm.com\/wp-content\/plugins\/jet-tabs\/assets\/images\/spinner-32.svg"},{"selector":".rll-youtube-player .play","style":".rll-youtube-player .play{--wpr-bg-4812fd14-f059-48be-a6ea-854315dfccd0: url('https:\/\/blog.alphorm.com\/wp-content\/plugins\/wp-rocket\/assets\/img\/youtube.png');}","hash":"4812fd14-f059-48be-a6ea-854315dfccd0","url":"https:\/\/blog.alphorm.com\/wp-content\/plugins\/wp-rocket\/assets\/img\/youtube.png"}]; const rocket_excluded_pairs = [];</script></head>
<body>
<p><?= htmlspecialchars($pseudo) ?>, vous êtes sur la page 2.</p>
<p>Vous avez <?= htmlspecialchars($age) ?> ans et vous habitez à <?= htmlspecialchars($ville) ?>.</p>
</body>
</html>
				
			

Explication

  • Démarrage de la Session : Utilisez session_start() au début de chaque fichier PHP où vous souhaitez accéder ou manipuler les variables de session.
  • Stockage des Données : Dans traitement.php, vous récupérez les valeurs du formulaire et les stockez dans des variables de session $_SESSION['pseudo'], $_SESSION['age'], et $_SESSION['ville'].
  • Récupération des Données : Dans page.php et page-2.php, vous récupérez les valeurs stockées dans la session et les affichez.
  • Navigation entre les Pages : Assurez-vous que chaque page inclut des liens permettant de naviguer vers les autres pages, en maintenant ainsi la session active et permettant l’accès aux données stockées.

Avec cette configuration, vous pouvez saisir votre pseudo, âge et ville sur index.php, les stocker dans la session via traitement.php, et afficher ces informations sur page.php et page-2.php.

  • Résultat affiché
Affichage des résultats après avoir ajouté plusieurs variables de session en PHP 8.

Gérer plusieurs variables de session dans PHP 8

Pour poursuivre une session avec plusieurs variables, vous devez vous assurer que les variables sont correctement stockées et récupérées tout au long de la navigation sur votre site. Voici un exemple complet avec les fichiers index.php, traitement.php, page.php, page-2.php

  • Mettre ajour a le fichier index.php
				
					<input type="text" name="pseudo" id="pseudo" placeholder="Pseudo" required value="<?php if(isset($pseudo)) {echo $pseudo;} ?>">
<input type="number" name="age" id="age" placeholder="Âge" required value="<?php if(isset($age)) {echo $age;} ?>">
<input type="text" name="ville" id="ville" placeholder="Ville" required value="<?php if(isset($ville)) {echo $ville;} ?>">
				
			
  • Et aussi pour le fichier page-2.php
				
					<p><a href="index.php" data-wpel-link="internal" target="_self" rel="follow noopener noreferrer">Revenir à la page d'accueil</a></p>
				
			
Affichage continuant une session avec multiples variables en PHP 8.

PHP 8

Découvrir cette formation
Guide complet PHP 8 pour développement web et meilleures pratiques IT

Supprimer et détruire une session en PHP 8

Pour détruire une session et effacer toutes les variables de session, vous devez utiliser les fonctions PHP session_destroy(). Voici comment vous pouvez le faire, en mettant à jour votre exemple existant.

En va créer un fichier supprimer.php et mettre ce code

				
					<?php
session_start();
session_destroy(); // Supprimer la session
?>
<!DOCTYPE html>
<html lang="en">
<head>

<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Supprimer</title>
<style id="wpr-lazyload-bg-container"></style><style id="wpr-lazyload-bg-exclusion"></style>
<noscript>
<style id="wpr-lazyload-bg-nostyle">.jet-image-accordion__item-loader span{--wpr-bg-cd5ef084-e88b-4572-ae86-c9b88b6a32cb: url('https://blog.alphorm.com/wp-content/plugins/jet-tabs/assets/images/spinner-32.svg');}.rll-youtube-player .play{--wpr-bg-4812fd14-f059-48be-a6ea-854315dfccd0: url('https://blog.alphorm.com/wp-content/plugins/wp-rocket/assets/img/youtube.png');}</style>
</noscript>
<script type="application/javascript">const rocket_pairs = [{"selector":".jet-image-accordion__item-loader span","style":".jet-image-accordion__item-loader span{--wpr-bg-cd5ef084-e88b-4572-ae86-c9b88b6a32cb: url('https:\/\/blog.alphorm.com\/wp-content\/plugins\/jet-tabs\/assets\/images\/spinner-32.svg');}","hash":"cd5ef084-e88b-4572-ae86-c9b88b6a32cb","url":"https:\/\/blog.alphorm.com\/wp-content\/plugins\/jet-tabs\/assets\/images\/spinner-32.svg"},{"selector":".rll-youtube-player .play","style":".rll-youtube-player .play{--wpr-bg-4812fd14-f059-48be-a6ea-854315dfccd0: url('https:\/\/blog.alphorm.com\/wp-content\/plugins\/wp-rocket\/assets\/img\/youtube.png');}","hash":"4812fd14-f059-48be-a6ea-854315dfccd0","url":"https:\/\/blog.alphorm.com\/wp-content\/plugins\/wp-rocket\/assets\/img\/youtube.png"}]; const rocket_excluded_pairs = [];</script></head>
<body>
<h1>Suppression reussie</h1>
<p><a href="index.php" data-wpel-link="internal" target="_self" rel="follow noopener noreferrer">Revenir à la page d'accueil</a></p>
</body>
</html>
				
			
  • Ajouter cette ligne au fichier page-2.php
				
					<p><a href="supprimer.php" data-wpel-link="internal" target="_self" rel="follow noopener noreferrer">Supprimer la session </a></p>
				
			
  • Ensuite pour le fichier index.php
				
					<?php
session_start(); // Démarrer la session
if(isset($_SESSION['pseudo']) && isset($_SESSION['age']) && isset($_SESSION['ville'])) {
$pseudo = $_SESSION['pseudo'];
$age= $_SESSION['age'];
$ville = $_SESSION['ville'];
}
?>
				
			
  • Résultat affiché
Affichage du processus de destruction d'une session en PHP 8.

Techniques avancées pour sécuriser et optimiser les sessions en PHP 8

Aller plus loin avec les sessions en PHP implique une meilleure compréhension de la manière dont les sessions peuvent être utilisées pour gérer l’état des utilisateurs dans une application web. Voici quelques points clés à explorer pour approfondir votre maîtrise des sessions :

  • Les sessions peuvent être vulnérables aux attaques telles que le vol de session (session hijacking) ou les attaques par fixation de session (session fixation). Pour renforcer la sécurité, vous pouvez :
    • Utiliser session_regenerate_id() régulièrement pour changer l’ID de session.
    • Configurer des paramètres de cookie sécurisés (session.cookie_secure, session.cookie_httponly).
    • Vérifier les informations utilisateur (comme l’IP ou l’agent utilisateur) pour valider la session.
  • Vous pouvez contrôler la durée de vie des sessions via des paramètres tels que session.gc_maxlifetime et gérer la destruction automatique des sessions après une période d’inactivité.

Ce tableau résume les principaux concepts et techniques abordés dans l’article sur les sessions, en mettant en évidence leur importance et leur application pratique.

Section
Description
Exemple
Comprendre le besoin des sessions
Les sessions sont utilisées pour maintenir les informations de l’utilisateur à travers les requêtes HTTP. Elles permettent de conserver des données telles que les identifiants de l’utilisateur, les préférences, etc.
Les sessions sont utiles pour garder l’état de l’utilisateur entre différentes pages.
Mettre en place une session
Démarrer une session et stocker des informations utilisateur dans les variables de session.
php session_start(); $_SESSION[‘pseudo’] = ‘Elon Musk’;
Poursuivre une session
Accéder aux informations stockées dans la session sur différentes pages.
php session_start(); $pseudo = $_SESSION[‘pseudo’];
Mettre en place plusieurs variables
Stocker et gérer plusieurs variables dans une session pour suivre plus d’informations.
php $_SESSION[‘pseudo’] = ‘Elon’; $_SESSION[‘age’] = 30;
Poursuivre avec plusieurs variables
Accéder et utiliser plusieurs variables stockées dans la session pour personnaliser l’expérience utilisateur.
php echo $_SESSION[‘pseudo’]; echo $_SESSION[‘age’];
Détruire une session
Effacer toutes les variables de session et détruire la session pour nettoyer les données.
php session_start(); session_unset(); session_destroy();
Aller plus loin avec les sessions
Techniques avancées pour sécuriser et optimiser la gestion des sessions, telles que la configuration des paramètres, la régénération des IDs, et l’utilisation des sessions avec des bases de données.
php session_set_cookie_params([‘lifetime’ => 86400, ‘secure’ => true]); session_regenerate_id(true);

Formez-vous gratuitement avec Alphorm !

Maîtrisez les compétences clés en IT grâce à nos formations gratuites et accélérez votre carrière dès aujourd'hui. Découvrez des cours variés pour tous les niveaux !

Démarrer gratuitement
illustration processus de paiement en ligne avec étapes claires et convivialité

Conclusion

En résumé, les sessions PHP 8 sont essentielles pour gérer et maintenir les informations utilisateur entre les pages d’un site web, offrant une solution sécurisée par rapport aux cookies. En maîtrisant la création, la gestion, et la destruction des sessions, vous pouvez améliorer l’expérience utilisateur et renforcer la sécurité des données. Que ce soit pour suivre l’état des utilisateurs ou gérer plusieurs variables de session, les sessions PHP 8 sont un outil puissant pour tout développeur cherchant à optimiser ses applications web. Et par la suite nous allons traiter un projet dans la gestion des sessions en PHP 8.

Cet article fait partie du guide Tutoriel Complet pour Apprendre PHP 8 à Travers des Projets Pratiques, partie 24 sur 28.
< Réaliser un Projet de Gestion des Sessions en PHP 8Crypter un mot de passe en PHP 8 >

ÉTIQUETÉ : PHP8
Facebook
Twitter
LinkedIn
Email
WhatsApp
Par L'Équipe Alphorm
Démocratiser la Connaissance Informatique pour Tous !
Suivre :
L'Équipe Alphorm, c'est la démocratisation de la connaissance informatique. Passionnés et dévoués, nous sommes là pour vous guider vers le succès en rendant la technologie accessible à tous. Rejoignez notre aventure d'apprentissage et de partage. Avec nous, le savoir IT devient une ressource inspirante et ouverte à tous dans un monde numérique en constante évolution.

Derniers Articles

  • Techniques pour gérer les fichiers texte en C#
  • Créer et lire un fichier CSV avec C#
  • JSON : Comprendre et Utiliser Efficacement
  • Créer une Base SQLite dans C#
  • Lecture des données SQLite simplifiée
Blog Alphorm
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
En cours de lecture : Gérer les sessions en PHP 8

© Alphorm - Tous droits réservés