]> git.llucax.com Git - z.facultad/75.43/tp1.git/blob - src/lib/validacion.php
Nueva función para validar (muy livianamente) una fecha.
[z.facultad/75.43/tp1.git] / src / lib / validacion.php
1 <?php
2 // vim: set binary noeol et sw=4 sts=4 :
3 // Grupo 10
4 //
5 // Lucarella, Schein, Arena
6 //
7 // Creado: Leandro Lucarella (dom may  1 00:46:42 ART 2005)
8 //
9 // $Id$
10
11 require_once 'lib/pagina.php';
12
13 /**
14  * Devuelve 1 si el campo f tiene más de max caracteres, -1 si tiene menos
15  *  de min caracteres y 0 si está entre max y min. Si max o min es negativo,
16  * no se chequea por un máximo o mínimo respectivamente.
17  */
18 function min_max_cant($f, $min, $max)
19 {
20     if ($min >= 0 && strlen($f) < $min) return -1;
21     if ($max >= 0 && strlen($f) > $max) return 1;
22     return 0;
23 }
24
25 /// Valida que el campo sea una dirección de e-mail.
26 function es_email($f)
27 {
28     if (preg_match('/^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/', $f)) return true;
29     return false;
30 }
31
32 /// Verifica si el campo f está vacío, dando un error con el nombre n si lo está.
33 function check_vacio($f, $n)
34 {
35     if (!trim($f))
36     {
37         error("Falta ingresar el campo $n!");
38         return false;
39     }
40     return true;
41 }
42
43 /**
44  * Verifica si el campo f tiene entre max y min caracteres (ver min_max_cant).
45  * Si hay un error se usa el nombre de campo n para el mensaje.
46  */
47 function check_min_max_cant($f, $n, $min, $max)
48 {
49     switch (min_max_cant($f, $min, $max))
50     {
51         case 1:
52             error("El campo $n debe tener a lo sumo $max caracteres!");
53             return false;
54         case -1:
55             error("El campo $n debe tener al menos $min caracteres!");
56             return false;
57     }
58     return true;
59 }
60
61 /**
62  * Verifica si los campos f1 y f2 son iguales. Si no lo son se usa el nombrei
63  * n para el mensaje de error.
64  */
65 function check_iguales($f1, $f2, $n)
66 {
67     if ($f1 != $f2)
68     {
69         error("No coinciden los valores del campo $n!");
70         return false;
71     }
72     return true;
73 }
74
75 /**
76  * Verifica si los campos f1 y f2 son iguales. Si no lo son se usa el nombrei
77  * n para el mensaje de error.
78  */
79 function check_email($f, $n)
80 {
81     if (!es_email($f))
82     {
83         error("$f no es una dirección de e-mail válida!");
84         return false;
85     }
86     return true;
87 }
88
89 /// Verifica que un upload sea correcto y el archivo sea de alguno de los tipos
90 function check_file_upload($file, $nombre = 'El archivo', $types = array())
91 {
92     switch ($file['error'])
93     {
94         case 1: //UPLOAD_ERR_INI_SIZE:
95         case 2: //UPLOAD_ERR_FORM_SIZE:
96             error($nombre.' es demasiado grande!');
97             return false;
98         case 3: //UPLOAD_ERR_PARTIAL:
99             error($nombre.' no llegó bien (se interrumpió la transmisión)!');
100             return false;
101         case 4: //UPLOAD_ERR_NO_FILE:
102             error('Debe especificar '.strtolower($nombre).'!');
103             return false;
104         case 5: //UPLOAD_ERR_NO_TMP_DIR:
105             error($nombre.'Error interno (no existe el directorio de upload)!');
106             return false;
107     }
108     if ($types and !in_array($file['type'], $types))
109     {
110         error($nombre.' debe ser del tipo '.join(' o ', $types).'!');
111         return false;
112     }
113     return true;
114 }
115
116 /// Verifica que una fecha sea válida.
117 function check_fecha($anio, $mes, $dia)
118 {
119     if (!preg_match('/^\d{4}$/', $anio) or $anio > date('Y') or $anio < 2000)
120     {
121         error('El año no es válido!');
122         return false;
123     }
124     if ($mes < 1 or $mes > 12)
125     {
126         error('El mes no es válido!');
127         return false;
128     }
129     if ($dia < 1 or $mes > 31)
130     {
131         error('El día no es válido!');
132         return false;
133     }
134     return true;
135 }
136
137 ?>