Mi funcion para limpiar variables

Iniciado por Alex_bro, 5 Febrero 2009, 18:19 PM

0 Miembros y 1 Visitante están viendo este tema.

Alex_bro

Buenas,
Recien acabo de escribir una funcion PHP para filtrar una variable segun algunas condiciones... Les dejo el codigo por si a alguien le sirve, y de paso si tienen ganas, espero criticas para mejorarla, o ideas para que sea mas comoda.

Código (php) [Seleccionar]
<?php

/**
 * @autor Alex_Broadcast
 * @desc Funcion para filtrar variables.
 * @uso: filtra_var(Cadena, Numeros?, Letras?, Minimo, Maximo, Especiales?, Para DB?);
 * Por defecto las letras y los numeros si se permiten y no tiene MAX ni MIN.
 */

function filtra_var($var,$num=1,$let=1,$min=0,$max=0,$exp=0,$db=0){
if($num == 0$var preg_replace("/[0-9]/",'',$var);
if($let == 0$var preg_replace("/[a-zA-Z]/",'',$var);
if($max != 0){ $long strlen($var);
if($min $long || $long $max){ return FALSE;} }
if($exp != 1$var preg_replace("/^[a-z0-9]$/i",'',$var);
if($db == 1){ //Si $var va a un query SQL...
$var htmlentities($varENT_QUOTES);
if(get_magic_quotes_gpc()) $var stripslashes($var);
}
return $var;
}

/* Ejemplo: Solo numeros, y de 2 cifras minimo, 6 maximo */
$edad filtra_var($edad,1,0,2,6,0,0);

/* Ejemplo: Solo numeros, sin MIN ni MAX */
$edad filtra_var($edad,1,0);

/* Ejemplo: Numeros y letras, 3 MIN, 9 MAX */
$edad filtra_var($edad,1,1,3,9);
?>


La filtracion para evitar SQL INJECTION no se si es la mas optima, pero yo en mis paginas usaba ademas de todo eso funciones propias de MYSQL y no queria incluirlas en la funcion por si al ejecutarla aun no tenian una conexion establecida... cuestion de adaptarla a sus necesidades.

Saludos!

HardieVon

no le veo mucha funcionalidad ni practicidad, lo siento pero no es recomendale esa funcion.

1.- nada como un excelente casteo.
Código (php) [Seleccionar]

intval();

2.- y esta mera para escapar caracteres feos   :(

Código (php) [Seleccionar]
mysql_real_escape_string();

Y liston de perro, no nesesitas tanta cantaleta.

SALUDOS MAI

Alex_bro

Gracias por tu sinceridad  ;D
Para cuando queremos solo numeros pues intval() si es mucho mejor que todo esto, pero yo la hice para casos en los que haya que combinar mas factores.
Y lo de mysql_real_escape_string() si es verdad, yo la uso en mis scripts, pero como la funcion tenia que ser mas universal pues... si la ponia en esta funcion y alguien la usaba sin tener una conexion a base de datos previa, le saldria error... o simplemente no escaparia la cadena si le ponemos @.

De todas formas tampoco tengo mucho nivel en PHP, esperaba que aqui le sacaran criticas a mi funcion para mejorarlo, gracias!

Un saludo.