<?php
function protecao($de_vari, $de_tipo = 'string') {
if (strlen($de_vari) > 0) {
if (urldecode($de_vari) > 0) {
$de_vari = urldecode($de_vari);
}
$de_vari = str_replace('<','',$de_vari);
$de_vari = str_replace('>','',$de_vari);
$de_vari = str_replace('%','',$de_vari);
$de_vari = str_replace(':','',$de_vari);
$de_vari = str_replace('"','',$de_vari);
$de_vari = str_replace("'",'',$de_vari);
$de_vari = strip_tags($de_vari);
$de_vari = addslashes($de_vari);
switch ($de_tipo) {
case 'inteiro': // Formato valido: N ou NN ou NNN e por ai vai (SEM ponto de MILHAR!)
$de_vari = str_replace('.','',$de_vari);
//echo "entrei no inteiro<br>";
if ( !preg_match('/^[0-9]+$/',$de_vari) ) {
$de_vari = '';
}
else {
settype($de_vari, 'integer');
}
break;
case 'decimal': // Formato valido: N,NN ou NN,NN ou NNNN,NN e por ai vai (separador decimal é vírgula; SEM ponto de MILHAR! Sempre COM 2 casas decimas)
$de_vari = str_replace('.','',$de_vari);
//if (!preg_match("/^([0-9.,]+)$/", $de_vari)) {
if (!preg_match("/^[0-9]+([.,][0-9]{1,2})?$/", $de_vari)) {
$de_vari = '';
}
break;
case 'e-mail':
case 'email':
if (!preg_match('/^[a-zA-Z0-9_.-]+([.][a-zA-Z0-9_.-]+)*[@][a-zA-Z0-9_-]+([.][a-zA-Z0-9_-]+)*[.][a-zA-Z]{2,4}$/',$de_vari)) {
$de_vari = '';
}
break;
case 'data': // Formato valido: DD/MM/AAAA (dia e mês SEMPRE com 2 DIGITOS, e ano COM 4 DIGITOS)
// mascara OWASP
$matches = array();
$pattern = '/^([0-9]{1,2})\\/([0-9]{1,2})\\/([0-9]{4})$/';
if (!preg_match($pattern, $de_vari, $matches)) {
$de_vari = '';
}
if (!checkdate($matches[2], $matches[1], $matches[3])) {
$de_vari = '';
}
break;
default:
$de_vari = filter_var($de_vari, FILTER_SANITIZE_STRING);
break;
}
}
return $de_vari;
}
?>