]> git.llucax.com Git - z.facultad/75.43/tp1.git/blobdiff - src/lib/validacion.php
Nueva función para validar (muy livianamente) una fecha.
[z.facultad/75.43/tp1.git] / src / lib / validacion.php
index c15a5047878f1badceaf554e14c35f3666ba4c1a..c3a5d9710adb969d4d51931616f66e7cf914fe68 100644 (file)
 
 require_once 'lib/pagina.php';
 
-// Devuelve 1 si el campo f tiene más de max caracteres, -1 si tiene menos
-// de min caracteres y 0 si está entre max y min. Si max o min es negativo,
-// no se chequea por un máximo o mínimo respectivamente.
+/**
+ * Devuelve 1 si el campo f tiene más de max caracteres, -1 si tiene menos
+ *  de min caracteres y 0 si está entre max y min. Si max o min es negativo,
+ * no se chequea por un máximo o mínimo respectivamente.
+ */
 function min_max_cant($f, $min, $max)
 {
     if ($min >= 0 && strlen($f) < $min) return -1;
@@ -20,13 +22,14 @@ function min_max_cant($f, $min, $max)
     return 0;
 }
 
+/// Valida que el campo sea una dirección de e-mail.
 function es_email($f)
 {
     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;
     return false;
 }
 
-// Verifica si el campo f está vacío, dando un error con el nombre n si lo está.
+/// Verifica si el campo f está vacío, dando un error con el nombre n si lo está.
 function check_vacio($f, $n)
 {
     if (!trim($f))
@@ -37,8 +40,10 @@ function check_vacio($f, $n)
     return true;
 }
 
-// Verifica si el campo f tiene entre max y min caracteres (ver min_max_cant).
-// Si hay un error se usa el nombre de campo n para el mensaje.
+/**
+ * Verifica si el campo f tiene entre max y min caracteres (ver min_max_cant).
+ * Si hay un error se usa el nombre de campo n para el mensaje.
+ */
 function check_min_max_cant($f, $n, $min, $max)
 {
     switch (min_max_cant($f, $min, $max))
@@ -53,8 +58,10 @@ function check_min_max_cant($f, $n, $min, $max)
     return true;
 }
 
-// Verifica si los campos f1 y f2 son iguales. Si no lo son se usa el nombrei
-// n para el mensaje de error.
+/**
+ * Verifica si los campos f1 y f2 son iguales. Si no lo son se usa el nombrei
+ * n para el mensaje de error.
+ */
 function check_iguales($f1, $f2, $n)
 {
     if ($f1 != $f2)
@@ -65,8 +72,10 @@ function check_iguales($f1, $f2, $n)
     return true;
 }
 
-// Verifica si los campos f1 y f2 son iguales. Si no lo son se usa el nombrei
-// n para el mensaje de error.
+/**
+ * Verifica si los campos f1 y f2 son iguales. Si no lo son se usa el nombrei
+ * n para el mensaje de error.
+ */
 function check_email($f, $n)
 {
     if (!es_email($f))
@@ -77,4 +86,52 @@ function check_email($f, $n)
     return true;
 }
 
+/// Verifica que un upload sea correcto y el archivo sea de alguno de los tipos
+function check_file_upload($file, $nombre = 'El archivo', $types = array())
+{
+    switch ($file['error'])
+    {
+        case 1: //UPLOAD_ERR_INI_SIZE:
+        case 2: //UPLOAD_ERR_FORM_SIZE:
+            error($nombre.' es demasiado grande!');
+            return false;
+        case 3: //UPLOAD_ERR_PARTIAL:
+            error($nombre.' no llegó bien (se interrumpió la transmisión)!');
+            return false;
+        case 4: //UPLOAD_ERR_NO_FILE:
+            error('Debe especificar '.strtolower($nombre).'!');
+            return false;
+        case 5: //UPLOAD_ERR_NO_TMP_DIR:
+            error($nombre.'Error interno (no existe el directorio de upload)!');
+            return false;
+    }
+    if ($types and !in_array($file['type'], $types))
+    {
+        error($nombre.' debe ser del tipo '.join(' o ', $types).'!');
+        return false;
+    }
+    return true;
+}
+
+/// Verifica que una fecha sea válida.
+function check_fecha($anio, $mes, $dia)
+{
+    if (!preg_match('/^\d{4}$/', $anio) or $anio > date('Y') or $anio < 2000)
+    {
+        error('El año no es válido!');
+        return false;
+    }
+    if ($mes < 1 or $mes > 12)
+    {
+        error('El mes no es válido!');
+        return false;
+    }
+    if ($dia < 1 or $mes > 31)
+    {
+        error('El día no es válido!');
+        return false;
+    }
+    return true;
+}
+
 ?>
\ No newline at end of file