diff --git a/manager/security.php b/manager/security.php index 2fa06f8..9235d4b 100755 --- a/manager/security.php +++ b/manager/security.php @@ -157,7 +157,7 @@ /* [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 && count($tabForm) > 0; // si ils ne sont pas vides + $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 @@ -166,32 +166,32 @@ /* [2] Pour chaque variable on vérifie les données =============================================================================*/ - $checker = true; // on définit le checker à VRAI + $checker = false; // on définit le checker à VRAI // Vérification des types // pour chaque variable - foreach ($tabVar as $type => $tabVal){ - foreach($tabVal as $variable) { // <--- Gestion des tableaux de valeurs ??? - $checker = ($type == gettype($variable)); - if($checker == false) - return (" variable : ".(String)$variable." non conforme, type attendu : ".(String)$type." type reçu :".gettype($variable)); - } - - } + for($i = 0 ; $i < count($tabVar) ; $i++) { - // Vérification des formats + switch($tabType[$i]) { - foreach($tabForm as $format => $tabVal) { - foreach ($tabVal as $variable) { // <--- Gestion des tableaux de valeurs ??? - $checker = preg_match($format,$variable); - if($checker == false) - return (" variable : ".$variable." non conforme, format attendu : ".(String)$format." format reçu :".(String)$variable); + 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; } -?> \ No newline at end of file +?> diff --git a/test.php b/test.php index 0e8c891..bf02a35 100755 --- a/test.php +++ b/test.php @@ -44,7 +44,6 @@ require_once __ROOT__.'/manager/security.php'; - require_once __ROOT__.'/manager/database.php'; debug(); @@ -53,6 +52,34 @@ var_dump( $_SESSION['semestre_pair'] ); + // test string + echo 'Test sur le type String'; + var_dump( true == checkParam(array('mrd1609a'), array('string'),array('/^[\w -]{3,50}$/i')) ); // bonnes valeurs + var_dump( false == checkParam(array(18), array('string'),array('/^[\w -]{3,50}$/i')) ); // mauvaise variable + var_dump( false == checkParam(array('mrd1609a'), array('int'),array('/^[\w -]{3,50}$/i')) ); // mauvais type + echo '
'; + + // test int + echo 'Test sur le type int'; + var_dump( true == checkParam(array(18), array('int'),array('/^[0-9]*$/')) ); // bonnes valeurs + var_dump( false == checkParam(array(18), array('string'),array('/^[0-9]*$/i')) ); // mauvaise variable + var_dump( false == checkParam(array('18'), array('int'),array('/^[\w -]{3,50}$/i')) ); // mauvais type + echo '
'; + + // test numeric + echo 'Test sur le type numeric'; + var_dump( false == checkParam(array('18'), array('numeric'),array('/^[\w -]{3,50}$/i')) ); // bonnes valeurs + var_dump( false == checkParam(array('18'), array('string'),array('/^[\w -]{3,50}$/i')) ); // mauvaise variable + var_dump( false == checkParam(array('18'), array('int'),array('/^[\w -]{3,50}$/i')) ); // mauvais type + echo '
'; + + // test array + echo 'Test sur le type array'; + var_dump( true == checkParam(array('mrd1609a','lbh1609'), array('string','string'),array('/^[\w -]{3,50}$/i','/^[\w -]{3,50}$/i')) ); // bonnes valeurs + var_dump( false == checkParam(array('mrd1609a','lbh1609'), array('int','int'),array('/^[\w -]{3,50}$/i')) ); // mauvaise variable + var_dump( false == checkParam(array('mrd1609a','lbh1609'), array('string','int'),array('/^[x]{3,50}$/i','/^[x]{3,50}$/i')) ); // mauvais regex + echo '
'; +