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 : Réaliser un Projet de Gestion des 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

Réaliser un Projet de Gestion des Sessions en PHP 8

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

Gérer les sessions et l’authentification en PHP peut être complexe, avec des risques de failles de sécurité.

Sans une bonne gestion des sessions et des cookies, des utilisateurs non autorisés peuvent accéder à des zones protégées, compromettant les données.

Cet article vous guide pour sécuriser vos applications PHP avec des formulaires, cookies, et sessions bien gérés. Apprenez à protéger les zones administratives en suivant des pratiques de développement sûres et efficaces.

Table de matière
Introduction au Projet de Sessions en PHP 8Découvrir les Étapes Clés du Projet de Sessions PHPCréer le Formulaire de Connexion en PHP 8Appliquer le CSS pour le Formulaire HTML en PHP 8Vérifier l'État de la Checkbox en PHP 8Gérer la Mémoire du Formulaire avec PHP 8 et CookiesCréer et Configurer la Base de Données pour le Projet PHPUtiliser la Classe PDO en PHP 8 pour la Connexion à la Base de DonnéesValider les Champs du Formulaire en PHP 8Vérifier la Validité du Couple Login/Pass avec PHP 8 et PDOContrôler l'Existence des Cookies en PHP 8Afficher le Login Utilisateur si le Cookie est Présent en PHP 8Organiser les Fichiers pour l'Administration du Projet PHP 8Démarrer et Gérer les Sessions Utilisateur en PHP 8Sécuriser l'Accès à la Zone Admin avec PHP 8Conclusion

Introduction au Projet de Sessions en PHP 8

Pour mettre en pratique la gestion des sessions, vous allez créer un formulaire qui permet aux utilisateurs de saisir leurs informations de connexion, telles que leur identifiant et leur mot de passe. Voici les étapes détaillées :

  • Création du Formulaire :

Vous allez concevoir un formulaire HTML avec deux champs : un pour l’identifiant (login) et un pour le mot de passe (password).

Ce formulaire enverra les données au serveur via une méthode POST pour garantir la confidentialité des informations transmises.

  • Traitement des Informations :

Le serveur recevra les données du formulaire et les traitera pour vérifier l’authenticité des informations.

Si les informations sont valides, une session sera créée pour l’utilisateur, ce qui lui permettra d’accéder à des pages protégées ou personnalisées.

  • Gestion des Sessions :

Après validation, une session sera démarrée sur le serveur et un identifiant de session sera envoyé au navigateur sous forme de cookie.

Ce cookie permettra au serveur de reconnaître l’utilisateur lors des requêtes ultérieures, en maintenant l’état de la session active.
  • Affichage du Résultat :

Selon les résultats de la validation, l’utilisateur sera soit redirigé vers une page de bienvenue, soit invité à réessayer la connexion avec un message d’erreur si les informations sont incorrectes.

Ce processus illustre comment les sessions peuvent être utilisées pour gérer l’authentification des utilisateurs et maintenir une expérience personnalisée et sécurisée sur votre site web.

Découvrir les Étapes Clés du Projet de Sessions PHP

Pour réaliser ce projet, il vous est essentiel d’avoir une base de données. Vous devrez créer un fichier index.php ainsi qu’un dossier ergonomie contenant le fichier style.css. Ensuite, créez un dossier admin qui inclura un fichier index.php. Enfin, à la racine du dossier global, vous créerez un fichier deconnexion.php.

"Schéma simplifié de la structure du projet sessions PHP 8"

Créer le Formulaire de Connexion en PHP 8

Étapes pour Créer un Formulaire HTML en PHP 8

Dans cette partie, vous allez mettre en forme le code HTML du formulaire dans le fichier index.php. Veuillez insérer le code suivant

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

