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 = '') { ?>
+ method="post" onSubmit="return admin_validar_login(this);">

Por favor identifíquese para ingresar en el sistema:
- Usuario:
- Contraseña:
- + Nro Registro:
+ Contraseña:
+
+ Asociarse +

+
+ +
+ +

+ Por favor, complete el formulario para asociarse al grupo:
+ +

+ El sistema aún no tiene 2 administradores, este usuario + será administrador del sistema. +

+ + Nro Registro:
+ Contraseña (repítala 2 veces): +
+ E-Mail:
+
+ Ingresar

%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