Bonjour à tous,
Je suis la tuto de la gestion d'espace membre (refactorisation) et voilà que je me suis bloqué en voulant faire 2 vérifications supplementaires:
1- je veux vérifier si le compte n' a pas encore été activé at afficher le message
2- vérifier si le compte existe, s'il n'existe pas alors il faut afficher le message "Aucun compte associé à ce pseudo".
Le code:
if(isset($_POST['login'])){
if(!empty($_POST) && !empty($_POST['username']) && !empty($_POST['password'])){
$user = $auth->login($db, $_POST['username'], $_POST['password'], isset($_POST['remember']));
$session = Session::getInstance();
if($user){
$session->setFlash('success', 'Vous êtes maintenant connecté !');
App::redirect('account.php');
} else {
$session->setFlash('danger', 'Mauvais identifiant ou mot de passe !');
}
}
}
J'ai essayé un truc comme ça:
$confirm = $db->query('SELECT confirmed_at FROM users WHERE username = ?', [$_POST['username']])->fetch();
if($confirm == NULL){....}
mais sans succès.
Merci de votre aide par avance.
Salut, essaye comme cela :
<?php
$user = $db->query('SELECT * FROM users WHERE username = ? AND confirmed_at IS NOT NULL', [$_POST['username']])->fetch();
if($user == null) {
// Message d'erreur
} elseif(password_verify($_POST['password'], $user->password)) {
// Succès
} else {
// Message d'erreur
}
Merci Xen0risDEV j'ai résolu le probleme en compliquant un peu le code mais ça marche.
En fait pour ("$user->password") il faut créer une nouvelle variable :
$usertest = $db->query('SELECT * FROM users WHERE username = ? AND confirmation_token IS NULL AND confirmed_at IS NOT NULL', [$_POST['username']])->fetch();
$pass = $db->query('SELECT password FROM users WHERE username = ? AND confirmation_token IS NOT NULL AND confirmed_at IS NULL', [$_POST['username']])->fetch();
$user = $auth->login($db, $_POST['username'], $_POST['password'], isset($_POST['remember']));
$session = Session::getInstance();
. . .
if($user) {
// Succes
} elseif ($usertest && !password_verify($_POST['password'], $pass)) {
// Mauvais identifiant ou mot de passe
} else {
// Ce compte n'existe pas
. . .
sinon ça va retourner une erreur. En tt cas merci infiniment pour votre aide.
Salut,
super ^^
Alors en haut à droite du message de Xen0risDEV, il y a un bouton marqué un truc du style "cette réponse m'a aidé".
Il faut que tu clic dessus pour mettre le sujet en "résolu".
Salut SLK, j'ai cherché le bouton "résolu" pas mal de fois, je le trouve pas tjs, et je ne trouve pas "cette réponse m'a aidé" aussi ! il y a seulement "signaler" à coté !