<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Accés</title>
<link rel="stylesheet" href="ergonomie/style.css">
<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-fe095fae-0595-42be-b824-88a7fb218f7c: url('https://blog.alphorm.com/wp-content/plugins/jet-tabs/assets/images/spinner-32.svg');}.rll-youtube-player .play{--wpr-bg-f3361a5e-6c17-4ca3-b6d9-bcba5a549a98: 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-fe095fae-0595-42be-b824-88a7fb218f7c: url('https:\/\/blog.alphorm.com\/wp-content\/plugins\/jet-tabs\/assets\/images\/spinner-32.svg');}","hash":"fe095fae-0595-42be-b824-88a7fb218f7c","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-f3361a5e-6c17-4ca3-b6d9-bcba5a549a98: url('https:\/\/blog.alphorm.com\/wp-content\/plugins\/wp-rocket\/assets\/img\/youtube.png');}","hash":"f3361a5e-6c17-4ca3-b6d9-bcba5a549a98","url":"https:\/\/blog.alphorm.com\/wp-content\/plugins\/wp-rocket\/assets\/img\/youtube.png"}]; const rocket_excluded_pairs = [];</script></head>
<body>
<form action="admin/" method="post">
<section>
<h1>Accés à votre Compte</h1>
<div class="">
<label for="login">login</label>
<input type="text" name="login" id="login" placeholder="votre login">
</div>
<div class="">
<label for="pass">pass</label>
<input type="password" name="pass" id="pass" placeholder="votre pass">
</div>
<input type="checkbox" name="memoire" id="memoire">
<label for="memoire">Se souvenir de moi</label>
<input type="submit" value="Accès">
</section>
</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>
</html>
				
			

Appliquer le CSS pour le Formulaire HTML en PHP 8

Après la création du formulaire, vous allez maintenant appliquer le CSS dans le fichier style.css en ajoutant le code suivant :

  • Code du fichier style.css :
				
					@import url('https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap');
body{
font-family:'Roboto',sans-serif;
height: 100vh;
margin: 0;
background-color: #7f8c8d;
display: flex;
justify-content: center;
align-items: center;
}
section{
width:450px;
}
section h1{
text-align:center;
letter-spacing: 2px;
font-size:29px;
color:#f1c40f;
}
section div {
margin-bottom: 25px;
display: flex;
}
section div label {
padding:10px 15px;
text-transform: capitalize;
font-size: 20px;
background-color: #e67e22;
width: 25%;
border: 1px solid #777;
}
section div input {
width : 100%;
border-radius: 0 5px 5px 0;
border: 1px solid #777;
border-left: 0;
outline: none;
font-size:20px;
padding-left: 12px;
}
::placeholder{
text-transform: capitalize;
color: #ccc;
}
section input[type="submit"]{
width:100%;
margin-top:15px;
border-radius:10px;
padding:15px;
border:none;
outline:none;
cursor:pointer;
letter-spacing: 1px;
font-size: 25px;
color: #333;
background-color: #bdc3c7;
transition: 0.5s;
}
section input[type="submit"]:hover{
background-color:#fff;
}
				
			
  • Résultat affiché :
"Formulaire de connexion stylisé avec CSS dans le projet sessions PHP 8"

Vérifier l'État de la Checkbox en PHP 8

Maintenant, vous allez vérifier si la case à cocher est sélectionnée. Ajoutez ce code dans le fichier index.php situé dans le dossier admin

				
					<?php
if (isset($_POST['acces'])) {
if (isset($_POST['memoire'])) {
echo 'oui';
} else {
echo 'non';
}
}
?>
				
			

Lorsque vous cliquez sur le bouton « valider »

  • Si le checkbox est cocher :

Résultat affiché : oui

  • Sinon

Résultat affiché : non

Gérer la Mémoire du Formulaire avec PHP 8 et Cookies

Avant de mettre en place la mémoire du formulaire, il est important de s’assurer que l’état de la case à cocher est conservé entre les sessions de navigation. Pour ce faire, nous allons utiliser des cookies, ce qui permettra à l’utilisateur de retrouver la case cochée même après avoir fermé le navigateur ou s’être déconnecté.

Dans cette section, vous allez modifier le fichier index.php du dossier racine en ajoutant le code suivant :

				
					<?php
if (isset($_COOKIE['memoire'])) {
?>
<input type="checkbox" checked name="memoire" id="memoire">
<?php
} else {
?>
<input type="checkbox" name="memoire" id="memoire">
<?php
}
?>
				
			

Ensuite, modifiez le fichier index.php du dossier admin avec le code suivant :

				
					if (isset($_POST['acces'])) {
if (isset($_POST['memoire'])) {
setcookie('memoire', 1, time() + 3600 * 24 * 365, '/FR_899');
} else {
setcookie('memoire', 1, time() - 1, '/FR_899');
}
}
?>
				
			

Ces modifications permettent de mettre en place la mémoire du formulaire en utilisant des cookies pour se souvenir de l’état de la case à cocher

