Vérifier si le compte n'a pas encore été activé

Par Alan723, il y a 9 ans


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.

5 réponses

Alan723, il y a 9 ans

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é !

Alan723, il y a 9 ans

"Il a répondu à ma question" bon voilà, merci SLK :))

Xen0risDEV, il y a 9 ans

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 }
Alan723, il y a 9 ans

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.

SLK, il y a 9 ans

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".