Classe utilisateur pour gestion simple de login et droits

Description

J'ai fait cette source dans le cadre d'un projet en cours.
Elle permet une utilisation d'utilisateurs avec login/mot de passe et des droits assez simplement.
Il n'y a que la classe, pas de mise en page de l'administration ou quoique ce soit, c'est au programmeur de faire tout ça. La classe fournit juste les outils pour utiliser une base de données avec des utilisateurs et des droits.

Le code parlera mieux que moi ;)

Il y a 3 tables : membres, droits, dispose_de
La table membre contient les membres. Le champ admin indique si le membre possède des droits ou non.
La table droits contient les droits avec une id, un nom et une description.
La table dispose_de indique les droits qu'a tel ou tel membre.

Il y a plusieurs méthodes :
function Utilisateur($idMembre);
private function droits();
public static function inscription($pseudo, $motDePasse, $nom, $prenom, $sexe, $dateDeNaissance, $email, $adresse, $ville, $codePostal, $pays, $participeAuConcours);
public static function pseudoDejaUtilise($pseudo);
public static function emailDejaUtilise($email);
public static function connexion($pseudoUtilisateur, $motDePasse, $varSession);
public static function deconnexion($varSession);
public function sauvegarderLUtilisateur();
public static function supprimerLUtilisateur($id_membre);
public function isAdmin();
public function aLeDroit($leDroit);
+ geteur;
+ seteur;

Je sais que je n'utilise pas toute la puissance du php objet dans ma classe, mais je vais m'y mettre un de ces quatre matins ;)

Source / Exemple :


Pour créer les tables :

CREATE TABLE IF NOT EXISTS `dispose_de` (
  `id_dispose` int(11) NOT NULL AUTO_INCREMENT,
  `id_droits` int(11) NOT NULL,
  `id_membres` int(11) NOT NULL,
  PRIMARY KEY (`id_dispose`),
  KEY `id_droits` (`id_droits`),
  KEY `id_membres` (`id_membres`)
);

CREATE TABLE IF NOT EXISTS `droits` (
  `id_droit` int(11) NOT NULL AUTO_INCREMENT,
  `nom` varchar(20) DEFAULT NULL,
  `description` varchar(200) DEFAULT NULL,
  PRIMARY KEY (`id_droit`)
);

CREATE TABLE IF NOT EXISTS `membres` (
  `id_membre` int(11) NOT NULL AUTO_INCREMENT,
  `pseudo` varchar(20) NOT NULL,
  `mot_de_passe` varchar(50) NOT NULL,
  `nom` varchar(20) DEFAULT NULL,
  `prenom` varchar(20) DEFAULT NULL,
  `email` varchar(40) NOT NULL,
  `sexe` varchar(1) DEFAULT NULL,
  `date_de_naissance` date DEFAULT NULL,
  `adresse` varchar(50) DEFAULT NULL,
  `ville` varchar(30) DEFAULT NULL,
  `code_postal` varchar(10) DEFAULT NULL,
  `pays` varchar(25) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
  `url_avatar` varchar(50) DEFAULT NULL,
  `participe_au_concours` tinyint(1) DEFAULT NULL,
  `admin` tinyint(4) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id_membre`)
);

#Exemples d'utilisations (extrais d'une application) :

=>Connecter un utilisateur :
$TEXTE_connexion = ""; // Texte qui sera mit au module connexion si nécéssaire
if (isset($_POST["pseudo"]) && isset($_POST["password"]))
{
	//On execute la fonction connexion qui renvoie true ou false
	$validation = Utilisateur::connexion($_POST["pseudo"], $_POST["password"], "membre");				
	if(!$validation){// Si la connexion a échoué on l'indique en rajoutant un texte près du module 
		$TEXTE_connexion = "Pseudo inexistant ou mot de passe invalide";
	}
}

=>Un fois connecté :
//# Si le membre est connecté on créer son objet (le membre est connecté quand la variable de session existe, voir fonction Utilisateur::connexion )	
if(isset($_SESSION['membre'])){
	$leMembre = new Utilisateur($_SESSION['membre']);
	//print_r($leMembre);
}

=> Exemple pour un panneau d'admin :
if(isset($leMembre) && $leMembre->isAdmin()){
	...
	if($leMembre->aLeDroit("gestionMembres"))
		echo '<img id="boutonMembres" src="images/onglet_membre_actif.png" alt="membres" />';
	...
	if($leMembre->aLeDroit("gestionMembres")){
		//LISTAGE DES MEMBRES ICI
		echo '	<!-- Liste des membres -->
			<table id="liste_membres">...';
	}
}

=> Changer le nom de l'utilisateur :
$leMembre->setPrenom($_POST['prenom']);
$retour = $leMembre->sauvegarderLUtilisateur();
if(!$retour)
	$TEXTE_compte .= "ECHEC de la sauvegarde des modifications.";

=> Supprimer un utilisateur :
if(!Utilisateur::supprimerLUtilisateur($_GET['suppmbr']))
	$TEXTE_admin = "Erreur à la suppression du membre.<br/>";

=> Inscrire un utilisateur :
Utilisateur::inscription($_POST['pseudoInscription'], $_POST['passwordInscription'], $_POST['nom'], $_POST['prenom'], $_POST['sexe'], $_POST['dateNais'], $_POST['email'], $_POST['adresse'], $_POST['ville'], $_POST['codePostal'], $_POST['pays'], $participeAuConcours);

Conclusion :


Bon, voila, y a pas mal de commentaire je pense, donc ça devrai aller. C'est pas du php haut niveau, mais ça reste quand même pour les initiés.

Si vous avez des questions ou autre, n'hésitez pas ;)

Codes Sources

A voir également

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.

Du même auteur (Archima)