Veuillez noter que l’utilisation des cookies pour mémoriser l’état d’une case à cocher est une solution simple mais efficace pour conserver les préférences des utilisateurs. Assurez-vous que l’utilisation des cookies est conforme aux réglementations en matière de protection des données, comme le RGPD, et informez les utilisateurs de la façon dont leurs données sont stockées et utilisées.

Créer et Configurer la Base de Données pour le Projet PHP

Pour assurer le bon fonctionnement de votre application, il est crucial de créer une base de données qui stockera les informations des utilisateurs. Dans cette section, vous allez créer une base de données nommée alphorm et définir une table user avec les colonnes nécessaires pour gérer les identifiants et les mots de passe des utilisateurs. Ce processus constitue la première étape pour mettre en place le stockage et la gestion des données de votre application

"Affichage du résultat de création de la table 'user' dans le projet PHP 8"

Formation PHP 8 : Gestion des Sessions

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

Créer la table user :

Après avoir créé la base de données, sélectionnez-la et créez une table appelée user avec les colonnes userID, login, et pass :

"Affichage de la validation des champs du formulaire de connexion PHP 8"

Insertion d’enregistrement dans table user :

UserID
Login
pass
1
alphorm
123

Utiliser la Classe PDO en PHP 8 pour la Connexion à la Base de Données

Dans cette section, vous allez configurer la connexion à la base de données en utilisant la classe PDO de PHP. Pour ce faire, créez un dossier cnx, puis à l’intérieur de ce dossier, créez un fichier nommé cnx.php et ajoutez le code suivant :

				
					<?php
$dsn = 'mysql:host=localhost;dbname=alphorm;charset=utf8';
$user = 'root';
$pass = '';
try {
$cnx = new PDO($dsn, $user, $pass);
// Définir le mode d'erreur de PDO sur Exception
$cnx->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo 'Une erreur est survenue : ' . $e->getMessage();
}
?>
				
			
En cas d’erreur de connexion, le message affiché sera général pour des raisons de sécurité. Vous pourriez vouloir ajouter une gestion d’erreur plus détaillée en production, mais assurez-vous de ne pas exposer d’informations sensibles sur votre serveur ou votre base de données. Utiliser un journal d’erreurs sécurisé peut être une bonne pratique pour capturer des détails spécifiques sans afficher ces informations aux utilisateurs finaux.

Valider les Champs du Formulaire en PHP 8

Avant d’exécuter le code de validation des champs du formulaire, il est important de vérifier que les données soumises par l’utilisateur sont complètes et correctes. Dans cette section, vous allez ajouter une vérification pour vous assurer que les champs login et pass ne sont pas laissés vides. Si l’un des champs est vide, un message d’erreur sera affiché. Vous pouvez ensuite traiter les informations du formulaire en conséquence. Voici le code à ajouter pour effectuer cette validation

  • Code de fichier index php 
				
					<?php
include('cnx/cnx.php');
$message='';
if(isset($_POST['acces'])){
//Si Login ou Pass est vide
if(empty($_POST['login']) || empty($_POST['pass'])){
$message = '<p class="error">Merci de remplir tous les champs</p>';
}
}
?>
				
			
  • Ajouter au fichier style.css le code suivant
				
					.error{
background-color: #c0392b;
padding: 10px;
text-align: center;
color: #fff;
}
				
			
  • Résultat affiché :
"Affichage de la validation des champs du formulaire de connexion PHP 8"

Vérifier la Validité du Couple Login/Pass avec PHP 8 et PDO

Pour vérifier si le couple login et mot de passe est correct, nous devons interroger la base de données pour trouver une correspondance avec les informations fournies par l’utilisateur. Cette étape est cruciale pour authentifier les utilisateurs et leur accorder l’accès aux sections protégées de l’application. Le code suivant montre comment valider les informations de connexion en utilisant une requête SQL préparée avec PDO. Si les informations sont correctes, l’utilisateur sera redirigé vers la section d’administration ; sinon, un message d’erreur sera affiché.

  • Modifier le script PHP de fichier index.php
				
					<?php
