Foros del Web » Programando para Internet » PHP »

[APORTE] Clase para validar datos

Estas en el tema de [APORTE] Clase para validar datos en el foro de PHP en Foros del Web. NOTA: Esta clase solo funciona si se tiene instalado PHP 5 >= 5.2.0 ya que hace uso de FILTER_VAR Se ha visto en muchos temas ...
  #1 (permalink)  
Antiguo 04/11/2011, 13:19
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años, 6 meses
Puntos: 394
[APORTE] Clase para validar datos

NOTA: Esta clase solo funciona si se tiene instalado PHP 5 >= 5.2.0 ya que hace uso de FILTER_VAR

Se ha visto en muchos temas acerca de las validaciones de formularios, unos dicen que se haga con JavaScript otro que con PHP otros dicen que se debe hacer con los dos y un sin numero de opiniones, en mi caso soy participe de usar ambos métodos y desarrolle una clase sencilla para validar datos con PHP (pueden ser de formularios o de variables) y la quiero compartir con ustedes.

Es muy sencilla de utilizar y coloque comentarios para que se haga mas fácil su uso

validateForms.php
Código PHP:
Ver original
  1. <?php
  2. class ValidarFormularios{
  3.  
  4. private $resultado;
  5.  
  6.     public function __construct(){
  7.     }
  8.    
  9.     // VALIDANDO CAMPOS VACIOS
  10.     public function validarVacios($campo){
  11.         if(!empty($campo) || $campo != "" or $campo != NULL){
  12.             $resultado = TRUE;
  13.         }else{
  14.             $resultado = FALSE;
  15.         }
  16.         return $resultado;
  17.     }
  18.    
  19.     // VALIDANDO CORREOS
  20.     public function validarCorreo($correo){
  21.         filter_var($correo, FILTER_VALIDATE_EMAIL) ? $resultado = TRUE : $resultado = FALSE;
  22.         return $resultado;
  23.     }
  24.    
  25.     // VALIDANDO ENTEROS
  26.     // CERO Y MENOS CERO NO SON ENTEROS VALIDOS
  27.     public function validarEnteros($entero, $min, $max){
  28.    
  29.         $rango = array (
  30.             "options" => array
  31.             ( "min_range" => $min, "max_range" => $max)
  32.         );
  33.  
  34.         filter_var($entero, FILTER_VALIDATE_INT, $rango) ? $resultado = TRUE : $resultado = FALSE;
  35.         return $resultado;
  36.     }
  37.  
  38.     // VALIDANDO BOLEANOS
  39.     // RETORNA TRUE PARA 1, TRUE, ON, YES
  40.     // EN OTROS CASOS RETORNARA FALSE
  41.     public function validarBoleanos($boleano){
  42.         filter_var($boleano, FILTER_VALIDATE_BOOLEAN) ? $resultado = TRUE : $resultado = FALSE;
  43.         return $resultado;
  44.     }
  45.  
  46.     // VALIDANDO NUMEROS DE PUNTO FLOTANTE (DECIMALES)
  47.     public function validarFlotante($flotante){
  48.    
  49.         $separador = array('options' => array('decimal' => ','));
  50.        
  51.         // si se quiere usar un numero con miles y punto flotante (1.238,32) se usa esta condicion
  52.         // (!filter_var($flotante, FILTER_VALIDATE_FLOAT,  array('options' => array('decimal' => ','), 'flags' => FILTER_FLAG_ALLOW_THOUSAND)))
  53.         filter_var($flotante, FILTER_VALIDATE_FLOAT, $separador) ? $resultado = TRUE : $resultado = FALSE;
  54.         return $resultado;
  55.     }
  56.    
  57.     // VALIDANDO UNA IP
  58.     // en version se le debe pasar como parametro el tipo de ip FILTER_FLAG_IPV4 - FILTER_FLAG_IPV6
  59.     public function validarIP($ip, $version){
  60.         filter_var($ip, FILTER_VALIDATE_IP, $version) ? $resultado = TRUE : $resultado = FALSE;
  61.         return $resultado;
  62.     }
  63.    
  64.     // VALIDANDO CON EXPRESIONES REGULARES
  65.     // VERIFICA QUE EL CONTENIDO CONCUERDE CON LA EXPRESION REGULAR
  66.     /*
  67.         $expresion = '/^M(.*)/';
  68.         si se le pasa una cadena de texto que comience con M el resultado sera positivo
  69.     */
  70.     public function ValidarExpRegular($contenido, $expresion){
  71.        
  72.         // para pasarle las opciones al filtro
  73.         $opcion = array("options" => array("regexp" => $expresion));
  74.  
  75.         filter_var($contenido, FILTER_VALIDATE_REGEXP, $opcion) ? $resultado = TRUE : $resultado = FALSE;
  76.         return $resultado;
  77.     }
  78.    
  79.     // VALIDANDO UNA URL
  80.     /*
  81.         $opcion =
  82.             FILTER_FLAG_SCHEME_REQUIRED  - ejemplo: http://pagina
  83.             FILTER_FLAG_SCHEME_REQUIRED - ejemplo: http://www.pagina.com
  84.             FILTER_FLAG_PATH_REQUIRED - ejemplo: www.example.com/example1/test2/
  85.             FILTER_FLAG_QUERY_REQUIRED  - ejmemplo: pagina.php?nombre=Juan&edad=37
  86.     */
  87.     public function validarURL($url, $opcion){
  88.         filter_var($url, FILTER_VALIDATE_URL, $opcion) ? $resultado = TRUE : $resultado = FALSE;
  89.         return $resultado;
  90.     }
  91.    
  92.     // VALIDANDO QUE UN CAMPO EXISTA SI OTRO ESTA DEFINIDO Y CON UN VALOR
  93.     /*
  94.         si el campo 1 existe y tiene un valor, validar el numero 2
  95.         $validar tendra el filtro que se quiere aplicar
  96.         $campo2 es el campo que se quiere validar
  97.     */
  98.     public function validarDosCampos($campo1, $valor, $validar, $campo2){
  99.         if(isset($campo1) && $campo1 == $valor){
  100.             switch($validar){
  101.                 case 'FILTER_VALIDATE_BOOLEAN':
  102.                     filter_var($campo2, FILTER_VALIDATE_BOOLEAN) ? $resultado = TRUE : $resultado = FALSE;
  103.                 break;
  104.                 case 'FILTER_VALIDATE_EMAIL':
  105.                     filter_var($campo2, FILTER_VALIDATE_EMAIL) ? $resultado = TRUE : $resultado = FALSE;
  106.                 break;
  107.                 case 'FILTER_VALIDATE_FLOAT':
  108.                     $separador = array('options' => array('decimal' => ','));
  109.                     filter_var($campo2, FILTER_VALIDATE_FLOAT, $separador) ? $resultado = TRUE : $resultado = FALSE;
  110.                 break;
  111.                 case 'FILTER_VALIDATE_INT':
  112.                     filter_var($campo2, FILTER_VALIDATE_INT) ? $resultado = TRUE : $resultado = FALSE;
  113.                 break;
  114.                 case 'FILTER_VALIDATE_IP':
  115.                     filter_var($campo2, FILTER_VALIDATE_IP) ? $resultado = TRUE : $resultado = FALSE;
  116.                 break;
  117.                 case 'FILTER_VALIDATE_REGEXP':
  118.                     filter_var($contenido, FILTER_VALIDATE_REGEXP, array("options"=>array("regexp"=>"/^M(.*)/"))) ? $resultado = TRUE : $resultado = FALSE;
  119.                 break;
  120.                 case 'FILTER_VALIDATE_URL':
  121.                     filter_var($url, FILTER_VALIDATE_URL) ? $resultado = TRUE : $resultado = FALSE;
  122.                 break;
  123.                 default:
  124.                     $resultado = FALSE;
  125.                 break;
  126.             }
  127.         }else{
  128.             $resultado = FALSE;
  129.         }
  130.         return $resultado;
  131.     }  
  132. }
  133. ?>

