Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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?
Obrigado>
11 horas atrás, Williams Duarte disse:
Já ouviu falar em Respect\Validation ?
https://respect-validation.readthedocs.io/en/1.1/
https://github.com/Respect/Validation
Menos sofrimento!
OU crie uma Classe enxuta com funções staticas para a Sanitização de dados.
Exemplo
if(!Validate:isEmail( $_POST['email'])) {
thow new Exception('Email inválido!')
}
para higienizar, pode criar uma Tools
<?php
namespace Lib;
class Tools
{
/**
* Higieniza string
* @access public
* @param String $string
* @return string
*/
public static function clean($string = null)
{
$string = filter_var($string, FILTER_SANITIZE_STRING);
return trim($string);
}
}
Olá Williams.
Confesso que não conheço Respect\Validation, mas vou dar uma olhada para conhecer melhor essa aplicação.
Obrigado
Já ouviu falar em Respect\Validation ?
https://respect-validation.readthedocs.io/en/1.1/
https://github.com/Respect/Validation
Menos sofrimento!
OU crie uma Classe enxuta com funções staticas para a Sanitização de dados.
Exemplo
class Tools
{
/**
* Higieniza string
* @access public
* @param String $string