include('cnx/cnx.php');
$message='';
if(isset($_POST['acces'])){
//Si Login ou Pass est vide
if(empty($_POST['login']) || empty($_POST['pass'])){
$message = '<p class="error">Merci de remplir tous les champs</p>';
}else{ // Si Login et Pass sont remplis
$sql = 'SELECT * FROM users WHERE login =:login AND pass =:pass';
$req=$cnx->prepare($sql);
$req->execute(
array(
':login'=>$_POST['login'],
':pass'=>$_POST['pass']
)
);
$count =$req->rowcount();
// Si le couple Login/PAss est trouvé
if($count>0){
header('location:admin/');
}else{ // Si le couple Login/Pass n'est pas trouvé
$message = '<p class="error">Accès refusé</p>';
}
}
}
?>
				
			
  • Résultat affiché :

Pour tester le fonctionnement du script d’authentification, vous pouvez utiliser les informations d’identification suivantes : login alphorm et mot de passe 123. Si ces informations sont correctes et présentes dans la base de données, l’utilisateur sera redirigé vers la page d’administration. Assurez-vous que le script fonctionne correctement en effectuant cette vérification.

"Exemple de saisie des informations d'authentification dans le projet PHP 8"
  • Cas de succès rédige vers page admin sinon il s’affiche erreur
Erreur d'authentification incorrecte lors de la connexion.

Contrôler l'Existence des Cookies en PHP 8

Dans cette section, vous allez vérifier si un cookie spécifique est présent pour gérer la persistance de certaines préférences de l’utilisateur, comme l’état de la case à cocher de « se souvenir de moi ». Le contrôle de la présence du cookie vous permet de restaurer les paramètres de l’utilisateur lors des visites ultérieures.

Voici comment vous pouvez vérifier la présence d’un cookie dans votre script PHP :

  • Vérification de la Présence du Cookie :

Ajoutez le code suivant au fichier index.php pour vérifier si le cookie mémoire est défini.

				
					if (isset($_POST['acces'])) {
if (isset($_POST['memoire'])) {
setcookie('memoire', 1, time() + 3600 * 24 * 365, '/FR_899');
} else {
setcookie('memoire', 1, time() - 1, '/FR_899');
}
}
?>
				
			
  • Utilisation du Cookie :

Si le cookie est présent, vous pouvez utiliser cette information pour personnaliser l’expérience utilisateur. Par exemple, vous pourriez pré-cocher une case à cocher ou restaurer d’autres préférences.

PHP 8

Maîtrise Complète de PHP 8 : De l'Initiation à l'Expertise en Architecture MVC

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

Afficher le Login Utilisateur si le Cookie est Présent en PHP 8

Dans cette section, vous allez vérifier la présence d’un cookie et, si celui-ci existe, afficher le login de l’utilisateur. Pour cela, vous devez mettre à jour votre script PHP en y ajoutant le code suivant :

				
					<?php
include('cnx/cnx.php');
$message='';
if(isset($_POST['acces'])){
//Si Login ou Pass est vide
if(empty($_POST['login']) || empty($_POST['pass'])){
$message = '<p class="error">Merci de remplir tous les champs</p>';
}else{ // Si Login et Pass sont remplis
$sql = 'SELECT * FROM users WHERE login =:login AND pass =:pass';
$req=$cnx->prepare($sql);
$req->execute(
array(
':login'=>$_POST['login'],
':pass'=>$_POST['pass']
)
);
$count =$req->rowcount();
// Si le couple Login/PAss est trouvé
if($count>0){
$data = $req->fetch(PDO::FETCH_ASSOC);
//GENERATION DU COOKIE
if(isset($_POST['memoire'])){
setcookie('memoire',$data['login'],time()+3600*24*365,'/FR_899');
}else{
setcookie('memoire',$data['login'],time()-1,'/FR_899');
}
header('location:admin/');
}else{ // Si le couple Login/Pass n'est pas trouvé
$message = '<p class="error">Accès refusé</p>';
}
}
}
?>
				
			
  • Après en va mettre ajour a input login
				
					<input type="text" name="login" id="login" placeholder="votre login" value="<?php if(isset($_COOKIE['memoire'])){ echo $_COOKIE['memoire'];}?>">
				
			
  • Résultat affiché
"Affichage du login utilisateur si le cookie de session existe dans le projet PHP 8"

Organiser les Fichiers pour l'Administration du Projet PHP 8

Dans cette section, vous allez structurer et créer les fichiers nécessaires pour l’administration de votre application. Cela inclut la mise en place des pages d’administration, la gestion des accès, et la sécurisation de ces fichiers pour s’assurer que seuls les utilisateurs autorisés peuvent y accéder.

