Usar o filter_input com array_filter($_POST)
Olá pessoal. Tranquilis?
Tenho um formulário onde tem bastante campos, para isso, estou fazendo dessa forma:
>
Citar
require_once('classes/metodosClass.php');
$metodos = new metodosClass();
if($_POST["Submit"] == "Cadastrar"){
$dados = array_filter($_POST);
echo $metodos->cadastrarDados($dados);
}
E no método cadastrarDados($dados):
>
Citar
public function cadastrarDados(array $dados){
$nome = mysqli_real_escape_string($this->conexao,$dados["Nome"]);
$email = mysqli_real_escape_string($this->conexao,$dados["Email"]);
$cpf = mysqli_real_escape_string($this->conexao,$dados["CPF"]);
....
// Depois faço a inclusão no BD
}
Só que estou querendo aplicar o FILTER_SANITIZE e FILTER_VALIDATE para esses campos. Como eu poderia aplicar nessa situação já que estou usando o array? Pensei em fazer dessa forma, só que os valores não chegam com os filtros no método, ou seja, os filtros perdem o valor. Colocarei apenas o exemplo que pensei em fazer:
>
Citar
if($_POST["Submit"] == "Cadastrar"){
$nome = filter_input(INPUT_POST,'nome',FILTER_SANITIZE_SPECIAL_CHARS);
$emailLimpar = filter_input(INPUT_POST,'email',FILTER_SANITIZE_EMAIL);
$emailValidar = filter_input(INPUT_POST,'email',FILTER_VALIDATE_EMAIL);
....
if($emailValidar == true){
$erro = "Favor colocar o e-mail corretamente!";
}else if(...){
.......
}else{
$dados = array_filter($_POST);
echo $metodos->cadastrarDados($dados);
}
}
Tentei também dessa forma, mas também não funcionou:
>
Citar
public function cadastrarDados(array $dados){
$filtrar = filter_input(INPUT_GET, $dados, FILTER_DEFAULT, FILTER_REQUIRE_ARRAY);
}
Porém quando faço dessa forma, do qual acho que está errado, funciona:
>
Citar
public function cadastrarDados(array $dados){
$dados["Descricao"] = filter_input(INPUT_POST,"Descricao", FILTER_SANITIZE_SPECIAL_CHARS);
}
Como posso resolver isso?
ObrigadoDiscussão (2)
Carregando comentários...