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
<?php class ValidarFormularios{ private $resultado; public function __construct(){ } // VALIDANDO CAMPOS VACIOS public function validarVacios($campo){ $resultado = TRUE; }else{ $resultado = FALSE; } return $resultado; } // VALIDANDO CORREOS public function validarCorreo($correo){ return $resultado; } // VALIDANDO ENTEROS // CERO Y MENOS CERO NO SON ENTEROS VALIDOS public function validarEnteros($entero, $min, $max){ ( "min_range" => $min, "max_range" => $max) ); return $resultado; } // VALIDANDO BOLEANOS // RETORNA TRUE PARA 1, TRUE, ON, YES // EN OTROS CASOS RETORNARA FALSE public function validarBoleanos($boleano){ return $resultado; } // VALIDANDO NUMEROS DE PUNTO FLOTANTE (DECIMALES) public function validarFlotante($flotante){ // si se quiere usar un numero con miles y punto flotante (1.238,32) se usa esta condicion // (!filter_var($flotante, FILTER_VALIDATE_FLOAT, array('options' => array('decimal' => ','), 'flags' => FILTER_FLAG_ALLOW_THOUSAND))) return $resultado; } // VALIDANDO UNA IP // en version se le debe pasar como parametro el tipo de ip FILTER_FLAG_IPV4 - FILTER_FLAG_IPV6 public function validarIP($ip, $version){ return $resultado; } // VALIDANDO CON EXPRESIONES REGULARES // VERIFICA QUE EL CONTENIDO CONCUERDE CON LA EXPRESION REGULAR /* $expresion = '/^M(.*)/'; si se le pasa una cadena de texto que comience con M el resultado sera positivo */ public function ValidarExpRegular($contenido, $expresion){ // para pasarle las opciones al filtro return $resultado; } // VALIDANDO UNA URL /* $opcion = FILTER_FLAG_SCHEME_REQUIRED - ejemplo: http://pagina FILTER_FLAG_SCHEME_REQUIRED - ejemplo: http://www.pagina.com FILTER_FLAG_PATH_REQUIRED - ejemplo: www.example.com/example1/test2/ FILTER_FLAG_QUERY_REQUIRED - ejmemplo: pagina.php?nombre=Juan&edad=37 */ public function validarURL($url, $opcion){ return $resultado; } // VALIDANDO QUE UN CAMPO EXISTA SI OTRO ESTA DEFINIDO Y CON UN VALOR /* si el campo 1 existe y tiene un valor, validar el numero 2 $validar tendra el filtro que se quiere aplicar $campo2 es el campo que se quiere validar */ public function validarDosCampos($campo1, $valor, $validar, $campo2){ switch($validar){ case 'FILTER_VALIDATE_BOOLEAN': break; case 'FILTER_VALIDATE_EMAIL': break; case 'FILTER_VALIDATE_FLOAT': break; case 'FILTER_VALIDATE_INT': break; case 'FILTER_VALIDATE_IP': break; case 'FILTER_VALIDATE_REGEXP': filter_var($contenido, FILTER_VALIDATE_REGEXP, array("options"=>array("regexp"=>"/^M(.*)/"))) ? $resultado = TRUE : $resultado = FALSE; break; case 'FILTER_VALIDATE_URL': break; default: $resultado = FALSE; break; } }else{ $resultado = FALSE; } return $resultado; } } ?>
Unos ejemplos de su uso:
probando.php
Código PHP:
Ver original
<?php /* USANDO LA CLASE */ require_once('validateForms.php'); $objt = new ValidarFormularios; // VALIDANDO QUE NO ESTE VACIO // imprime 'El contenido SI esta vacio' porque $contenido no tiene nada de nada $contenido = ""; if ($objt->ValidarVacios($contenido) === TRUE){ echo 'El contenido NO esta vacio <br />'; }else{ echo 'El contenido SI esta vacio <br />'; } // VALIDANDO CORREOS // imprime 'El contenido SI es un correo electronico' porque contenido tiene un mail valido if ($objt->ValidarCorreo($contenido) === TRUE){ echo 'El contenido SI es un correo electronico <br />'; }else{ echo 'El contenido NO es un correo electronico <br />'; } // VALIDANDO ENTEROS // 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 $contenido = "1"; if ($objt->validarEnteros($contenido, 2, 99) === TRUE){ echo 'El contenido SI es un entero valido <br />'; }else{ echo 'El contenido NO es un entero valido <br />'; } // VALIDANDO BOLEANOS // imprime echo 'El contenido SI es un boleano' ya que YES esta dentro de los paramentros de un boleano $contenido = "YES"; if ($objt->validarBoleanos($contenido) === TRUE){ echo 'El contenido SI es un boleano <br />'; }else{ echo 'El contenido NO es un boleano <br />'; } // VALIDANDO NUMEROS DE PUNTO FLOTANTE (DECIMALES) // imprime echo 'El contenido NO es un decimal' ya que dentro de las opciones colocamos que el separador de decimales es la coma $contenido = "1.23"; if ($objt->validarFlotante($contenido) === TRUE){ echo 'El contenido SI es un decimal <br />'; }else{ echo 'El contenido NO es un decimal <br />'; } // VALIDANDO UNA IP // imprime 'El contenido SI es una direccion IP' ya que la direccion IP es valida y es version 4 $contenido = "192.168.0.1"; if ($objt->validarIP($contenido, 'FILTER_FLAG_IPV4') === TRUE){ echo 'El contenido SI es una direccion IP <br />'; }else{ echo 'El contenido NO es una direccion IP <br />'; } // VALIDANDO CON EXPRESIONES REGULARES // imprime 'El contenido NO empieza con la letra M' ya que Papa empieza con P $contenido = "Papa"; if ($objt->ValidarExpRegular($contenido, '/^M(.*)/') === TRUE){ echo 'El contenido SI empieza con la letra M <br />'; }else{ echo 'El contenido NO empieza con la letra M <br />'; } // VALIDANDO UNA URL // imprime 'El contenido SI es una URL valida' ya que contenido si es valido $contenido = "http://www.prueba.com"; if ($objt->ValidarURL($contenido, 'FILTER_FLAG_SCHEME_REQUIRED') === TRUE){ echo 'El contenido SI es una URL valida <br />'; }else{ echo 'El contenido NO es una URL valida <br />'; } // VALIDANDO QUE UN CAMPO EXISTA SI OTRO ESTA DEFINIDO Y CON UN VALOR $contenido1 = "1"; $contenido2 = "1238"; if ($objt->validarDosCampos($contenido1, 1, 'FILTER_VALIDATE_INT', $contenido2) === TRUE){ echo 'El contenido2 si es un numero entero <br />'; }else{ echo 'El contenido2 NO es un numero entero <br />'; } ?>
Espero que les sirva, cualquier comentario actualización o mejora sera bienvenida.
Juan Esteban