en va créer un autre fichier appelé page.php dans le dossier admin puis en mettre le code suivante

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

<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>PAge</title>
<link rel="stylesheet" href="../ergonomie/style.css">
<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-fe095fae-0595-42be-b824-88a7fb218f7c: url('https://blog.alphorm.com/wp-content/plugins/jet-tabs/assets/images/spinner-32.svg');}.rll-youtube-player .play{--wpr-bg-f3361a5e-6c17-4ca3-b6d9-bcba5a549a98: 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-fe095fae-0595-42be-b824-88a7fb218f7c: url('https:\/\/blog.alphorm.com\/wp-content\/plugins\/jet-tabs\/assets\/images\/spinner-32.svg');}","hash":"fe095fae-0595-42be-b824-88a7fb218f7c","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-f3361a5e-6c17-4ca3-b6d9-bcba5a549a98: url('https:\/\/blog.alphorm.com\/wp-content\/plugins\/wp-rocket\/assets\/img\/youtube.png');}","hash":"f3361a5e-6c17-4ca3-b6d9-bcba5a549a98","url":"https:\/\/blog.alphorm.com\/wp-content\/plugins\/wp-rocket\/assets\/img\/youtube.png"}]; const rocket_excluded_pairs = [];</script></head>
<body>
<section>
<h1>Connecté: LOGIN</h1>
< h2>page< /h2>
<ul>
<li><a href="index.php" data-wpel-link="internal" target="_self" rel="follow noopener noreferrer">Accueil</a></li>
<li><a href="../deconnexion.php" data-wpel-link="internal" target="_self" rel="follow noopener noreferrer">Se déconnecter</a></li>
</ul>
</section>
</body>
</html>
				
			
  • Fichier index .php
				
					<!DOCTYPE html>
<html lang="en">
<head>

<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Admin</title>
<link rel="stylesheet" href="../ergonomie/style.css">
<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-fe095fae-0595-42be-b824-88a7fb218f7c: url('https://blog.alphorm.com/wp-content/plugins/jet-tabs/assets/images/spinner-32.svg');}.rll-youtube-player .play{--wpr-bg-f3361a5e-6c17-4ca3-b6d9-bcba5a549a98: 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-fe095fae-0595-42be-b824-88a7fb218f7c: url('https:\/\/blog.alphorm.com\/wp-content\/plugins\/jet-tabs\/assets\/images\/spinner-32.svg');}","hash":"fe095fae-0595-42be-b824-88a7fb218f7c","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-f3361a5e-6c17-4ca3-b6d9-bcba5a549a98: url('https:\/\/blog.alphorm.com\/wp-content\/plugins\/wp-rocket\/assets\/img\/youtube.png');}","hash":"f3361a5e-6c17-4ca3-b6d9-bcba5a549a98","url":"https:\/\/blog.alphorm.com\/wp-content\/plugins\/wp-rocket\/assets\/img\/youtube.png"}]; const rocket_excluded_pairs = [];</script></head>
<body>
<section>
<h1>Bienvenue LOGIN</h1>
< h2>admin< /h2>
<ul>
<li><a href="page.php" data-wpel-link="internal" target="_self" rel="follow noopener noreferrer">Page</a></li>
<li><a href="../deconnexion.php" data-wpel-link="internal" target="_self" rel="follow noopener noreferrer">Se déconnecter</a></li>
</ul>
</section>
</body>
</html>
				
			
  • Fichier deconnexion.php
				
					<!DOCTYPE html>
<html lang="en">
<head>

