Example #1
0
/**
 * 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;
}
Example #2
0
 public function DB_protect($data)
 {
     return DB_protect($data);
 }