Voila comment je ferais :
un script de "sécurité" est exécuté avant chaque page :
Code :
- <?
- // ====================================================================================
- // On inclut la description des classes dont les objets sont sauvegardés en session
- // AVANT d'ouvrir la session .../!\ IMPORTANT...
- include("DP_class_db.php" );
- include("DP_class_user.php" );
- // On active la session pour cette page
- // (toutes en fait, puisque ce fichier est appelé automatiquement
- // avant le traitement de n'importe quelle page)
- session_start();
- // ====================================================================================
- // L'objet 'utilisateur' existe-t-il ?
- if (!session_is_registered('USER')) {
- $USER = new class_user();
- session_register('USER');
- }
- // L'objet 'sql' existe-t-il ?
- if (!session_is_registered('SQL_OBJ')) {
- if (!isset($DPDB)) include("DP_connect_db.php" );
- $SQL_OBJ = new class_dp_db($DPDB);
- session_register('SQL_OBJ');
- $SQL_OBJ->connect();
- }
- else {
- // Oui, alors on rafraichit la connexion à la bdd.
- $SQL_OBJ->refreshConn();
- }
- // --------------------------------------------------------
- // On vérifie si on nous a envoyer des données à traiter.
- // --------------------------------------------------------
- if (isset($HTTP_POST_VARS)) {
- // Doit-on chercher à authentifier quelqu'un ?
- // ---------------------------------------------
- if (isset($HTTP_POST_VARS["dpId"]) && isset($HTTP_POST_VARS["dpMdp"])) {
- $USER->authenticateDP(strtoupper(trim($HTTP_POST_VARS["dpId"])), trim($HTTP_POST_VARS["dpMdp"]));
- }
- }
- //$USER->debugClass();
- ?>
|
Donc ce script gère la création initiale de l'objet 'user'.
L'objet 'user' possède une propriété qui permet de savoir si l'utilisateur est identifié ou est encore un "visiteur".
Code :
- <?
- class class_user {
- // Variables 'locales'
- var $valid_dp = false;
- var $id = null;
- var $ip = null;
- var $identifiant = '';
- var $nom = '';
- var $prenom = '';
- var $email = '';
- //-----------------------------
- // Constructeur de la classe.
- //-----------------------------
- function class_user() {
- $this->id = session_id();
- $this->ip = $_SERVER["REMOTE_ADDR"];
- }
- //---------------------------------------------------------
- // Fonction d'authentification de l'utilisateur connecté.
- //---------------------------------------------------------
- function authenticateDP($log,$pwd) {
- global $SQL_OBJ;
- // On tente de récupérer les informations de l'utilisateur tentant de se connecter.
- $sql = "select id, nom, prenom, email from authorizedDPs";
- $sql .= " where identifiant like '".$log."' and motdepasse like '".$pwd."'";
- // On execute la requête de sélection de l'utilisateur.
- $sql_res = $SQL_OBJ->query($sql);
- // Si on a un retour, on charge le dp identifié.
- if ($sql_res) {
- $user_nfo = $SQL_OBJ->fetch_array($sql_res);
- if ($user_nfo) {
- $this->setDPInformations($user_nfo, $log);
- }
- }
- // On vide l'objet sql.
- $SQL_OBJ->record = '';
- $SQL_OBJ->free_result($sql_res);
- // Si l'utilisateur est identifié comme DP.
- if ($this->valid_dp) {
- $this->saveLastConnection();
- }
- [...]
- }
- ?>
|
Enfin, il ne te reste plus qu'à créer un répertoire par utilisateur et, à chaque traitement de page, de vérifier si l'utilisateur à bien le droit d'accéder au répertoire visé (correspondance sauvée en bdd).
ps: pourquoi ne stockes-tu pas tes images sous forme de BLOB ? Comme ca c'est encore plus facile...
Message édité par ollone le 26-05-2004 à 16:09:11