2011-05-27 2 views
2

Je développe un site web localement en utilisant XAMPP. Il y a une page d'enregistrement dans laquelle je sauvegarde le mot de passe, après l'avoir crypté avec MD5, dans une base de données MySQL. Le problème est que lorsque j'essaie de me connecter, je suis incapable de le faire. J'ai découvert que le mot de passe était le problème. J'ai vérifié la base de données et comparé le mot de passe MD5-ed avec celui avec lequel je me suis connecté (j'ai juste répercuté le hachage MD5 du mot de passe sur la page pour comparer). J'ai trouvé que celui de la base de données était plus court que celui qui était en écho. Ma conclusion était que MySQL coupait quelques caractères à la fin du hachage. Que devrais-je faire? Je sais que cela a à voir avec certains paramètres sur MySQL mais j'ai besoin d'aide.MySQL coupe les caractères du mot de passe md5

Au moment, je dois utiliser fonction substr sur le hachage dans les processus d'enregistrement et de connexion afin de pouvoir se connecter.

+1

Quel type/taille est la colonne dans la base de données - peut-il adapter le md5? – Tim

+1

Le champ est la bonne taille? Votre requête paramétrée peut-elle couper quelque chose? Montrez-nous votre code! – Bobby

+1

Postez votre définition de table: 'show create table'. – Konerak

Répondre

5

Si la longueur de la colonne est à l'origine du problème, modifier la colonne accepter une longueur plus longue. MD5 sont toujours 32 chiffres hexadécimaux, donc VARCHAR (32) serait une bonne option.

+0

Je dirais que c'est la réponse la plus probable. – anothershrubery

+0

Merci beaucoup. Que je suis bête. J'utilisais en fait varchar (14). J'ai créé la base de données avec l'intention de stocker des chaînes de mot de passe réelles. Je suis un débutant PHP. Merci encore une fois – afaolek

2

Cela dépend de la longueur de la valeur dans la base de données ... vérifiez votre champ dans la base de données et vérifier que son type est atleast quelque chose comme un varchar (32)

Pour résoudre ce problème, vous pouvez utiliser une requête comme celle

ALTER TABLE Example 
MODIFY password varchar(32) 

ou utilisez l'interface phpMyAdmin

+0

Merci. Est-ce que cela a fonctionné? – afaolek

+0

Heureux que ça a marché;) souvenez-vous d'accepter la solution! – VAShhh

Questions connexes