<?php /** * Page de fonctions permettant d'identifier la légitimité d'un utilisateur. */ require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/connexion.php"); /* * Fonction d'authentification des utilisateurs. * Elle récupère le couple identifiant/mot de passe renseigné par le visiteur sur la page d'accueil. * Elle compare ces information avec la ligne correspondante dans la base de donnée (en prenant l'adresse de courriel comme sélecteur). * Elle hache le mot de passe du formulaire et le compare à celui de l'entrée correspondante en base. */ function validationIdentifiants($pdo,$identifiant,$mdp){ try { $req = 'SELECT * FROM postfix_utilisateurs WHERE utilisateur=:identifiant'; $prep = $pdo->prepare($req); $prep->bindValue(':identifiant', $identifiant); $prep->execute(); $result = $prep ->fetchAll(PDO::FETCH_ASSOC); $comptage = count($result); } catch(PDOException $e) { die ("Erreur lors du traitement de la requête : " . $e->getMessage()); } if($comptage == 1){ /** * Les paramètres de la fonction crypt de $mot_de_passe_form sont composés du mot de passe issue du formulaire accueil ainsi que du sel. * Les signes dollars sont des séparateurs. $mot_de_passe_base[1]=6=SHA512. $mot_de_passe_base[2]=au sel du mot de passe contenu dans la base. * Les paramètres de sel sont issus du mot de passe haché contenu dans la base. * L'opération de vérification s'adapte ainsi automatiquement aux algoritmes utilisés par Dovecot lors du hachage du mot de passe utilisateur. */ $mot_de_passe_base=explode('$', $result['0']['mot_de_passe']); $mot_de_passe_form=crypt(trim("$mdp"), "$".$mot_de_passe_base[1]."$".$mot_de_passe_base[2]."$"); if ("$".$mot_de_passe_base[1]."$".$mot_de_passe_base[2]."$".$mot_de_passe_base[3]!=$mot_de_passe_form) { // Si le mot de passe renseigné n'est le bon, le visiteur est redirigé vers la page d'accueil avec un message explicatif header('Location: /pages/visiteurs/echec_auth.php'); die(); } return $result; } else return false; } ?>