Fonction Md5

Eléphanteau du PHP | 37 Messages

15 juin 2009, 16:04

Bonjour tout le monde.
Actuellement en stage, j'ai pour objectif de créer un site pour une école qui fait passer des test en ligne, sous formes de QCM.
donc il faut s'inscrire sur ce site et s'identifier pour accéder au tests.
Donc, mon maître de stage veut, et il a raison, que les MdP dans la BD soit cryptés...donc je pense utiliser la fonction MD5($mdp) pour crypter le mot de passe.

ça fonctionne bien...lors de l'inscription, sur ma page qui récupère les données du formulaire, j'ai ceci...
$pseudo = $_POST['pseudo'];
		$mdp = md5($_POST['mdp']);
		$mdp_bis = md5($_POST['mdp_bis']);
		$nom = $_POST['nom'];
		$prenom = $_POST['prenom'];
		$age = $_POST['age'];
voila, et dans ma BD, le mot de passe, ici je prends l'exemple "test" donne "098f6bcd4621d373cade4e832627b4f6" donc pour être crypté...il est crypté, mais le problème intervient lorsque je souhaite me connecté...ça ne fonctionne pas...comment faire?

Mammouth du PHP | 965 Messages

15 juin 2009, 16:12

Qu'est ce qui ne fonctionne pas ?

Tu as regarder si md5($_POST['password']); était différent de celui en base de donnée ? car le problème pourrait venir d'ailleurs.

Eléphanteau du PHP | 37 Messages

15 juin 2009, 16:49

ce qui ne marche pas c'est lors de la connexion...
dans ma base de données au lieu d'avoir "test" (le mot de passe que j'ai mis pour m'inscrire), j'ai une chaine de caractère...ce qui est normal!!!!

mais quand je veux me connecter, je tape mon login, et le mot de passe, et la erreur...

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

15 juin 2009, 17:00

ce qui ne marche pas c'est lors de la connexion...
dans ma base de données au lieu d'avoir "test" (le mot de passe que j'ai mis pour m'inscrire), j'ai une chaine de caractère...ce qui est normal!!!!

mais quand je veux me connecter, je tape mon login, et le mot de passe, et la erreur...
Bonjour,

Pourrais-tu nous donner le code que tu utilises pour vérifier que le mot de passe soit correct?
Tu calcul bien également un md5() du password rentré par l'utilisateur avant de le comparer à ce qu'il y a en bdd?
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 37 Messages

15 juin 2009, 19:51

ah oui, c'était bien ça!!!
il fallait aussi que j'utilise la fonction au moment de l'envoi des données à la connexion!!!

:oops:

par contre, le problème qui se pose...enfin, je sais pas si ça en est un...
si jamais on oublie le mot de passe...comment on fait pour le retrouver???

ViPHP
ViPHP | 2291 Messages

15 juin 2009, 20:16

si jamais on oublie le mot de passe...comment on fait pour le retrouver???
Il y a plusieurs solutions, mais par exemple a l'enregistrement de l'utilisateur tu enregistre une adresse mail, et si quelqu'un perd sont mot de passe tu crée un formulaire ou il demande un nv mot de passe, il devrat entrée sont login et tu envoie un nv pass a l'adresse mail qu'il a introduit a l'inscription.
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Eléphanteau du PHP | 37 Messages

16 juin 2009, 14:01

ok, mais dans ce que tu dis, est-ce que c'est l'utilisateur qui rentre un nouveau mot de passe ou est-ce que c'est mon script PhP qui doit en générer un automatiquement?

ViPHP
ViPHP | 2291 Messages

16 juin 2009, 14:37

ok, mais dans ce que tu dis, est-ce que c'est l'utilisateur qui rentre un nouveau mot de passe ou est-ce que c'est mon script PhP qui doit en générer un automatiquement?
Moi je dirais que tu fais en sorte de générer un nouveu mot de passe, l'utilisateur pourra le changer dans sont profil
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Avatar du membre
ViPHP
ViPHP | 3008 Messages

16 juin 2009, 14:45

Le principe de dunbar plus détaillé est le suivant :

Lorsque le membre met son mail, la page est renvoyée vers une autre page de traitement. Cette dernière va faire quoi ?
1. créer un nouveau mot de passe aléatoire
2. un UPDATE du champ password de ta table pour remplacer l'ancien mdp par le nouveau
3. envoyer un mail au membre avec le nouveau mdp

Tu dois donc laisser la possibilité au membre de pouvoir ensuite modifier le mdp aléatoire par le sien (toujours avec un UPDATE).

ViPHP
ViPHP | 2291 Messages

16 juin 2009, 16:51

@charabia effectivement.
Sorry j'aurais du détailler l'idée, mais comme excuse j'étais au bureau :oops:
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

ViPHP
ViPHP | 1996 Messages

16 juin 2009, 18:51

@charabia effectivement.
Sorry j'aurais du détailler l'idée, mais comme excuse j'étais au bureau :oops:
Quoi ! Tu bosses pas!

LOL pour revcenir au débat, j'utiliserai plutôt sha1() au lieu de md5() mais question de choix...
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

ViPHP
AB
ViPHP | 5818 Messages

16 juin 2009, 20:32

LOL pour revcenir au débat, j'utiliserai plutôt sha1() au lieu de md5() mais question de choix...
+1
Etant donné que le sha1() a été conçu pour améliorer les performances du md5(), le sha1() est effectivement recommandé si l'on a pas besoin de compatibilité avec des scripts déjà existant.

Mammouth du PHP | 965 Messages

17 juin 2009, 10:02

LOL pour revcenir au débat, j'utiliserai plutôt sha1() au lieu de md5() mais question de choix...
+1
Etant donné que le sha1() a été conçu pour améliorer les performances du md5(), le sha1() est effectivement recommandé si l'on a pas besoin de compatibilité avec des scripts déjà existant.

Allons allons messieurs on ajoute pas de sel à sa clef ?

ViPHP
AB
ViPHP | 5818 Messages

17 juin 2009, 13:31

Allons allons messieurs on ajoute pas de sel à sa clef ?
C'est un autre problème, avec ou sans sel, in fine on doit bien choisir un algo de hashage ou de cryptage :wink:

Pour ceux que ça intéresse, on parle de la technique du grain de sel ici http://www.phpfrance.com/forums/voir_sujet-248069-0.php

Eléphanteau du PHP | 37 Messages

18 juin 2009, 11:02

bonjour à tous messieurs!!!

tout d'abord, merci de votre aide.
alors j'ai utilisé la fonction md5(), mais au vu de ce que vous avez dis, est ce que cela suffit ou pas?
après, dans ma base de données, je vois pas de MdP en clair, donc je pense que ça doit suffire.

mais j'aimerais comprendre la différen,ce entre md5() et sha1(), l'un crypte, l'autre hashe, donc avec la fonction de cryptage, il y à une "réciprocité", donc possibilité de retrouver le MdP, et avec l'autre, le mot de passe est hashé, donc il faut en générer un nouveau...
personnellement, j'ai utilisé la 2nd méthode (sans savoir si c'est la meilleure ou pas...), et j'ai fais un formulaire de renvoi d'un MdP automatique lorsque l'utilisateur à perdu son MdP, MdP généré aléatoirement par un algo PHP!!!

que choisir?