Unos ejemplos de su uso:

probando.php
Código PHP:
Ver original
  1. <?php
  2. /* USANDO LA CLASE */
  3. require_once('validateForms.php');
  4. $objt = new ValidarFormularios;
  5.  
  6.  
  7. // VALIDANDO QUE NO ESTE VACIO
  8. // imprime 'El contenido SI esta vacio' porque $contenido no tiene nada de nada
  9. $contenido = "";
  10. if ($objt->ValidarVacios($contenido) === TRUE){
  11.     echo 'El contenido NO esta vacio <br />';
  12. }else{
  13.     echo 'El contenido SI esta vacio <br />';
  14. }
  15.  
  16. // VALIDANDO CORREOS
  17. // imprime 'El contenido SI es un correo electronico' porque contenido tiene un mail valido
  18. $contenido = "[email protected]";
  19. if ($objt->ValidarCorreo($contenido) === TRUE){
  20.     echo 'El contenido SI es un correo electronico <br />';
  21. }else{
  22.     echo 'El contenido NO es un correo electronico <br />';
  23. }
  24.  
  25. // VALIDANDO ENTEROS
  26. // imprime 'El contenido NO es un entero valido' ya que 1 si es entero pero este no esta en el rango del 2 al 99
  27. $contenido = "1";
  28. if ($objt->validarEnteros($contenido, 2, 99) === TRUE){
  29.     echo 'El contenido SI es un entero valido <br />';
  30. }else{
  31.     echo 'El contenido NO es un entero valido <br />';
  32. }
  33.  
  34. // VALIDANDO BOLEANOS
  35. // imprime echo 'El contenido SI es un boleano' ya que YES esta dentro de los paramentros de un boleano
  36. $contenido = "YES";
  37. if ($objt->validarBoleanos($contenido) === TRUE){
  38.     echo 'El contenido SI es un boleano <br />';
  39. }else{
  40.     echo 'El contenido NO es un boleano <br />';
  41. }
  42.  
  43. // VALIDANDO NUMEROS DE PUNTO FLOTANTE (DECIMALES)
  44. // imprime echo 'El contenido NO es un decimal' ya que dentro de las opciones colocamos que el separador de decimales es la coma
  45. $contenido = "1.23";
  46. if ($objt->validarFlotante($contenido) === TRUE){
  47.     echo 'El contenido SI es un decimal <br />';
  48. }else{
  49.     echo 'El contenido NO es un decimal <br />';
  50. }
  51.  
  52. // VALIDANDO UNA IP
  53. // imprime 'El contenido SI es una direccion IP' ya que la direccion IP es valida y es version 4
  54. $contenido = "192.168.0.1";
  55. if ($objt->validarIP($contenido, 'FILTER_FLAG_IPV4') === TRUE){
  56.     echo 'El contenido SI es una direccion IP <br />';
  57. }else{
  58.     echo 'El contenido NO es una direccion IP <br />';
  59. }
  60.  
  61. // VALIDANDO CON EXPRESIONES REGULARES
  62. // imprime 'El contenido NO empieza con la letra M' ya que Papa empieza con P
  63. $contenido = "Papa";
  64. if ($objt->ValidarExpRegular($contenido, '/^M(.*)/') === TRUE){
  65.     echo 'El contenido SI empieza con la letra M <br />';
  66. }else{
  67.     echo 'El contenido NO empieza con la letra M <br />';
  68. }
  69.  
  70.  
  71. // VALIDANDO UNA URL
  72. // imprime 'El contenido SI es una URL valida' ya que contenido si es valido
  73. $contenido = "http://www.prueba.com";
  74. if ($objt->ValidarURL($contenido, 'FILTER_FLAG_SCHEME_REQUIRED') === TRUE){
  75.     echo 'El contenido SI es una URL valida <br />';
  76. }else{
  77.     echo 'El contenido NO es una URL valida <br />';
  78. }
  79.  
  80. // VALIDANDO QUE UN CAMPO EXISTA SI OTRO ESTA DEFINIDO Y CON UN VALOR
  81. $contenido1 = "1";
  82. $contenido2 = "1238";
  83. if ($objt->validarDosCampos($contenido1, 1, 'FILTER_VALIDATE_INT', $contenido2) === TRUE){
  84.     echo 'El contenido2 si es un numero entero <br />';
  85. }else{
  86.     echo 'El contenido2 NO es un numero entero <br />';
  87. }
  88. ?>

