LoginLogoff
Project loginlogoff
Loading...
Searching...
No Matches
231018libreriaValidacion.php
Go to the documentation of this file.
1<?php
2
10
36class validacionFormularios { //ELIMINA EL METODO VALIDATEDATE Y LO INCLUYE EN VALIDAR FECHA, ELIMINACION DE VALIDAR CHECKBOX Y RADIOB, MEJORA GENERAL DE RESPUESTA, INCLUSION DE PARAMETROS PREDEFINIDOS Y MEJORAS SUSTANCIALES EN ALGUNOS METODOS
37
54
55 public static function comprobarAlfabetico($cadena, $maxTamanio = 1000, $minTamanio = 1, $obligatorio = 0) { //AÑADIDOS VALORES POR DEFECTO Y MEJORADA LA RESPUESTA
56 // Patrón para campos de solo texto
57 $patron_texto = "/^[a-zA-ZáéíóúÁÉÍÓÚäëïöüÄËÏÖÜàèìòùÀÈÌÒÙñÑ\s]+$/";
58 $cadena = htmlspecialchars(strip_tags(trim((string) $cadena)));
59 $mensajeError = null;
60
61 //Si es olbigatorio se comprueba si está vacío, si no es obligatorio, no es necesario
62 if ($obligatorio == 1) {
63 $mensajeError = self::comprobarNoVacio($cadena);
64 }
65
66 //Comprobación de que la cadena introducida coincide con la sintaxis permitida del patrón
67 if (!preg_match($patron_texto, $cadena) && !empty($cadena)) {
68 $mensajeError = " Solo se admiten letras.";
69 }
70 $mensajeError .= self::comprobarMaxTamanio($cadena, $maxTamanio);
71 $mensajeError .= self::comprobarMinTamanio($cadena, $minTamanio);
72 return $mensajeError;
73 }
74
75// Función para comprobar un campo AlfaNumerico
76// Return nada si es correcto, si hay errores devuelve un mensaje de error
77// Si es un 1 es obligatorio, si es un 0 no lo es
78
94 public static function comprobarAlfaNumerico($cadena, $maxTamanio = 1000, $minTamanio = 1, $obligatorio = 0) { //AÑADIDOS VALORES POR DEFECTO Y MEJORADA LA RESPUESTA
95 $cadena = htmlspecialchars(strip_tags(trim((string) $cadena)));
96 $mensajeError = null;
97 //Si es obligatorio se hace la comprobación de que no está vacío
98 if ($obligatorio == 1 && $cadena != '0') {
99 $mensajeError = self::comprobarNoVacio($cadena);
100 }
101 $mensajeError .= self::comprobarMaxTamanio($cadena, $maxTamanio);
102 $mensajeError .= self::comprobarMinTamanio($cadena, $minTamanio);
103 return $mensajeError;
104 }
105
106// Función para comprobar si es un campo entero
107// Return null es correcto, si no muestra el mensaje de error
108// Si es un 1 es obligatorio, si es un 0 no lo es
109
124 public static function comprobarEntero($integer, $max = PHP_INT_MAX, $min = -PHP_INT_MAX, $obligatorio = 0) { //AÑADIDOS VALORES POR DEFECTO Y AHORA DETECTA EL 0
125 $mensajeError = null;
126
127 if ($obligatorio == 1 && $integer != '0') {
128 $mensajeError = self::comprobarNoVacio($integer);
129 }
130
131 if (($obligatorio == 0 && $integer != null) || ($obligatorio == 1 && empty($mensajeError))) {//COMPROBAMOS QUE SI ES OPCIONAL, NO ESTÉ VACÍO Y SI ES OBLIGATORIO QUE NO HAYA GUARDADO UN MENSAJE DE ERROR ANTERIOR (QUE EL CAMPO NO ESTÉ VACÍO)
132 $integer = str_replace('.', ',', $integer); //SI SE HA INTRODUCIDO UN NÚMERO CON '.'(FLOAT), SUSTITUIMOS EL PUNTO POR UNA COMA PARA QUE SEA UN STRING
133 if (!is_numeric($integer)) { //SI NO ES UN NÚMERO O STRING NUMÉRICO
134 $mensajeError = "El campo no es un entero. ";
135 } else {
136 if ($integer > $max) {
137 $mensajeError = $mensajeError . "El número no puede ser mayor que " . $max . ".";
138 }
139 if ($integer < $min) {
140 $mensajeError = $mensajeError . "El número no puede ser menor que " . $min . ".";
141 }
142 }
143 }
144
145 return $mensajeError;
146 }
147
148// Función para comprobar si es un campo float
149// Return null es correcto, si no muestra el mensaje de error
150// Si es un 1 es obligatorio, si es un 0 no lo es
151
165 public static function comprobarFloat($float, $max = PHP_FLOAT_MAX, $min = -PHP_FLOAT_MAX, $obligatorio = 0) { //AÑADIDOS VALORES POR DEFECTO Y AHORA DETECTA 0
166 $mensajeError = null;
167 if ($obligatorio == 1 && $float != '0') {
168 $mensajeError = self::comprobarNoVacio($float);
169 }
170
171 if (($obligatorio == 0 && $float != null) || ($obligatorio == 1 && empty($mensajeError))) {//COMPROBAMOS QUE SI ES OPCIONAL, NO ESTÉ VACÍO Y SI ES OBLIGATORIO QUE NO HAYA GUARDADO UN MENSAJE DE ERROR ANTERIOR (QUE EL CAMPO NO ESTÉ VACÍO)
172 if (!is_numeric($float)) {//SI NO ES UN NÚMERO O STRING NUMÉRICO
173 $mensajeError = "El campo no es un decimal. (Debe llevar punto(.) entre la parte entera y la parte decimal)";
174 } else {
175 if ($float > $max) {
176 $mensajeError = $mensajeError . "El número no puede ser mayor que " . $max . ".";
177 }
178 if ($float < $min) {
179 $mensajeError = $mensajeError . "El número no puede ser menor que " . $min . ".";
180 }
181 }
182 }
183 return $mensajeError;
184 }
185
186// Función para comprobar si es un correo electronico
187// Return nada si es correcto, si hay errores devuelve un mensaje de error
188// Si es un 1 es obligatorio, si es un 0 no lo es
189
203 public static function validarEmail($email, $obligatorio = 0) { //ELIMINADoS MAX Y MIN, IMPLEMENTACION DE PARAMETRO POR DEFECTO Y MEJORADA LA RESPUESTA
204 $mensajeError = null;
205
206 //Compruebo si está vacío cuadno es obligatorio
207 if ($obligatorio == 1) {
208 $mensajeError = self::comprobarNoVacio($email);
209 }
210
211 //Comprobación de que la sintaxis del correo introducido es correcta
212 if (!filter_var($email, FILTER_VALIDATE_EMAIL) && !empty($email)) { //HE SIMPLIFICADO ESTO
213 $mensajeError = " Formato de correo incorrecto(Ejemplo: tunombre@hotmail.com).";
214 }
215 return $mensajeError;
216 }
217
218// Función para comprobar si es una url, local o no
219// Devuelve null si es correcto, sino muestra el mensaje de error
220// Si el parámetro $obligatorio es un 1 es obligatorio, si es un 0 es opcional
221
232 public static function validarURL($url, $obligatorio = 0) { //MEJORADA LA RESPUESTA Y ASIGNADO VALOR POR DEFECTO
233 $mensajeError = null;
234 if ($obligatorio == 1) {
235 $mensajeError = self::comprobarNoVacio($url);
236 }
237 if (!filter_var($url, FILTER_VALIDATE_URL) && !empty($url)) {
238 $mensajeError = "Formato incorrecto de URL.";
239 }
240 return $mensajeError;
241 }
242
254 public static function validarFecha($fecha, $fechaMaxima = '01/01/2200', $fechaMinima = "01/01/1900", $obligatorio = 0) { //REDISEÑO TOTAL Y AÑADIDOS PARAMETROS INICIALES
255 $mensajeError = null;
256 $fechaMaxima = strtotime($fechaMaxima); //PASAR A TIMESTAMP PARA PODER OPERAR
257 $fechaMinima = strtotime($fechaMinima);
258 if ($obligatorio == 1) {
259 $mensajeError = self::comprobarNoVacio($fecha);
260 }
261 $fechaFormateada = strtotime($fecha); //CREAR FECHA PARA TRABAJAR CON LAS FUNCIONES DE PHP
262
263 if (is_bool($fechaFormateada) && !empty($fecha)) {
264 $mensajeError = " Formato incorrecto de fecha (Año-Mes-dia) (2000-01-01).";
265 } else {
266 if (!empty($fecha) && ($fechaFormateada < $fechaMinima) || ($fechaFormateada > $fechaMaxima)) {
267 $mensajeError = " Por favor introduzca una fecha entre " . date('d/m/Y', $fechaMinima) . " y " . date('d/m/Y', $fechaMaxima) . ".";
268 }
269 }
270 return $mensajeError;
271 }
272
284 public static function validarDni($dni, $obligatorio = 0) { //AÑADIDO VALOR POR DEFECTO Y MEJORADA LA SALIDA
285 $mensajeError = null;
286 $letra = substr($dni, -1);
287 $numeros = substr($dni, 0, -1);
288 if ($obligatorio == 1) {
289 $mensajeError = self::comprobarNoVacio($dni);
290 }
291 if (!is_numeric($letra) && is_numeric($numeros)) {
292 if ((substr("TRWAGMYFPDXBNJZSQVHLCKE", $numeros % 23, 1) != $letra || strlen($letra) != 1 || strlen($numeros) != 8) && !empty($dni)) {
293 $mensajeError = " El DNI no es válido.";
294 }
295 } else {
296 if (!empty($dni)) {
297 $mensajeError = " El DNI no es válido.";
298 }
299 }
300 return $mensajeError;
301 }
302
303 // Valida el código postal, si es opcional da por válido que sea correcto o este vacío, si es obligatorio solo da por válido que esté correcto
304
316 public static function validarCp($cp, $obligatorio = 0) { //AÑADIDO PARAMETRO INDEFINIDO Y SALIDA MEJORADA
317 $mensajeError = null;
318 if ($obligatorio == 1) {
319 $mensajeError = self::comprobarNoVacio($cp);
320 }
321
322 if (!preg_match('/^[0-9]{5}$/i', $cp) && !empty($cp)) {
323 $mensajeError = " El código postal no es válido.";
324 }
325 return $mensajeError;
326 }
327
328 // Valida el password, comprueba longitud y si al menos contiene una mayúscula y un número, si es opcional da por válido que sea correcto o este vacío, si es obligatorio solo da por válido que esté correcto
329
345 public static function validarPassword($passwd, $maximo = 16, $minimo = 2, $tipo = 3, $obligatorio = 1) { //CAMBIADO ORDEN DE LOS PARAMETROS, AÑADIDOS PARAMETROS PREDEFINIDOS Y MEJORADA LA RESPUESTA
346 $mensajeError = null;
347 if ($obligatorio == 1) {
348 $mensajeError = self::comprobarNoVacio($passwd);
349 }
350 if (strlen($passwd) < $minimo && !empty($passwd)) {
351 $mensajeError = " La contraseña debe ser de al menos " . $minimo . " caracteres.";
352 }
353 if (strlen($passwd) > $maximo && !empty($passwd)) {
354 $mensajeError = " La contraseña debe tener como maximo " . $maximo . " caracteres.";
355 }
356 if (!empty($passwd) && $mensajeError == null) {
357 switch ($tipo) {
358 case 1:
359 $mensajeError = self::comprobarAlfabetico($passwd, $maximo, $minimo, $obligatorio);
360 break;
361 case 2:
362 $mensajeError = self::comprobarAlfaNumerico($passwd, $maximo, $minimo, $obligatorio);
363 break;
364 case 3:
365 if ((!preg_match("`[A-Z]`", $passwd) || !preg_match("`[0-9]`", $passwd)) && !empty($passwd)) {
366 $mensajeError .= " La contraseña debe contener una mayúscula y un número.";
367 }
368 break;
369 }
370 }
371
372 return $mensajeError;
373 }
374
375// Función para validar si no esta vacio
376// Return null si está vacío el mensajeError, cadena con error si es que lo hay
377// Función para validar si no esta vacio
378// Return false esta vacio, true no esta vacio
379
391 public static function comprobarNoVacio($cadena) {
392 $mensajeError = null;
393 $cadena = htmlspecialchars(strip_tags(trim($cadena)));
394
395 if (empty($cadena)) {
396 $mensajeError = " Campo vacío.";
397 }
398 return $mensajeError;
399 }
400
401// Función para tamaño maximo
402// Si tamaño es 0 significa que no tiene limite
403// Return false no es correcto, true es correcta
404
417 public static function comprobarMaxTamanio($cadena, $tamanio) {
418 $mensajeError = null;
419 if (strlen($cadena) > $tamanio) {
420 $mensajeError = " El tamaño máximo es de " . $tamanio . " caracteres.";
421 }
422 return $mensajeError;
423 }
424
425// Función para tamaño minimo
426// Si el tamaño es 0 significa que no tiene limite
427// Return false no es correcto, true es correcta
428
441 public static function comprobarMinTamanio($cadena, $tamanio) {
442 $mensajeError = null;
443 if (strlen($cadena) < $tamanio && strlen($cadena) > 0) { //AÑADIDA SEGUNDA COMPROBACIÓN. Para que cuando el campo esté vacío no muestre este mensaje, sólo cuando haya mínimo 1 caracter para advertir del tamaño mínimo
444 $mensajeError = " El tamaño mínimo es de " . $tamanio . " caracteres.";
445 }
446 return $mensajeError;
447 }
448
459 public static function validarElementoEnLista($elementoElegido, $aOpciones) { //NO TIENE SENTIDO HACER UNA LISTA NO OBLIGATORIA
460 $mensajeError = null; //Inicializa el mensaje de error a null.
461
462 if (!in_array($elementoElegido, $aOpciones)) {
463 $mensajeError = " El elemento no se encuentra entre los posibles valores.";
464 }
465 return $mensajeError; //Devuelve el mensaje de error.
466 }
467
482 public static function validarTelefono($tel, $obligatorio = 0) { //AÑADIDO PARAMETRO POR DEFECTO, MEJORADA LA FUNCIONALIDAD Y LA SALIDA
483 $mensajeError = null;
484 $patron = "/^[6|7|9][0-9]{8}$/";
485 if ($obligatorio == 1) {
486 $mensajeError = self::comprobarNoVacio($tel);
487 }
488 if (!preg_match($patron, $tel) && !empty($tel)) {
489 $mensajeError .= " El telefono debe comenzar por 6,7 o 9 y a continuación 8 dígitos del 0 al 9.";
490 }
491 return $mensajeError;
492 }
493
508 public static function validarNombreArchivo($nombreArchivo, $aExtensiones, $maxTamanio = 150, $minTamanio = 4, $obligatorio = 0) {
509 // Validación del texto del nombre del archivo.
510 $mensajeError = self::comprobarAlfaNumerico($nombreArchivo, $maxTamanio, $minTamanio, $obligatorio);
511
512 /* Si el nombre de archivo no está vacío (es decir, se ha enviado uno),
513 * comprueba si la extensión está entre las admitidas.
514 * En el caso que el campo fuese obligatorio, ya se habría validado en la
515 * función comprobarAlfaNumerico.
516 */
517 if(!empty($nombreArchivo)){
518 $sExtension = substr($nombreArchivo, strpos($nombreArchivo, '.') + 1);
519 if (!in_array($sExtension, $aExtensiones)) {
520 $mensajeError = "El archivo no tiene una extensión válida. Sólo se admite ".implode(', ', $aExtensiones).".";
521 }
522 }
523 return $mensajeError;
524 }
525}
526
527?>
static validarDni($dni, $obligatorio=0)
static comprobarMaxTamanio($cadena, $tamanio)
static validarEmail($email, $obligatorio=0)
static validarTelefono($tel, $obligatorio=0)
static comprobarAlfaNumerico($cadena, $maxTamanio=1000, $minTamanio=1, $obligatorio=0)
static comprobarEntero($integer, $max=PHP_INT_MAX, $min=-PHP_INT_MAX, $obligatorio=0)
static validarFecha($fecha, $fechaMaxima='01/01/2200', $fechaMinima="01/01/1900", $obligatorio=0)
static validarElementoEnLista($elementoElegido, $aOpciones)
static validarCp($cp, $obligatorio=0)
static validarNombreArchivo($nombreArchivo, $aExtensiones, $maxTamanio=150, $minTamanio=4, $obligatorio=0)
static comprobarAlfabetico($cadena, $maxTamanio=1000, $minTamanio=1, $obligatorio=0)
static comprobarMinTamanio($cadena, $tamanio)
static validarURL($url, $obligatorio=0)
static validarPassword($passwd, $maximo=16, $minimo=2, $tipo=3, $obligatorio=1)
static comprobarFloat($float, $max=PHP_FLOAT_MAX, $min=-PHP_FLOAT_MAX, $obligatorio=0)