Commentçamarche.net
CodeS-SourceS
Rechercher un code, un tuto, une réponse

Classe : gestion d'utilisateurs

4/5 (8 avis)

Vue 12 915 fois - Téléchargée 1 539 fois

Description

Bonjour à tous,

Tout d'abord je tiens à préciser que ce n'est pas la première, ni la dernière classe de gestion d'utilisateurs sur ce site mais je considère que celle ci est sans doute beaucoup plus flexible et adaptable à tous genre de situations.

C'est une classe (en fait ce sont plusieurs classes) de gestion d'utilisateurs (espace membre) écrite en PHP5. Elles sont entièrement objets (évidement puisque ce sont des classes...)

Ce qu'elle fait:
L'inscription des membres avec autant de champs que vous souhaitez. (Pas besoin de toucher au script pour ajouter un champ dans votre base)
La connexion des membres en mode parano (comparaison des user agent, ip et compagnie pour éviter le vol de session) ou en mode normal (session_id)
Vérification des données en temps réel (pas besoin de valider les données avant de les envoyer à la classe)
La liste des membres connectés en temps réel (J'ai opté pour des sessions SQL, on perds en perf, mais tellement plus flexible)
Création d'une clée pour redéfinir le mot de passe (et le redéfinir)
Mettre à jour un utilisateurs et ses informations
Un petit moteur de template light gèrant quelques trucs utiles
Quelques petits autres trucs

Ce qu'elle ne fait pas:
Tout le reste :P Comme j'ai dis le but était d'arriver avec un code réutilisable partout sans le retoucher ou très peu. Pas d'en faire un espace membre complet avec des milliers d'options.

Principes utilisés:
1. Les itérateurs (Merci à neigedhiver, sa source m'a bien aidé sur la compréhension des itérateurs)
2. Les méthodes magiques __get __set et __call (merci à php.net)
3. Les singletons (ici je remercis wikipedia)
4. Le moteur de template et l'utilisation des regex (Oui je sais, c'est lent)
5. Les exceptions (merci à malalam et ses sources)

Ce que la source comprends:
Une classe pour gestion des membres
Une classe pour la gestion de la base de données
Un petit moteur de template (très peu optimisé, je l'avou mais ce n'est pas la prioritée de la source)

Pourquoi je la poste ?
Pour avoir des avis sur des choses à améliorer, à refaire, ou simplement pour me faire dire que je suis totalement dans le champs et que j'ai rien compris à la programmation en php :) Avant de continuer à apprendre je veux être certain que je suis dans la bonne direction...

La source comprends une petite interface d'EXEMPLE (donc pas de gestion d'erreurs super poussée ou autre) ELLE N'EST PAS COMPLËTE. Je veux dire qu'elle ne montre pas toutes les possibilités de la classe, à vous de faire votre site... C'est pas un site tout fait, c'est une classe à adapter à votre site ! Donc il faut un minimum de connaissance en php hein...

Installation:
Il y a plusieurs variables de configuration dans le fichier conf/main.php ainsi qu'au début de la classe libs/users.class.php. Vous devez aussi importer le fichier importme.sql !

J'attends vos commentaires..

Source / Exemple :


<?php

//Exemple d'utilisation: Inscription d'un membre fichier inscription.php

include('./libs/core.php');

try {
	$t = new Core;
	$u = Core::Users();
	
	if (isset($_POST['username'])){
		$u->_username($_POST['username'], VALID_ALNUM);  // First way to store values with __call
		$u->SetValue('password', $_POST['password'], VALID_PASSWORD); // Second way to store values
		$u->SetValue('email', $_POST['email'], VALID_EMAIL);
		if (count($u->fields_errors) > 0) {
			echo count($u->fields_errors) . ' champs contiennent des valeurs invalides: <pre>';
			var_dump($u->fields_errors);
			echo '</pre>';
		} elseif ($u->Register('username,password,email')) {
			echo 'parfais';exit();
		}
	}
} catch (Exception $e) {
	echo 'Exception: '.$e->getMessage();
}
$t->display('inscription.phtml');
?>

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.