From 0a253cede072778391c1359f146ef56c60f40364 Mon Sep 17 00:00:00 2001 From: Leandro Lucarella Date: Sun, 1 May 2005 04:52:41 +0000 Subject: [PATCH] =?utf8?q?Varias=20cosas:=20-=20Se=20ponen=20prefijos=20ad?= =?utf8?q?min=5F=20en=20los=20campos=20de=20formulario.=20-=20Se=20agregan?= =?utf8?q?=20m=C3=A1s=20reglas=20de=20validaci=C3=B3n=20en=20javascript=20?= =?utf8?q?(check=5Femail,=20=20=20check=5Fmin=5Fmax=5Fcant,=20check=5Figua?= =?utf8?q?les).=20-=20Se=20traduce=20las=20reglas=20de=20validaci=C3=B3n?= =?utf8?q?=20a=20PHP=20en=20lib/validacion.php=20para=20poder=20=20=20vali?= =?utf8?q?dar=20lo=20mismo=20en=20el=20cliente=20y=20en=20el=20servidor.?= =?utf8?q?=20-=20Se=20pasa=20el=20index.php=20a=20admin.login.php=20y=20en?= =?utf8?q?=20index.php=20se=20hace=20un=20include=20de=20=20=20=C3=A9ste.?= =?utf8?q?=20As=C3=AD=20queda=20bien=20claro=20que=20el=20index.php=20es?= =?utf8?q?=20parte=20del=20m=C3=B3dulo=20de=20=20=20administraci=C3=B3n.?= =?utf8?q?=20-=20Se=20agrega=20admin.asociarse.php=20que=20implementa=20pa?= =?utf8?q?rcialmente=20la=20registraci=C3=B3n=20de=20=20=20nuevos=20usuari?= =?utf8?q?os=20(falta=20el=20alta=20real=20en=20los=20archivos,=20las=20pa?= =?utf8?q?ntallas=20y=20=20=20formularios=20est=C3=A1n=20casi=20listos).?= =?utf8?q?=20-=20Se=20agrega=20funci=C3=B3n=20ok($msg)=20a=20lib/pagina.ph?= =?utf8?q?p=20para=20mostrar=20mensajes=20de=20=20=20confirmaci=C3=B3n=20(?= =?utf8?q?estilo=20"Registraci=C3=B3n=20exitosa").=20-=20Se=20agregan=20al?= =?utf8?q?gunos=20m=C3=A9todos=20a=20Usuario=20necesarios=20para=20el=20m?= =?utf8?q?=C3=B3dulo=20de=20=20=20administraci=C3=B3n=20(checkAdmins()=20y?= =?utf8?q?=20asociar(),=20ambos=20de=20clase).?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- src/admin.asociarse.php | 53 +++++++++++++++++++++++++++ src/admin.login.php | 47 ++++++++++++++++++++++++ src/index.php | 20 +---------- src/lib.js | 63 +++++++++++++++++++++++++++++++- src/lib/Usuario.php | 45 +++++++++++++++++++++++ src/lib/admin.forms.php | 55 +++++++++++++++++++++++----- src/lib/pagina.php | 8 +++++ src/lib/validacion.php | 80 +++++++++++++++++++++++++++++++++++++++++ 8 files changed, 343 insertions(+), 28 deletions(-) create mode 100644 src/admin.asociarse.php create mode 100644 src/admin.login.php create mode 100644 src/lib/validacion.php 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 -- 2.43.0