Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème de modification de login et password

un formulaire PhP avec base PostgreSQL

Sujet résolu
    27 août 2019 à 13:25:25

    Bonjour, voilà plusieurs jours que je suis bloqué et je n'arrive pas à m'en dépêtrer...

    Je vais essayer d'être le plus clair possible.

    Je dois créer un formulaire pour modifier directement les usename et passwd de la table pg_shadow.
    Qui ne sont modifiables qu'avec les requêtes suivantes :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ALTER USER ancienLogin RENAME TO nouveauLogin;
    ALTER USER nouveauLogin WITH ENCRYPTED PASSWORD nouveauMotDePasse;

    Cela étant dit, j'ai donc crée Utilisateur.class.php avec :(private $_idUtilisateurprivate $_loginprivate $_motDePasse;),
    Puis dans UtilisateurManager.class.php j'ai crée une : public static function update(Utilisateur $perso).
    Cette fonction s'execute évidemment lorsque l'on clique sur "Modifier" une fois les nouveaux identifiants choisis.

    Voici ma fonction Update :

    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
     public static function update(Utilisateur $perso)
     {
            $db = DbConnect::getDb();
     
            $q0=$db->prepare('SELECT usename as login FROM pg_shadow u WHERE usesysid = :idUtilisateur;');
            $q0->bindValue ( ':idUtilisateur', $perso->getIdUtilisateur());
            $res0= $q0->execute(); //Requête pour trouver l'ancien usename à modifier grâce à l'id.
            $ancien = $q0->fetch(PDO::FETCH_ASSOC);
     
            $q1 = $db->prepare("ALTER USER :precedent RENAME TO :login;"); //Requete qui sert à changer le login
            $q2 = $db->prepare("ALTER USER :login WITH ENCRYPTED PASSWORD :motDePasse;"); //Requete qui sert à changer le mdp
     
           	$q1->bindValue ( ':precedent', $ancien['login']);
           	$q1->bindValue ( ':login', $perso->getLogin());
            $q2->bindValue ( ':login', $perso->getLogin());
            $q2->bindValue ( ':motDePasse', $perso->getMotDePasse());
     
            $res1 = $q1->execute();
            $res2 = $q2->execute();
    }
    Et évidemment, rien ne marche...
    Pourriez-vous m'aider ?

    Cordialement
    • Partager sur Facebook
    • Partager sur Twitter
      29 août 2019 à 9:58:40

      Bon,

      J'ai enfin trouvé.

      Voici mes modifications :

      public static function update(User $newPerson)
          {
              $db = DbConnect::getDb();
      
              $idUser=$newPerson->getIdUser();
              $oldPerson=self::getById($idUser);
      
              $oldLogin= pg_escape_string($oldPerson->getLogin());
              $newLogin= pg_escape_string($newPerson->getLogin());
      
              $newPassword= pg_escape_string($newPerson->getPassword());
      
              $sql = "ALTER USER {$oldLogin} RENAME TO {$newLogin}; ALTER USER {$newLogin} WITH ENCRYPTED PASSWORD '{$newPassword}';";
      
              pg_query($sql);
      
          }



      -
      Edité par HugoKrysztof 29 août 2019 à 9:59:48

      • Partager sur Facebook
      • Partager sur Twitter

      Problème de modification de login et password

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown