From: Leandro Lucarella
Date: Sun, 1 May 2005 04:52:41 +0000 (+0000)
Subject: Varias cosas:
X-Git-Tag: svn_import~145
X-Git-Url: https://git.llucax.com/z.facultad/75.43/tp1.git/commitdiff_plain/0a253cede072778391c1359f146ef56c60f40364?ds=inline
Varias cosas:
- Se ponen prefijos admin_ en los campos de formulario.
- Se agregan más reglas de validación en javascript (check_email,
check_min_max_cant, check_iguales).
- Se traduce las reglas de validación a PHP en lib/validacion.php para poder
validar lo mismo en el cliente y en el servidor.
- Se pasa el index.php a admin.login.php y en index.php se hace un include de
éste. Así queda bien claro que el index.php es parte del módulo de
administración.
- Se agrega admin.asociarse.php que implementa parcialmente la registración de
nuevos usuarios (falta el alta real en los archivos, las pantallas y
formularios están casi listos).
- Se agrega función ok($msg) a lib/pagina.php para mostrar mensajes de
confirmación (estilo "Registración exitosa").
- Se agregan algunos métodos a Usuario necesarios para el módulo de
administración (checkAdmins() y asociar(), ambos de clase).
---
diff --git a/src/admin.asociarse.php b/src/admin.asociarse.php
new file mode 100644
index 0000000..c3af685
--- /dev/null
+++ b/src/admin.asociarse.php
@@ -0,0 +1,53 @@
+Ingresar al sistema.');
+ }
+ }
+ else // No validan algunos campos, muestro el formulario de nuevo
+ {
+ admin_form_asociarse($admin, $_POST['admin_id'], $_POST['admin_email']);
+ }
+}
+else // Si no me viene el form, lo hago loguearse
+{
+ admin_form_asociarse(!Usuario::checkAdmins());
+}
+
+pagina_pie('Leandro Lucarella', 'llucare@fi.uba.ar');
+
+?>
\ No newline at end of file
diff --git a/src/admin.login.php b/src/admin.login.php
new file mode 100644
index 0000000..5b39ad3
--- /dev/null
+++ b/src/admin.login.php
@@ -0,0 +1,47 @@
+
\ No newline at end of file
diff --git a/src/index.php b/src/index.php
index b7dfe85..fbc4805 100644
--- a/src/index.php
+++ b/src/index.php
@@ -8,24 +8,6 @@
//
// $Id$
-require_once 'lib/pagina.php';
-require_once 'lib/admin.forms.php';
-
-pagina_cabecera('Ingreso');
-
-// Si me llegó el form
-if (@$_POST['user'] and @$_POST['user'])
-{
- // TODO hacer el login
- // Si falla el login, muestro error y form de nuevo
- error('Usuario o contraseña incorrecta, intente nuevamente.');
- admin_form_login($_POST['user']);
-}
-else // Si no me viene el form, lo hago loguearse
-{
- admin_form_login();
-}
-
-pagina_pie('Leandro Lucarella', 'llucare@fi.uba.ar');
+include 'admin.login.php';
?>
\ No newline at end of file
diff --git a/src/lib.js b/src/lib.js
index 6879d47..f774bec 100644
--- a/src/lib.js
+++ b/src/lib.js
@@ -13,6 +13,23 @@ function vacio(f)
return false;
}
+// 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 && f.value.length < min) return -1;
+ if (max >= 0 && f.value.length > max) return 1;
+ return 0;
+}
+
+function es_email(f)
+{
+ if (f.value.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]$/g)) return true;
+ return false;
+}
+
+// Verifica si el campo f está vacío, dando un error con el nombre n si lo está.
function check_vacio(f, n)
{
if (vacio(f))
@@ -22,4 +39,48 @@ function check_vacio(f, n)
return false;
}
return true;
-}
\ No newline at end of file
+}
+
+// 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))
+ {
+ case 1:
+ alert('El campo ' + n + ' debe tener a lo sumo ' + max + ' caracteres!');
+ f.focus();
+ return false;
+ case -1:
+ alert('El campo ' + n + ' debe tener al menos ' + min + ' caracteres!');
+ f.focus();
+ return false;
+ }
+ 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.
+function check_iguales(f1, f2, n)
+{
+ if (f1.value != f2.value)
+ {
+ alert('No coinciden los valores del campo ' + n + '!');
+ f1.focus();
+ return false;
+ }
+ 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.
+function check_email(f, n)
+{
+ if (!es_email(f))
+ {
+ alert(f.value + ' no es una dirección de e-mail válida!');
+ f.focus();
+ return false;
+ }
+ return true;
+}
diff --git a/src/lib/Usuario.php b/src/lib/Usuario.php
index d309285..f0e9ff1 100644
--- a/src/lib/Usuario.php
+++ b/src/lib/Usuario.php
@@ -59,6 +59,51 @@ class Usuario
{
}
+ function cargar($id)
+ {
+ }
+
+ /**
+ * Chequea si existen 2 admins.
+ * @return string true si existen 2 admins, false de otra forma.
+ * @static
+ */
+ function checkAdmins()
+ {
+ $admins = @file('data/admins.txt');
+ if (count($admins) < 2) return false;
+ return true;
+ }
+
+ /**
+ * Asocia a un integrante del grupo.
+ * @return mixed Si hubo error, retorna un string con el error, si no retorna ''.
+ * @static
+ */
+ function asociar($id, $email, $admin = false)
+ {
+ // TODO lo mismo para asesores
+ if (($f = fopen('data/int_2005.txt', 'r')) === false)
+ {
+ return 'Error al abrir archivo de integrantes!!!';
+ }
+ while (!feof($f))
+ {
+ $int = fgetcsv($f, 4096);
+ if ($int[0] == $id) break;
+ }
+ if ($int[0] != $id)
+ {
+ return 'El número de registro no existe, ese usuario no se puede asociar al grupo!';
+ }
+ if ($admin and Usuario::checkAdmins())
+ {
+ return 'Ya hay 2 administradores en el sistema.';
+ }
+ return 'FALTA IMPLEMENTAR EL ALTA!!!';
+ return '';
+ }
+
}
?>
\ No newline at end of file
diff --git a/src/lib/admin.forms.php b/src/lib/admin.forms.php
index 919fc75..5f167e3 100644
--- a/src/lib/admin.forms.php
+++ b/src/lib/admin.forms.php
@@ -8,26 +8,65 @@
//
// $Id$
-function admin_form_login($user = '')
+function admin_form_login($id = '')
{
?>
+
+
%s', $msg);
}
+function ok($msg)
+{
+ printf('%s
', $msg);
+}
+
?>
\ No newline at end of file
diff --git a/src/lib/validacion.php b/src/lib/validacion.php
new file mode 100644
index 0000000..c15a504
--- /dev/null
+++ b/src/lib/validacion.php
@@ -0,0 +1,80 @@
+= 0 && strlen($f) < $min) return -1;
+ if ($max >= 0 && strlen($f) > $max) return 1;
+ return 0;
+}
+
+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á.
+function check_vacio($f, $n)
+{
+ if (!trim($f))
+ {
+ error("Falta ingresar el campo $n!");
+ return false;
+ }
+ 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.
+function check_min_max_cant($f, $n, $min, $max)
+{
+ switch (min_max_cant($f, $min, $max))
+ {
+ case 1:
+ error("El campo $n debe tener a lo sumo $max caracteres!");
+ return false;
+ case -1:
+ error("El campo $n debe tener al menos $min caracteres!");
+ return false;
+ }
+ 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.
+function check_iguales($f1, $f2, $n)
+{
+ if ($f1 != $f2)
+ {
+ error("No coinciden los valores del campo $n!");
+ return false;
+ }
+ 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.
+function check_email($f, $n)
+{
+ if (!es_email($f))
+ {
+ error("$f no es una dirección de e-mail válida!");
+ return false;
+ }
+ return true;
+}
+
+?>
\ No newline at end of file