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 = '')
{
?>
+
+
%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