Requête PDO Statement - PHP - Programmation
Marsh Posté le 29-01-2011 à 15:26:16
Ton algo a aucun sens AMHA
Tu n'aurais jamais 2 utilisateurs qui aient le même Pseudo, donc ça sert à rien de les compter.
De plus, ne stocke pas tes mdp en clair dans la base, c'est dangeureux. Stocke les sous forme hashée ( regarde du côté de SHA1 )
Marsh Posté le 29-01-2011 à 15:29:13
Pourtant cet algo est issu de pas mal de tuto trouvés sur le net ... enfin cela ne m'explique pas pourquoi mon code ne tourne pas ...
Marsh Posté le 29-01-2011 à 15:38:04
- Je n'en doute pas. Quand on voit le nombre de mauvais tutos PHP sur le net, je suis presque surpris de voir qu'au moins tu utilises PDO Par exemple faut m'expliquer pourquoi avoir une condition $passwordRequest->fetchColumn() > 0 , alors que fetchColumn retourne FALSE quand aucune colonne n'est trouvée...
- T'es sûr que $_POST['login'] contient bien ce que tu penses?
- T'es sûr que ta base contient bien ce que tu penses ? (t'as vérifié ce qui se passe si t'executes ta requête via PHPMyAdmin par exemple?)
- Et encore une fois (pas à toi, mais je commence à avoir marre de le répéter 15x par semaine ) Apprenez à utiliser un debugger (ou au moins à mette des "echo" et "print_r" là ou il faut pour vérifier ce que contiennent les variables)...
Marsh Posté le 29-01-2011 à 15:48:43
esox_ch a écrit : - $passwordRequest->fetchColumn() > 0 , alors que fetchColumn retourne FALSE quand aucune colonne n'est trouvée... |
Ok je vais essayer de changer ma condition, au départ je voulais mettre un "rowCount" mais regarde ce qui est dit dans ce tuto : http://php.net/manual/fr/pdostatement.rowcount.php
Voilà pourquoi j'ai utilisé le fetchColumn() > 0
esox_ch a écrit : |
[/quotemsg]
Pour ces éléments là c'est oui j'ai les bases et j'aime faire les choses proprement donc je n'aurais pas créer de post si je n'avais pas fait ces test au préalable.
Merci pour ton aide en tout cas
Marsh Posté le 29-01-2011 à 15:56:10
Non mais pourquoi tu ne veux pas faire les choses mieux alors ?
- Tu récupères ton login + mdp du form ($_POST, comme tu l'as fait)
- Tu hashes le mdp pour plus de sécurité ( via sha1() )
- Ensuite tu executes : "select password from users where pseudo = ?"
- Si aucune ligne n'est retournée => ton login est faux,
- Si une ligne est retournée, tu compares "password" à ton sha1($_POST['password')
Et voilà 1 requête et tout va bien
Marsh Posté le 29-01-2011 à 21:57:48
Autant comparé si le login + mdp hashé sont bien ceux en bdd direct non
Comme ça si ça renvoie la ligne alors roule ma poule et sinon c'est qu'il a la tête dans l'cul à cause du lundi matin
Marsh Posté le 30-01-2011 à 00:13:33
Assez d'accord avec toi sur le principe mais au vu du code qu'il a écrit plus haut, je pense qu'il veut faire la distinction utilisateur invalide VS password invalide
Marsh Posté le 30-01-2011 à 10:11:12
En général j'évite de faire ça parce que du coup ça donne une info supplémentaire à la personne qui voudrait tenter de voler le compte d'une personne.
Marsh Posté le 30-01-2011 à 10:34:53
Idem. Mais il y a des sites qui le font..
À part ça, le fait de faire la comparaison du MDP dans la BDD ou dans le PHP, à mon avis c'est assez équivalent niveau performances. J'pense que c'est plus une question de goûts qu'autre chose.
Par contre clairement sa manière de faire n'a aucune logique
Marsh Posté le 30-01-2011 à 19:18:33
Effectivement je n'avais pas pensé à ça !
Marsh Posté le 29-01-2011 à 14:58:10
Bonjour, j'ai un souci pour la création d'une page de Login/MDP dont voici le code :
Le problème se trouve à ce niveau et mon code ne rentre jamais dans le if malgrés un bon login/mot de passe.
J'ai regardé dans la doc de PDO et jai essayé pas mal de solutions sans parvenir à un bon résultat, c'est surement une erreur toute bête mais je ne la voie pas ...
Auriez vous une solution ?
---------------
L’impossible est déjà fait, pour les miracles prévoir un délai.