/** * Permet de sécuriser une variable * * @param mixed $string : la variable à sécuriser (les types string, nombre et array sont géré) * @param bool $html : (default: false) mettre à true pour que la variable ne subisse pas un htmlentities() * @param bool $null_cslashe : (default: false) mettre à true si on agit sur le nom d'une variable car par exemple "cou_cou" devient "cou\_cou" * * @return mixed */ function secure($string, $html = false, $null_cslashe = false) { /* A propos de $null_cslashes ; A désactivé si on le fait sur le nom de variable, car sur un nom comme coucou ça passe, sur cou_cou, ça devient cou\_cou ^^ (peut être génant sur un nom de variable dans le cas par exemple de $_POST['coucou'] ou $_POST['cou_cou'] pour l'exemple au-dessus) */ if (is_array($string)) { foreach ($string as $key => $val) { //Dans le cas où après si $key est modifié, alors la valeur pour //la clé non sécurisé existerais toujours et la sécurisation //ne servirais à rien. unset($string[$key]); $key = secure($key, true, $null_cslashe); $val = secure($val, $html, $null_cslashe); $string[$key] = $val; } return $string; } // On regarde si le type de string est un nombre entier (int) if (ctype_digit($string)) { $string = intval($string); return $string; } // Pour tous les autres types global $DB; $optHtmlentities = ENT_COMPAT; //commenté car problème de notice si php < 5.4 //if(defined(ENT_HTML401)) {$optHtmlentities .= ' | '.ENT_HTML401;} //à partir de php5.4 if ($html === false) { $string = htmlentities($string, $optHtmlentities, 'UTF-8'); } if (function_exists('DB_protect')) { $string = DB_protect($string); } if ($null_cslashe === false) { $string = addcslashes($string, '%_'); } return $string; }
public function DB_protect($data) { return DB_protect($data); }