Page 1 sur 1

[MVC] Changement de mot de passe

Posté : 03 déc. 2016, 15:45
par dianophe
Bonjour,

j'ai un projet à réaliser pour mon BTS SIO pour la fin de l'année, j'ai fais un site avec le design pattern MVC, mais mon système de changement de mot de passe n'est pas fonctionnel, voici les différentes parties du code.

La fonction changePass du controleur "personnel" :
function changePass(){
        $this->loadModel('Personnels');
        if(isset($_POST['new_password']) && isset($_POST['new_password_confirm']) && isset($_COOKIE['id_con']) && isset($_COOKIE['id_user'])){
            $new_password = $_POST['new_password'];
            $new_password_confirm = $_POST['new_password_confirm'];
            if($new_password == $new_password_confirm){
                $username['username'] = $this->Personnels->updatePersonnelPassword($_COOKIE['id_con'], $new_password);
                $this->set($username);
                var_dump($_COOKIE['id_con']);
                unset($_COOKIE['id_con']);
                unset($_COOKIE['id_user']);
                setcookie('id_con', null, -1, '/');
                setcookie('id_user', null, -1, '/');
                var_dump($new_password);
                var_dump($new_password_confirm);
                var_dump($username['username']);
            } else {
                header("Location: connect");
            }
        } else {
            header("Location: connect");
        }
    }
La méthode pour le changement de mot de passe dans la BDD :
function updatePersonnelPassword($id_con, $pass) {
            include(ROOT.'core/modele/dbconnect.php');
            $result = $dbh->query('SELECT * from salarie WHERE id_con="'.$id_con.'"');
            $row = $result->fetch();
            $login_user = $row[8];
            $id_con = $row[10];
            $new_id_con = md5($pass + $login_user);
            $dbh->exec("UPDATE salarie SET password=md5('"+ $pass +"'), id_con='" + $new_id_con + "' WHERE id_con='".$id_con."'");
            
            return $login_user; 
        }
Le controleur principal :
<?php
class Controller{

    var $vars = array();
    var $layout = 'default';

    function __construct(){
        if(isset($_POST)){
            $this->data = $_POST;
        }
        if(isset($this->models)){
            foreach($this->models as $v){
                $this->loadModel($v); 
            }
        }
    }

    function set($d){
        $this->vars = array_merge($this->vars,$d);
    }

    function render($filename){
        extract($this->vars);
        ob_start(); 
        require(ROOT.'views/'.get_class($this).'/'.$filename.'.php');
        $content_for_layout = ob_get_clean();
        if($this->layout==false){
            echo $content_for_layout;
        }else{
            require(ROOT.'views/layout/'.$this->layout.'.php');
        }
    }

    function loadModel($name){
        require_once(ROOT.'models/'.strtolower($name).'.php');
        $this->$name = new $name(); 
    }
}
?>
Le rendu de la page :

Image

Le site web dont il est question :

http://dianophe.alwaysdata.net/personnel/connect

Username : b.desforges

Mdp : bdesforges123

Lors ce que je me connecte, le mot de passe n'a pas changé, l'ancien est toujours actif...

Je viens vers vous car je ne vois pas où pourrait être le problème. Merci par avance !

Re: [MVC] Changement de mot de passe

Posté : 03 déc. 2016, 19:46
par dianophe
Ok j'ai vu le problème, flagrant !

Problème de concaténation tout simplement, à force d'utiliser le C# en cours, je mets des + partout ^^
$dbh->exec("UPDATE salarie SET password=md5('"+ $pass +"'), id_con='" + $new_id_con + "' WHERE id_con='".$id_con."'");
Correction :
$dbh->exec("UPDATE salarie SET password=md5('". $new_password ."'), id_con='" . $new_id_con . "' WHERE id_con='".$id_con."'");