<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Admin</title>
<link rel="stylesheet" href="../ergonomie/style.css">
<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-fe095fae-0595-42be-b824-88a7fb218f7c: url('https://blog.alphorm.com/wp-content/plugins/jet-tabs/assets/images/spinner-32.svg');}.rll-youtube-player .play{--wpr-bg-f3361a5e-6c17-4ca3-b6d9-bcba5a549a98: 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-fe095fae-0595-42be-b824-88a7fb218f7c: url('https:\/\/blog.alphorm.com\/wp-content\/plugins\/jet-tabs\/assets\/images\/spinner-32.svg');}","hash":"fe095fae-0595-42be-b824-88a7fb218f7c","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-f3361a5e-6c17-4ca3-b6d9-bcba5a549a98: url('https:\/\/blog.alphorm.com\/wp-content\/plugins\/wp-rocket\/assets\/img\/youtube.png');}","hash":"f3361a5e-6c17-4ca3-b6d9-bcba5a549a98","url":"https:\/\/blog.alphorm.com\/wp-content\/plugins\/wp-rocket\/assets\/img\/youtube.png"}]; const rocket_excluded_pairs = [];</script></head>
<body>
<section>
<h1>Bienvenue LOGIN</h1>
< h2>admin< /h2>
<ul>
<li><a href="page.php" data-wpel-link="internal" target="_self" rel="follow noopener noreferrer">Page</a></li>
<li><a href="../deconnexion.php" data-wpel-link="internal" target="_self" rel="follow noopener noreferrer">Se déconnecter</a></li>
</ul>
</section>
</body></html>
				
			
  • Résultat affiché

Lorsqu’un utilisateur est authentifié, vous allez configurer la page d’accueil de l’administration (admin/index.php) pour afficher les informations de l’utilisateur. Ensuite, l’utilisateur aura la possibilité de continuer vers une autre page (page.php) ou de se déconnecter. En se déconnectant, les cookies seront supprimés, et l’utilisateur sera redirigé vers la page de connexion.

alphorm

"Affichage des fichiers mis en place pour l'administration du projet sessions PHP 8"

Démarrer et Gérer les Sessions Utilisateur en PHP 8

Dans cette section, vous allez apprendre à démarrer et gérer une session utilisateur, une étape essentielle pour maintenir l’authentification et l’état de connexion tout au long de la navigation sur votre site.

Démarrer une session vous permet de conserver des informations utilisateur entre les différentes pages de votre application, garantissant ainsi une expérience fluide et sécurisée. Vous verrez comment initialiser une session dès la connexion de l’utilisateur et comment poursuivre cette session pour accéder aux pages protégées de l’administration.

Vous allez définir la session en premier lieu. Pour ce faire, commencez par démarrer la session en ajoutant ce code en haut du fichier index.php :

session_start();

Après cela, vous allez modifier le script PHP avant la ligne header(‘location:admin/’); pour créer et définir la variable de session en ajoutant la ligne suivante :

$_SESSION['login']=$_POST['login'];

Dans fichier page.php et index.php en va afficher la session en ajoutant le code suivant

				
					<?php
session_start();
$login = $_SESSION['login'];
?>
				
			

Pour afficher en va ajouter cette ligne

				
					<h1>Connecté: <?=$login;?></h1>
				
			
  • Résultat affiché
"Affichage du processus de démarrage et poursuite de la session utilisateur en PHP 8"

Sécuriser l'Accès à la Zone Admin avec PHP 8

Pour sécuriser la zone d’administration, vous devez vous assurer que seules les personnes authentifiées peuvent y accéder. Ajoutez une vérification de session au début de chaque page d’administration. Si la session utilisateur n’est pas active, redirigez l’utilisateur vers la page de connexion. Par exemple, ajoutez ce code en haut de chaque fichier d’administration :

Dans le fichier index.php et page.php de admin en mettre a jour a le code de script

				
					<?php
session_start();
if(isset($_SESSION['login'])){
$login = $_SESSION['login'];
}else{
header('location:../index.php');
}
?>
				
			

Pour détruire la session en ajoute ce code pour fichier deconnexion.php

				
					<?php
session_start();
session_destroy();
?>
				
			

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 conclusion, réaliser un projet de gestion des sessions PHP 8 est une étape essentielle pour maîtriser les concepts de sécurité et de gestion des utilisateurs en développement web. Grâce à ce projet, vous avez appris à créer des formulaires sécurisés, à gérer les cookies pour la persistance des données, et à sécuriser l’accès à l’administration avec PHP 8. Ces compétences sont cruciales pour tout développeur souhaitant construire des applications web robustes et sécurisées. N’hésitez pas à approfondir ces techniques et à les adapter à vos besoins spécifiques pour améliorer encore la sécurité et la performance de vos projets.

Cet article fait partie du guide Tutoriel Complet pour Apprendre PHP 8 à Travers des Projets Pratiques, partie 23 sur 28.
< Gérer et Sécuriser les Cookies de PHP 8Gérer les sessions 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 : Réaliser un Projet de Gestion des Sessions en PHP 8

© Alphorm - Tous droits réservés