[MVC] Changement de mot de passe

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [MVC] Changement de mot de passe

Re: [MVC] Changement de mot de passe

par dianophe » 03 déc. 2016, 19:46

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."'");

[MVC] Changement de mot de passe

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

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 !