Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Alex_bro en 5 Febrero 2009, 18:19 pm



Título: Mi funcion para limpiar variables
Publicado por: Alex_bro en 5 Febrero 2009, 18:19 pm
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
  1. <?php
  2.  
  3. /**
  4.  * @autor Alex_Broadcast
  5.  * @desc Funcion para filtrar variables.
  6.  * @uso: filtra_var(Cadena, Numeros?, Letras?, Minimo, Maximo, Especiales?, Para DB?);
  7.  * Por defecto las letras y los numeros si se permiten y no tiene MAX ni MIN.
  8.  */
  9.  
  10. function filtra_var($var,$num=1,$let=1,$min=0,$max=0,$exp=0,$db=0){
  11. if($num == 0) $var = preg_replace("/[0-9]/",'',$var);
  12. if($let == 0) $var = preg_replace("/[a-zA-Z]/",'',$var);
  13. if($max != 0){ $long = strlen($var);
  14. if($min > $long || $long > $max){ return FALSE;} }
  15. if($exp != 1) $var = preg_replace("/^[a-z0-9]$/i",'',$var);
  16. if($db == 1){ //Si $var va a un query SQL...
  17. $var = htmlentities($var, ENT_QUOTES);
  18. if(get_magic_quotes_gpc()) $var = stripslashes($var);
  19. }
  20. return $var;
  21. }
  22.  
  23. /* Ejemplo: Solo numeros, y de 2 cifras minimo, 6 maximo */
  24. $edad = filtra_var($edad,1,0,2,6,0,0);
  25.  
  26. /* Ejemplo: Solo numeros, sin MIN ni MAX */
  27. $edad = filtra_var($edad,1,0);
  28.  
  29. /* Ejemplo: Numeros y letras, 3 MIN, 9 MAX */
  30. $edad = filtra_var($edad,1,1,3,9);
  31. ?>

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!


Título: Re: Mi funcion para limpiar variables
Publicado por: HardieVon en 6 Febrero 2009, 03:19 am
no le veo mucha funcionalidad ni practicidad, lo siento pero no es recomendale esa funcion.

1.- nada como un excelente casteo.
Código
2.- y esta mera para escapar caracteres feos   :(

Código

Y liston de perro, no nesesitas tanta cantaleta.

SALUDOS MAI


Título: Re: Mi funcion para limpiar variables
Publicado por: Alex_bro en 6 Febrero 2009, 19:00 pm
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.