Gestion de droits dynamiques dans une application de gestion des entrées et sort

Maurel - Modifié le 21 déc. 2018 à 19:07
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 - 21 déc. 2018 à 19:15
Bonjour, je n'arrive pas octroyer les aux utilisateurs(role,module....) de mon application de gestion des entrées et sorties des équipements en php et mysql. voici comment est structuré mon code:

<?php
/*


* Classe BDD pour se connecter à la BDD

* permet l'accès à la BDD à partir des fonctions des classes enfants

*/

class BDD {
 var $localhost = "", $user = "", $password = "";

//__Effectue la connexion à la BDD
//__Instancie et renvoie l'objet PDO associé

    function getBdd() {
  //__variable locale lié à la classe
  $localhost = 'mysql:host=localhost;dbname=gespa;charset=utf8';
  $user = 'root';
  $password = '';
  
     $bdd = new PDO($localhost, $user, $password);
     $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  
        return $bdd;
    }
}

$BDD = new BDD();
?>



gestion de la connexion de l'utlisateur avec la bdd
<?php
/*


* Modele récupérer les informations de la BDD "gespa"

*/
class Data extends BDD {
//__Récupère l'ensemble des utilisateurs

        private $id;
        private $pseudo;
        private $motDePasse;
        private $pseudoUtilisateur;
        private $loginsession;
        private $privilegeses;
        
        
        
       
       public function connexion($pseudoUtilisateur, $motDePasse){                  
            /*


* Utilisation :

* un utilisateur veut se connecter, on appelle la fonction en indiquant le nom de l'utilisateur et le mot ed passe indiqué

* la fonction vérifie si cela correspond bien, si oui on renvoie true, si non on renvoie false

* 

*/
            //Variables utilisées :             
            $requete;
            $ligne;
            $retour = false;
            
            //On se connecte à la base de données
            $pdo = parent::getBdd();
            //On prépare la requête (entre autre contre les injections avec pdo->prepare)
            $requete = $pdo->prepare("SELECT login, mot_de_passe,privilege FROM compte_utilisateur WHERE login='".$pseudoUtilisateur."' AND mot_de_passe='".$motDePasse."'");
            //On effectue la requete
            $requete->execute();
            $ligne = $requete->fetch(PDO::FETCH_ASSOC);
            //print_r ($ligne);
            //Si il y a un résultat c'est que l'utilisateur c'est bien logé
            if($ligne == true)
            {    
                
                $_SESSION['privilege']=$ligne['privilege'];//On créer une variable session qui à pour valeur le privilège de l'utilisateur logué
    $_SESSION['droit']=1;//On créer une variable session qui à pour valeur le privilège de l'utilisateur logué
                $_SESSION['login']=$ligne['login']; //On créer une variable session qui à pour valeur le pseudo de l'utilisateur logué
                $_SESSION['mot_de_passe']=$ligne['mot_de_passe']; //On créer une variable session qui à pour valeur le mot de passe de l'utilisateur logué
                $retour = true; //On retourne true pour dire que tout c'est bien passé
                echo '<meta http-equiv="refresh" content="0;URL=Administration.php">';
            }
            //Sinon c'est que le mot de passe ou le nom d'utilisateur n'est pas bon
            else
            {
                $retour = false;//Si c'est pas bon on renvoie false
                echo'<body onLoad="alert(\'Ce utilisateur est non reconu dans le systeme...\')">';
                echo '<meta http-equiv="refresh" content="0;URL=index.php">';
            }
            $pdo = null;
            return $retour;
            echo'<meta http-equiv="refresh" content="0;URL=404.php">';
            echo '<meta http-equiv="refresh" content="0;URL=index.php">';
        } 
        
         // fonction permettant de supprimer une session
       function finSession() {
        //  supression de toutes les variables de session
        $_SESSION   = array(); 
        //  destruction de la session
        session_destroy();
        echo '<meta http-equiv="refresh" content="0;URL=index.php">';
       }
        

}

?>

EDIT : Ajout des balises de code !

1 réponse

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
21 déc. 2018 à 19:15
Bonjour,

Tu as oublié les "constructeur" dans tes class
Il faut les utiliser... surtout que tu fais des extend...

Bien entendu, dans le code qui fait appel à tes class.. tu as faire un REQUIRE de tes class (y compris la bdd )....


* permet l'accès à la BDD à partir des fonctions des classes enfants

*/

class BDD {
  private $localhost = "", $user = "", $password = "";
  public $db;
//__Effectue la connexion à la BDD
//__Instancie et renvoie l'objet PDO associé

    function __construct() {
     //__variable locale lié à la classe
    $this->localhost = 'mysql:host=localhost;dbname=gespa;charset=utf8';
    $this->user = 'root';
   $this->password = '';
    $this->connexion();
    }

   private function connexion(){
      try{
         $bdd = new PDO($this->localhost, $this->user, $this->password);
         $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
         $this->db = $bdd;
      }catch(Exception $e){
         echo "Erreur !" .$e->getMessage();
         exit();
      }  
  }
}


?>


<?php
/*


* Modele récupérer les informations de la BDD "gespa"

*/
class Data extends BDD {
//__Récupère l'ensemble des utilisateurs

        private $id;
        private $pseudo;
        private $motDePasse;
        private $pseudoUtilisateur;
        private $loginsession;
        private $privilegeses;
        
        
        function __construct(){
            parent::__construct();
        }
       
       public function connexion($pseudoUtilisateur, $motDePasse){                  
            /*


* Utilisation :

* un utilisateur veut se connecter, on appelle la fonction en indiquant le nom de l'utilisateur et le mot ed passe indiqué

* la fonction vérifie si cela correspond bien, si oui on renvoie true, si non on renvoie false

* 

*/
            //Variables utilisées :             
            $requete;
            $ligne;
            $retour = false;
            
            //On se connecte à la base de données
            $pdo =$this->db;



Pour le reste... applique ce qui est indiqué ici (utilisation des TRY/CATCH, utilisation des requêtes préparées... )
http://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs

Et également jette un oeil à ceci :
http://www.commentcamarche.net/faq/48399-php-gestion-des-erreurs-debogage-et-ecriture-du-code

Reviens nous voir avec ton code modifié si tu rencontres toujours des soucis.

NB: Pour poster ton code correctement sur le forum, merci de le faire en utilisant les BALISES DE CODE
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code


0
Rejoignez-nous