par
Ryle » 23 avr. 2015, 23:36
Je rejoins la remarque de xTG, tu dis que tout marche, mais le code que tu nous présente ne correspond pas à ce que tu décris. A mon avis ton script fonctionne uniquement parce que tu le testes avec un seul utilisateur/enregistrement ou que coup de bol, c'est le premier de la liste
En effet, ton SELECT retourne les champs "cles" de tous tes enregistrement. Si tu as 100 utilisateurs, tu récupères 100 clés si tu ne précise pas pour quel utilisateur particulier tu veux contrôler la clé. Tu devrais n'en retourner qu'une seule, voire faire la comparaison de la clé directement en base (chose que tu fais d'ailleurs bien pour la mise à jour du mot de passe : WHERE cles='$cl' ).
L'instruction $ligne=mysql_fetch_array($req); te permet de lire le premier enregistrement retourné par ta requête (donc sur les 100 clés récupérées en base, tu vas lire la première (en espérant que ce soit la bonne). Ca ne peut théoriquement fonctionner que si ta requête sql ne retourne qu'un seul enregistrement.
Enfin, tu as stocké la valeur de $_POST['cles'] dans ta variable $cl et la valeur récupérée en base ($ligne['cles']) dans ta variable $nb. La comparaison devrait donc simplement être if ($cl == $nb)

Je rejoins la remarque de xTG, tu dis que tout marche, mais le code que tu nous présente ne correspond pas à ce que tu décris. A mon avis ton script fonctionne uniquement parce que tu le testes avec un seul utilisateur/enregistrement ou que coup de bol, c'est le premier de la liste ;)
En effet, ton SELECT retourne les champs "cles" de tous tes enregistrement. Si tu as 100 utilisateurs, tu récupères 100 clés si tu ne précise pas pour quel utilisateur particulier tu veux contrôler la clé. Tu devrais n'en retourner qu'une seule, voire faire la comparaison de la clé directement en base (chose que tu fais d'ailleurs bien pour la mise à jour du mot de passe : WHERE cles='$cl' ).
L'instruction $ligne=mysql_fetch_array($req); te permet de lire le premier enregistrement retourné par ta requête (donc sur les 100 clés récupérées en base, tu vas lire la première (en espérant que ce soit la bonne). Ca ne peut théoriquement fonctionner que si ta requête sql ne retourne qu'un seul enregistrement.
Enfin, tu as stocké la valeur de $_POST['cles'] dans ta variable $cl et la valeur récupérée en base ($ligne['cles']) dans ta variable $nb. La comparaison devrait donc simplement être if ($cl == $nb) :)