Skip to content
Extraits de code Groupes Projets
Valider 0b81261a rédigé par vbochet's avatar vbochet
Parcourir les fichiers

Modification du modèle et du contrôleur pour la connexion. Prise en compte de...

Modification du modèle et du contrôleur pour la connexion. Prise en compte de la vérification du password hashé. Migration des comparaisons du modèle vers le contrôleur.
parent 90b3a3af
Aucune branche associée trouvée
Aucune étiquette associée trouvée
2 requêtes de fusion!21Merge de Dev dans Master,!1Merge de dev-nestor sur dev
......@@ -10,7 +10,7 @@ class ConnexionController extends Controller { // classe de contrôleur pour la
}
public function verify() { // vérifie que les identifiants sont valides par rapport à la BDD
// méthode basique avec un stockage de mdp en clair, ce qu'on ne fera bien sûr pas !
// méthode avec un stockage de mdp hashé selon la fonction password_hash()
if(!isset($_POST['login']) || !isset($_POST['password'])) { // si l'une des données manque, erreur
//appeler une fonction d'erreur
echo "<h1>Erreur : variables absentes</h1>";
......@@ -18,17 +18,25 @@ class ConnexionController extends Controller { // classe de contrôleur pour la
}
$pseudo = $_POST['login'];
$password = $_POST['password'];
$userpassword = $_POST['password']; //le mot de passe utilisateur
$bddpassword = Connexion::getPassword($pseudo); // le hash du mot de passe stocké en BDD
$result = Connexion::check($pseudo, $password); // vérifie si existe en base et a bon mdp
if($result == 1) { // connexion valide
header('Location:valid'); // on redirige vers la page OK
}
else {
if($bddpassword == null) { // l'utilisateur n'existe pas => code d'erreur 0
session_start(); // on démarre une session pour avoir accès aux variables superglobales de session
$_SESSION["connexionErrCode"] = $result; // on stocke le code d'erreur
$_SESSION["connexionErrCode"] = 0; // on stocke le code d'erreur
header('Location:../connexion'); // on redirige vers la page de formulaire (il faut faire un retour dans le dossier parent pour que ça fonctionne, ne me demandez pas pourquoi !)
}
else { // l'utilisateur existe
if(password_verify($userpassword, $bddpassword)) { // la connexion a réussi
header('Location:valid'); // on redirige vers la page OK
}
else { // sinon, c'est que le mot de passe est faux
session_start(); // on démarre une session pour avoir accès aux variables superglobales de session
$_SESSION["connexionErrCode"] = 2; // on stocke le code d'erreur
header('Location:../connexion'); // on redirige vers la page de formulaire (il faut faire un retour dans le dossier parent pour que ça fonctionne, ne me demandez pas pourquoi !)
}
}
}
}
......@@ -2,25 +2,18 @@
class Connexion extends Model { // classe de modèle pour la connexion au site
public static function check($pseudo, $pass) { // méthode permettant de vérifier la validité d'identifiants d'un membre dans la BDD
// renvoie 1 si le membre existe et que son mot de passe correspond
// renvoie 2 si le mot de passe est faux
// renvoie 0 si le membre n'existe pas
public static function getPassword($pseudo) { // méthode permettant de récupérer le password hashé d'un membre dans la BDD
// renvoie le mot de passe si le membre existe
// renvoie null si le membre n'existe pas
$db = Database::getInstance(); // on récupère la connexion à la BDD
$sql = "SELECT password FROM profils WHERE pseudo = :pseudo";
$sql = "SELECT password FROM R_joueur WHERE pseudo = :pseudo";
$req = $db->prepare($sql); // on prépare la requête
//$req->setFetchMode(PDO::FETCH_CLASS, "Profil"); // règle le type dans lequel on doit mettre les données (PDO va chercher les attributs de la classe de même nom que ses colonnes de BDD et mettre dedans les valeurs correspondantes)
$req->execute(array(":pseudo" => $pseudo)); // on remplace les variables dans la requête
$return = 0; //valeur par défaut
$return = null; //valeur par défaut du retour
if($result = $req->fetch()) { // on récupère l'enregistrement, s'il existe
if($result['password'] == $pass) { // si les mdp correspondent, alors c'est bon
$return = 1;
}
else { // sinon, il y a ppb dans les mdp
$return = 2;
}
$return = $result['password']; // on récupère le mdp hashé pour le retourner
}
return $return;
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter