]> git.llucax.com Git - z.facultad/75.43/tp1.git/blob - src/lib/validacion.php
Pongo comentarios y agrego función check_file_upload() para validar upload de archivos.
[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 function es_email($f)
26 {
27     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;
28     return false;
29 }
30
31 /// Verifica si el campo f está vacío, dando un error con el nombre n si lo está.
32 function check_vacio($f, $n)
33 {
34     if (!trim($f))
35     {
36         error("Falta ingresar el campo $n!");
37         return false;
38     }
39     return true;
40 }
41
42 /**
43  * Verifica si el campo f tiene entre max y min caracteres (ver min_max_cant).
44  * Si hay un error se usa el nombre de campo n para el mensaje.
45  */
46 function check_min_max_cant($f, $n, $min, $max)
47 {
48     switch (min_max_cant($f, $min, $max))
49     {
50         case 1:
51             error("El campo $n debe tener a lo sumo $max caracteres!");
52             return false;
53         case -1:
54             error("El campo $n debe tener al menos $min caracteres!");
55             return false;
56     }
57     return true;
58 }
59
60 /**
61  * Verifica si los campos f1 y f2 son iguales. Si no lo son se usa el nombrei
62  * n para el mensaje de error.
63  */
64 function check_iguales($f1, $f2, $n)
65 {
66     if ($f1 != $f2)
67     {
68         error("No coinciden los valores del campo $n!");
69         return false;
70     }
71     return true;
72 }
73
74 /**
75  * Verifica si los campos f1 y f2 son iguales. Si no lo son se usa el nombrei
76  * n para el mensaje de error.
77  */
78 function check_email($f, $n)
79 {
80     if (!es_email($f))
81     {
82         error("$f no es una dirección de e-mail válida!");
83         return false;
84     }
85     return true;
86 }
87
88 /// Verifica que un upload sea correcto y el archivo sea de alguno de los tipos
89 function check_file_upload($file, $nombre = 'El archivo', $types = array())
90 {
91     d($file);
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 ?>