Bonjour,

j'ai un problème avec le cryptage de mon mot de passe (je sais qu'il existe d'autre méthode plus approprié que md5, mais en occurrence, le problème n'est pas là).
Mon mot de passe crypté en BDD n'est pas celui que je devrais avoir.

Je crée un user que j'insère en base par le biais d'un Manager dont voici le code essentiel.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function __construct(){
    $this->db = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME.';charset=utf8',DB_USER,DB_PWD);
    $this->classname = "User";
}
 
 
//insert an user into db
function insertUser($user){
    $request="INSERT INTO users 
                values(".$user->toString().")";
    $res=$this->db->query($request);
    if(!$res){
        return false;
    }else{
        return true;
    }
}
 
$s_admin=new User(1,FIRST_S_ADMIN_LOGIN,FIRST_S_ADMIN_MDP,'SUPER_ADMIN');
$res=$this->insertUser($s_admin);
Les constantes utilisés ici sont les suivantes:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
	define('FIRST_S_ADMIN_LOGIN','admin_myor');
	define('FIRST_S_ADMIN_MDP','admin_myor');
Il s'agit d'un login/mdp destiné à être changé dès la première connexion au backend à l'installation du site, mais passons ça n'a pas vraiment d'importance ici.

Dans ma classe User, voici la méthode toString et setPassword

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
function setPassword($password){
    $this->user_password=md5($password);
}
 
//return the string value for insertion
function toString(){
    return "'".$this->getId()."',"."'".$this->getLogin()."','".$this->getPassword()."','".$this->getRole()."'";
}
Le problème c'est que le md5 de FIRST_S_ADMIN_MDP vaut b56a77495c197cfc519468e75fd08342 (vérifié avec un var_dump du md5 de la constante)

Or, quand je regarde en BDD, dans ma colonne password, j'ai ceci bc3d54bd2d8e9fa615efea29dcb03495

Je ne comprends donc pas pourquoi puisque setPassword utilisé dans le constructeur de la classe user utilise md5 également.

Merci pour votre aide, j'avoue être un peu perdu.