Salut tout le monde,

aujourd'hui j'ai un problème avec l'un de mes codes:
Voici le code:

            } else {
                $check = $this->db->prepare('SELECT COUNT(email) FROM comptes WHERE email = ? AND pwd = ?', [$username, $password]);

                if($check['0'] == 0) { // La verification qui devrait être à 0 si le mot de passe est faux ou l'email
                    return ["reponse" => "nok", "msg" => $lang['badinfo']]; // Reponse
                } else {
                    return $this->loginin($username, $password); // Dans le cas où c'est le bon donc $check = 1, cela envoie ailleur.
                }
            }

Donc mon problème est le suivant:

  • Quoique je fasse, c'est toujours le else qui le remporte, je ne sais pas pourquoi, je pense que ça vient du $check['0'] / $check[0].. Alors si quelqu'un serait m'aider, ce serait sympa!

Merci pour la futur aide en tous cas.

12 réponses


bonjour,
qu'affiche un var_dump($check) ?

Alex
Auteur

Cela affiche la version 1 ou 0 si c'est bon, c'est juste lorsque la vérification se fait que ça foire...

array(1) {
  [0]=>
  object(stdClass)#6 (1) {
    ["COUNT(email)"]=>
    string(1) "0"
  }
}

oui puisque c'est pas un boolean mais un objet

 } else {
                $check = $this->db->prepare('SELECT COUNT(email) as nbr FROM comptes WHERE email = ? AND pwd = ?', [$username, $password]);
                $check = $check->fetch(PDO::FETCH_OBJ); // A vérifier
                if($check->nbr == 0) { // La verification qui devrait être à 0 si le mot de passe est faux ou l'email
                    return ["reponse" => "nok", "msg" => $lang['badinfo']]; // Reponse
                } else {
                    return $this->loginin($username, $password); // Dans le cas où c'est le bon donc $check = 1, cela envoie ailleur.
                }
            }
Alex
Auteur

Du coup maintenant, j'ai cette érreur:
Parse error: syntax error, unexpected '0' (T_LNUMBER), expecting identifier (T_STRING) or variable (T_VARIABLE) or '{' or '$' in *** on line 29
[ if($check->0 == 0) { ]

oui, on check pas 0 mais nbr comme j'ai marqué

Alex
Auteur

Je fais $check->nbr... Mais ça ne marche toujours pas ? C'est vraiment nbr qu'il faut marquer?

oui,
que vaut $check avant le if ?

Alex
Auteur

Bah il vaut 0 mais ça fait comme s'il valait 1....
Au passage j'ai echo $check->nbr, et ça ne vaut rien...

Alex
Auteur

Le problème est toujours percistant malgré l'essai de plusieurs méthode!

mysql_connect($host,$dataname,$datamdp);
mysql_select_db($database);

$login = mysql_query("SELECT * FROM users WHERE pseudo='$pseudo' AND email='$email' AND mdp='$mdp'");
$rowsLOGIN = mysql_num_rows($login);

if($rowsLOGIN == 1)
{

}

C'est un morceau de code qui est plus simple mais tu as le princecipe mainteant

Alex
Auteur

C'est une solution de facilité qui ne m'intéresse pas, puisque ça fait faire un SELECT des données utilisateurs qui n'est pas mon but.... Merci tout de même de la réponse.