limpando variáveis ​​$ _POST [duplicado]

Esta questão já tem uma resposta aqui:

Os htmlspecialchars e mysql_real_escape_string mantêm meu código PHP protegido contra injeção? 6 respostas

Eu estou tentando encontrar uma maneira de efetivamente limpar facilmente todas as variáveis ​​POST e GET com uma única função. Aqui está a função em si:

//clean the user's input
function cleanInput($value, $link = '')
{
    //if the variable is an array, recurse into it
    if(is_array($value))
    {
        //for each element in the array...
        foreach($value as $key => $val)
        {
            //...clean the content of each variable in the array
            $value[$key] = cleanInput($val);
        }

        //return clean array
        return $value;
    }
    else
    {
        return mysql_real_escape_string(strip_tags(trim($value)), $link);
    }
}

E aqui está o código que chamaria isso:

//This stops SQL Injection in POST vars
foreach ($_POST as $key => $value)
{
    $_POST[$key] = cleanInput($value, $link);
}

//This stops SQL Injection in GET vars
foreach ($_GET as $key => $value)
{
    $_GET[$key] = cleanInput($value, $link);
}

Para mim, isso parece que deveria funcionar. Mas, por algum motivo, ele não retornará matrizes de algumas caixas de seleção que tenho em um formulário. Eles continuam saindo em branco.

Eu testei o meu código sem a função acima e funciona bem, eu só quero que acrescentou um pouco de segurança lá.

Obrigado!

questionAnswers(5)

yourAnswerToTheQuestion