Digital Dynamics
L'informatique innovante et abordable

Dernière mise à jour : sam. 31 oct. 2015, 10:54

L'emploi de la fonction die(); ou exit(); en PHP

Il existe dans le langage PHP des fonctions très simples et très utiles mais dont l'importance est parfois méconnue.

Nous allons nous intéresser à la fonction die().

La fonction die() est un alias de exit()

La fonction die([optional_string_message]) n'est autre qu'un alias de la fonction exit([optional_string_message]). En clair les deux fonctions sont identiques dans leur fonctionnement. On peut donc utiliser l'une ou l'autre indifféremment, suivant l'humeur.

À quoi sert la fonction die() ?

La fonction die([optional_string_message]) est une fonction très simple, voire simplissime. Elle a pour but de stopper l'exécution de votre script et d'afficher le message que vous aurez éventuellement spécifié.

Son emploi est très courant pour gérer les erreurs de connexion aux bases de données ou les erreurs de chemin lors des inclusions.

Résolution d'une erreur courante de programmation PHP

Lors de l'authentification des utilisateurs d'un site, une erreur de programmation courante est la suivante:

<?php
/************************************************
Vérification de l'identité d'un utilisateur
*************************************************/
if(isset($_POST['login']) && $_POST['login'] == 'identifiant' && isset($_POST['password']) && $_POST['password'] == 'mot_de_passe_secret'){
$utilisateur_valide = $_POST['login'];
}
/************************************************
Renvoi des inconnus vers la page de login
*************************************************/
if(!$utilisateur_valide){
header('Location: login.html');
}
/***********************************************
Accès à la partie privée
************************************************/
include('header.php');
include('fonctions_privees.php');
...
?>

Dans ce script, on s'assure de l'identité de l'utilisateur puis on redirige les inconnus vers la page de login avant d'exécuter les diverses opérations réservées aux utilisateurs valides.

Le problème est que la fonction header() va bien rediriger les inconnus vers la page de login mais le reste du script continuera à s'exécuter.

La solution pour pallier à ce problème sera l'emploi de la fonction die(); ou exit(); de la façon suivante:

<?php
/***********************************************************
Vérification de l'identité d'un utilisateur
************************************************************/
if(isset($_POST['login']) && $_POST['login'] == 'identifiant' && isset($_POST['password']) && $_POST['password'] == 'mot_de_passe_secret'){
$utilisateur_valide = $_POST['login'];
}
/***********************************************************
Renvoi des inconnus vers la page de login et arrêt du script
************************************************************/
if(!$utilisateur_valide){
header('Location: login.html');
die(); // empêche l'exécution de la suite du script pour les utilisateurs non-reconnus
}
/**********************************************************
Accès à la partie privée
***********************************************************/
include('header.php');
include('fonctions_privees.php');
...
?>

 

L'informatique facile et expliquée