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); } // function distinctArray($inArray){ // $outArray = array(); // foreach($inArray as $value) // pour chaque élément du tableau d'entrée, on l'ajoute uniquement si aucune entrée du tableau de sortie n'a la même valeur // if( !in_array($value, $outArray) ) // array_push($outArray, $value); // return $outArray; // } 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 * */ 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($tabVar, $tabType, $tabForm) { // FORMAT DE $tabVar // // $tabVar = array( // $stringVar, // chaine de caractères // $integerVar, // entier // $numericVar, // nombre (sous forme d'entier ou de chaine) // $arrayVar // tableau // ); // FORMAT DE $tabType // // $tabType = array( // 'string', // chaine de caractères // 'int', // entier // 'numeric', // nombre (sous forme d'entier ou de chaine) // 'array' // tableau // ); // FORMAT DE $tabForm // // $tabType = array( // '/^[a-z0-9]{1,5}$/i', // chaine de caractères // '/^[0-9]+$/', // entier // '/^[0-9]+$/', // nombre (sous forme d'entier ou de chaine) // '??????' // tableau // ); /* [1] Vérification de l'intégrité des tableaux =============================================================================*/ $areArrays = is_array($tabVar) && is_array($tabForm); // si ce sont bien des tabeaux $areNEmpty = $areArrays && count($tabVar) > 0; // si ils ne sont pas vides $haveEqLen = $areNEmpty && count($tabVar) == count($tabForm); // si ils ont la même taille if( !$haveEqLen ) // si toutes les conditions ne sont pas vérifiées return false; // on retourne faux, car ne pourra pas être vrai /* [2] Pour chaque variable on vérifie les données =============================================================================*/ $checker = false; // on définit le checker à VRAI // Vérification des types // pour chaque variable for($i = 0 ; $i < count($tabVar) ; $i++) { switch($tabType[$i]) { case 'string': if( is_string($tabForm[$i]) ) $checker = is_string($tabVar[$i]) && preg_match($tabForm[$i], (String) $tabVar[$i]); break; case 'int': if( is_string($tabForm[$i]) ) $checker = is_int($tabVar[$i]) && preg_match($tabForm[$i], (String) $tabVar[$i]); break; case 'numeric': if( is_string($tabForm[$i]) ) $checker = is_numeric($tabVar[$i]) && preg_match($tabForm[$i], (String) $tabVar[$i]); break; case 'array': if( is_numeric($tabForm[$i]) ) $checker = is_array($tabVar[i]) && count($tabVar[$i]) > 0; break; } } return $checker; } /*function checkParamBIS( ...$checkIt ) { // checkIt[] Tableau | checkIT[][] Types des Variables | checkIt[][][] Formats des variables | checkIt[][][][] Valeur des varialbes $checker = false; for( $i = 0; $i < func_num_args(); $i++) { for( $j = 0; $j < sizeof( $checkIt[$i] ); $j++) { switch ($checkIt[$i][$j]) { case 'string': if( is_string( $checkIt[$i][$j][$j][$j] ) ) $checker = is_string( $checkIt[$i][$j][$j][$j] ) && preg_match( $checkIt[$i][$j][$j], (String) $checkIt[$i][$j][$j][$j] ); break; case 'int': if( is_string( $checkIt[$i][$j][$j][$j]) ) $checker = is_int( $checkIt[$i][$j][$j][$j] ) && preg_match( $checkIt[$i][$j][$j], (String) $checkIt[$i][$j][$j][$j] ); break; case 'numeric': if( is_string( $checkIt[$i][$j][$j][$j]]) ) $checker = is_numeric( $checkIt[$i][$j][$j][$j] ) && preg_match( $checkIt[$i][$j][$j], (String) $checkIt[$i][$j][$j][$j] ); break; case 'array': if( is_numeric( $checkIt[$i][$j][$j][$j]) ) $checker = is_array( $checkIt[$i][$j][$j][$j] ) && count( $checkIt[$i][$j][$j] ) > 0; break; } } } return $checker; }*/ ?>