]> git.llucax.com Git - z.facultad/75.43/tp1.git/blob - src/lib/validacion.php
Se agregan nuevas validaciones.
[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 require_once 'lib/Usuario.php';
13
14 /**
15  * Devuelve 1 si el campo f tiene más de max caracteres, -1 si tiene menos
16  *  de min caracteres y 0 si está entre max y min. Si max o min es negativo,
17  * no se chequea por un máximo o mínimo respectivamente.
18  */
19 function min_max_cant($f, $min, $max)
20 {
21     if ($min >= 0 && strlen($f) < $min) return -1;
22     if ($max >= 0 && strlen($f) > $max) return 1;
23     return 0;
24 }
25
26 /// Valida que el campo sea una dirección de e-mail.
27 function es_email($f)
28 {
29     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;
30     return false;
31 }
32
33 /// Verifica si el campo f está vacío, dando un error con el nombre n si lo está.
34 function check_vacio($f, $n)
35 {
36     if (!trim($f))
37     {
38         error("Falta ingresar el campo $n!");
39         return false;
40     }
41     return true;
42 }
43
44 /**
45  * Verifica si el campo f tiene entre max y min caracteres (ver min_max_cant).
46  * Si hay un error se usa el nombre de campo n para el mensaje.
47  */
48 function check_min_max_cant($f, $n, $min, $max)
49 {
50     switch (min_max_cant($f, $min, $max))
51     {
52         case 1:
53             error("El campo $n debe tener a lo sumo $max caracteres!");
54             return false;
55         case -1:
56             error("El campo $n debe tener al menos $min caracteres!");
57             return false;
58     }
59     return true;
60 }
61
62 /**
63  * Verifica si los campos f1 y f2 son iguales. Si no lo son se usa el nombrei
64  * n para el mensaje de error.
65  */
66 function check_iguales($f1, $f2, $n)
67 {
68     if ($f1 != $f2)
69     {
70         error("No coinciden los valores del campo $n!");
71         return false;
72     }
73     return true;
74 }
75
76 /**
77  * Verifica si los campos f1 y f2 son iguales. Si no lo son se usa el nombrei
78  * n para el mensaje de error.
79  */
80 function check_email($f, $n)
81 {
82     if (!es_email($f))
83     {
84         error("$f no es una dirección de e-mail válida!");
85         return false;
86     }
87     return true;
88 }
89
90 /// Verifica que un upload sea correcto y el archivo sea de alguno de los tipos
91 function check_file_upload($file, $nombre = 'El archivo', $types = array())
92 {
93     switch ($file['error'])
94     {
95         case 1: //UPLOAD_ERR_INI_SIZE:
96         case 2: //UPLOAD_ERR_FORM_SIZE:
97             error($nombre.' es demasiado grande!');
98             return false;
99         case 3: //UPLOAD_ERR_PARTIAL:
100             error($nombre.' no llegó bien (se interrumpió la transmisión)!');
101             return false;
102         case 4: //UPLOAD_ERR_NO_FILE:
103             error('Debe especificar '.strtolower($nombre).'!');
104             return false;
105         case 5: //UPLOAD_ERR_NO_TMP_DIR:
106             error($nombre.'Error interno (no existe el directorio de upload)!');
107             return false;
108     }
109     if ($types and !in_array($file['type'], $types))
110     {
111         error($nombre.' debe ser del tipo '.join(' o ', $types).'!');
112         return false;
113     }
114     return true;
115 }
116
117 /// Verifica que una fecha sea válida.
118 function check_fecha($anio, $mes, $dia)
119 {
120     if (!preg_match('/^\d{4}$/', $anio) or $anio > date('Y') or $anio < 2000)
121     {
122         error('El año no es válido!');
123         return false;
124     }
125     if ($mes < 1 or $mes > 12)
126     {
127         error('El mes no es válido!');
128         return false;
129     }
130     if ($dia < 1 or $mes > 31)
131     {
132         error('El día no es válido!');
133         return false;
134     }
135     return true;
136 }
137
138 /// Verifica que sea un número entero.
139 function check_numero($n)
140 {
141     if (preg_match('/^\d+$/', $n)) return true;
142     error("$n no es un número entero!");
143     return false;
144 }
145
146 /// Verifica que sea un número de registro de un asociado.
147 function check_asociado($user)
148 {
149     if (Usuario::asociado($user)) return true;
150     error("$user no es un número de registro de un usuario asociado!");
151     return false;
152 }
153
154 /// Verifica que sea la password correcta.
155 function check_password($user, $pass)
156 {
157     if (Usuario::validar($user, $pass)) return true;
158     error('Contraseña incorrecta!');
159     return false;
160 }
161
162 ?>