Espero que les sirva, cualquier comentario actualización o mejora sera bienvenida.

Juan Esteban
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???

Última edición por jotaincubus; 04/11/2011 a las 13:50
  #2 (permalink)  
Antiguo 04/11/2011, 14:32
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 7 meses
Puntos: 461
Respuesta: [APORTE] Clase para validar datos

buenas lo que llevas esta bien para comenzar a desarrollar la clase pero deberías de crearles reglas de validación que pasa cuando quiero que el campo se entero y no este vacío?? fijate lo que me recomendo masterpuppet en este tema donde empezaba a hacer una clase de validación, http://www.forosdelweb.com/f68/duda-...6/#post3779133 aunque revisar los componentes como el de zend me ayudo a desarrollarla, claro la que hice esta super sencilla con validaciones simples, indicando la regla en un array por cada campo, puedes verla aca , aunque tengo tiempo sin modificarla por el uso de los componentes de los fw, saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #3 (permalink)  
Antiguo 04/11/2011, 15:00
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años, 6 meses
Puntos: 394
Respuesta: [APORTE] Clase para validar datos

Pero para eso no esta el método validarVacios ?

Código PHP:
Ver original
  1. <?php
  2. /* USANDO LA CLASE */
  3. require_once('validateForms.php');
  4. $objt = new ValidarFormularios;
  5.  
  6.  
  7. // VALIDANDO QUE NO ESTE VACIO Y QUE SEA ENTERO
  8. $contenido = "2";
  9. if ($objt->ValidarVacios($contenido) === FALSE){
  10.     $resultado = $objt->validarEnteros($contenido, 2, 99);
  11.     // hago lo que sea con el resultado
  12. }
  13. ?>
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???

Última edición por jotaincubus; 04/11/2011 a las 15:45

Etiquetas: clase, formulario, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 2 personas




La zona horaria es GMT -6. Ahora son las 14:10.