Bonjour,
je suis confronté à un choix ; qui ne me pose pas de problème en soi, mais comme ça me semble être une bonne interrogation, je vous en fait part !
Supposons que je sois en train de développer un système d'authenfiication. Je dois donc coder une fonction de ce type :
int isValidUser(string $login, string $password)
Cette fonction doit retourner plusieurs codes d'erreurs possible :
- Authentification OK
- Le pseudo n'existe pas
- Le mot de passe est incorrect
- La vérification n'a pu avoir lieu
Mon interrogation est liée à la chose suivante :
Ce genre de fonction peut être destinée à être utilisée à différents endroits d'une application, par différents développeurs. Un développeur peu attentif pourrait faire la chose suivante :
if (isValidUser('toto', 'tata')) // au lieu de isValidUser('toto', 'tata') == 42 par exemple
{
// création du cookie, sessions, blabla...
}
else
{
// message en fonction du code d'erreur
}
Seulement, du fait qu'il y ai plusieurs code possibles, si on choisis des entiers (autres que zéro), la fonction sera toujours considérée comme "vraie", ce qui pose des soucis de fonctionnement et sécurité évidents. Comment alors éviter au mieux ces situations ? A mon avis c'est ici une fausse question, étant donné que le développeur est sensé maitriser les valeur de retour, mais bon, je vous fais tout de même part de ma réflexion !