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

-
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 !

Afficher la suite 

Votre réponse

1 réponse

Messages postés
25041
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 mars 2019
364
0
Merci
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


Commenter la réponse de jordane45

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.