VRAI si connecté / FAUX si pas connecté * */ function connected(){ return $_SESSION['identifiant'] != null; } /** retourne si un utilisateur a un droit ou non * * @return permission VRAI si l'utilisateur a ce droit / FAUX s'il ne l'a pas * * */ function permission($perm){ return connected() && is_int( array_search($perm, $_SESSION['droits']) ); } function debug(){ ini_set('display_errors',1); ini_set('display_startup_errors',1); error_reporting(-1); }debug(); function anneeScolaire($year){ return $year.' - '.($year+1); } function secure_sha1($text){ $salt = '!!-vi_v93DFeswgf9de2b4d34ev!XX!x%'; $pepper = ':!;,°1832%0%QMSLµQ°++Q==!'; return sha1( sha1($salt.$text).$pepper ); } /* [1] SESSIONS & REDIRECTION ============================================================*/ /* ETABLIT UNE SESSION SÉCURISÉE * * [1] Définit un id_session (PHPSESSID) unique et propre à une connection * + propre à un navigateur (navigateur, version, OS, système X, ...) * + propre à un accès (ip publique = box) * * [2] Démarre la session *IMPORT */ function session_init(){ /* session_id( // on définit le session id sha1( // qui est un Hash MD5 $_SERVER['HTTP_USER_AGENT']. // qui correspond aux infos système disponibles de l'utilisateur $_SERVER['REMOTE_ADDR'] // et de son ip publique ) ); */ session_start(); // on démarre la session // on vérifie l'intégrité des variables session $identifiantDefinedProperly = isset($_SESSION['identifiant']) && !empty($_SESSION['identifiant']) && gettype($_SESSION['identifiant']) == 'string' && strlen($_SESSION['identifiant']) > 0; $droitsDefinedProperly = isset($_SESSION['droits']) && !empty($_SESSION['droits']) && is_array($_SESSION['droits']) && count($_SESSION['droits']) > 0; if( $droitsDefinedProperly ) foreach($_SESSION['droits'] as $droit) if( !is_int( array_search($droit, getPermissions()) ) ) // si le droit n'est pas dans la liste des possibilitées, on retourne false $droitsDefinedProperly = false; // si les variables sessions ne sont pas toutes les 2 correctes if( !$identifiantDefinedProperly || !$droitsDefinedProperly ){ $_SESSION['identifiant'] = null; // on les initialise à NULL $_SESSION['droits'] = array(); } }session_init(); /* [2] GESTION DES PARAMÈTRES ============================================================*/ /** Vérifie le bon format, le bon type, ainsi que la bonne valeur des variables envoyées * * @param $tabVar tableau contenant l'ensemble des variables a vérifier * @param $tabType tableau contenant l'ensemble des types * @param $tabForm tableau contenant l'ensemble des conditions attendues * * @return toutOK VRAI si variables bonnes / FAUX sinon * */ function checkParam($variable, $type=null){ $checker = isset($variable) && !is_null($variable); // traitement en fonction du type switch($type){ /* [1] Types de la base de données =======================================*/ /* (1) Global */ case 'auto_increment_id': return $checker && is_numeric($variable) && $variable <= 2147483647 && $variable >= -2147483647; break; /* (2) Utilisateur */ case 'utilisateur.identifiant': return $checker && is_string($variable) && preg_match('/^[\w -]{3,50}$/i', $variable); break; case 'utilisateur.prenom': return $checker && is_string($variable) && preg_match('/^[a-z -]{3,50}$/i', $variable); break; case 'utilisateur.nom': return $checker && is_string($variable) && preg_match('/^[a-z -]{3,50}$/i', $variable); break; case 'utilisateur.sexe': return $checker && is_numeric($variable) && $variable >= 0 && $variable <= 1; break; case 'utilisateur.mail': return $checker && is_string($variable) && strlen($variable) <= 50 && preg_match('/^[\w\.-]+@[\w\.-]+\.[a-z]{2,4}$/i', $variable); break; case 'utilisateur.mdp': return $checker && is_string($variable) && preg_match('/^[\w -]{4,100}$/i', $variable); break; case 'utilisateur.droits': return $checker && is_string($variable) && preg_match('/^(?:master|student|admin|teacher)(,(?:master|student|admin|teacher)){0,4}$/i', $variable); break; /* (3) Groupe */ case 'groupe.nom': return $checker && is_string($variable) && preg_match('/^[a-z0-9 -]{1,10}$/i', $variable); break; /* (4) Formation */ case 'formation.code': return $checker && is_string($variable) && preg_match('/[\w]{0,10}/i', $variable); break; case 'formation.nom': return $checker && is_string($variable) && preg_match('/[\w ]{0,100}/i', $variable); break; /* (5) Module */ case 'module.nom': return $checker && is_string($variable) && preg_match('/[\w]{0,10}/i', $variable); break; case 'module.libelle': return $checker && is_string($variable) && preg_match('/[\w ]{0,100}/i', $variable); break; /* (6) UE */ case 'UE.nom': return $checker && is_string($variable) && preg_match('/[\w]{0,10}/i', $variable); break; case 'UE.libelle': return $checker && is_string($variable) && preg_match('/[\w ]{0,100}/i', $variable); break; /* (7) Semestre */ case 'semestre.nom': return $checker && is_string($variable) && preg_match('/[\w]{0,10}/i', $variable); break; case 'semestre.rang': return $checker && is_numeric($variable) && $variable >= 0 && $variable <= 127; break; case 'semestre.annee': return $checker && is_numeric($variable) && $variable >= 0; break; /* (8) Contrôle */ case 'controle.nom': return $checker && is_string($variable) && preg_match('/[\w]{0,10}/i', $variable); break; case 'controle.libelle': return $checker && is_string($variable) && preg_match('/^.{3,100}$/i', $variable); break; case 'controle.base': return $checker && is_numeric($variable) && $variable >= 0; break; case 'controle.coefficient': return $checker && is_numeric($variable); break; case 'controle.publication': return $checker && is_numeric($variable) && $variable >= 0 && $variable <= 1; break; /* (9) Note */ case 'note.valeur': return $checker && is_numeric($variable); break; /* [2] Types primitifs et secondaires =======================================*/ case '': return $checker && is_string($variable); break; case '': return $checker && is_int($variable); break; case '': return $checker && is_numeric($variable); break; case '': return $checker && is_array($variable); break; case '': return $checker && is_bool($variable); break; } return $checker; } /* [2] AUTOLOADER ================================================================*/ function autoLoader($className) { // si on charge un Repo if( preg_match('/^([a-z]+)Repo$/', $className, $match) ){ // si le fichier existe, on charge le repo if( is_file(__ROOT__.DIRECTORY_SEPARATOR.'manager'.DIRECTORY_SEPARATOR.'repo'.DIRECTORY_SEPARATOR.$match[1].'.php') ) require_once __ROOT__.DIRECTORY_SEPARATOR.'manager'.DIRECTORY_SEPARATOR.'repo'.DIRECTORY_SEPARATOR.$match[1].'.php'; } // si c'est un manager elseif( preg_match('/^([a-z]+)Manager$/', $className, $match) ){ // si le fichier existe, on charge le manager if( is_file(__ROOT__.DIRECTORY_SEPARATOR.'manager'.DIRECTORY_SEPARATOR.$match[1].'.php') ) require_once __ROOT__.DIRECTORY_SEPARATOR.'manager'.DIRECTORY_SEPARATOR.$match[1].'.php'; } // sinon => DataBase, on le charge elseif( is_file(__ROOT__.DIRECTORY_SEPARATOR.'manager'.DIRECTORY_SEPARATOR.strtolower($className).'.php') ) require_once __ROOT__.DIRECTORY_SEPARATOR.'manager'.DIRECTORY_SEPARATOR.strtolower($className).'.php'; // else // var_dump('autoloaderFail'); } spl_autoload_register('autoLoader', false, true); ?> ";print_r(file_get_contents(__ROOT__.'/manager/conf.json'));echo '';} ?>