Skip to content

jhderojasUVa/agenda_palabrasmenores

Repository files navigation

Agenda de Palabras menores

Proyecto de la agenda de Palabras Menores

  1. Introduccion =============== El proyecto trata sobre el desarrollo de una agenda para el producto Palabras menores.

1.1. Objeto del proyecto

Desde la vista de uso. (A desarrollar).

Desde la vista técnica. Se desea crear una agenda con diferentes frameworks portable e independiende del producto principal. Se creara un sistema cliente/servidor donde la mayoria del peso estara en el servidor tanto para consultas como para insercion de datos.

A su vez el producto es completo puesto que se ha de pensar no solo en en como se va a crear, sino la estructura (base de datos), gestion de la misma (modelos), como explotarla (controladores) y como visualizar la misma (vistas) de forma que sea obvia para el usuaio (UX) y que, a traves de esa obviedad sea sencilla (UI).

Es decir una aplicación web estandar desde principio a fin.

1.2. Alcance del proyecto

Se pretende desarrollar un sistema basado en cliente/servidor tipico delegando, en un futuro, responsabilidad al cliente a traves de un sistema REST por JSON o XML (con XQuery) y la creación de webservices para la consulta de los datos de la agenda.

Es decir se pretende realizar una gradeful upgrade comenzando desde una gestion total desde el servidor a, gradualmente ir pasando peso a los clientes eliminando el máximo posible de carga y llegando a un sistema cliente/servidor.

  1. Plan de Gestion ==================

2.1 Hitos

Hito 1: Defininir el sistema tanto XXXXX como informaticamente - en proceso
Hito 2: Creacion de la base de datos - hecho
Hito 3: Creacion de los modelos - hecho
Hito 4: Creacion de los controladores de gestion de usuario - en proceso
Hito 5: Creacion de las vistas de gestion de usuairo - en proceso
Hito 6: Creacion de los controladores de introduccion de datos
Hito 7: Creacion de las vistas de introduccionde datos
Hito 8: Creacion de los controladores de explotacion de datos
Hito 9: Creacion de las vistas de explotacion de datos
Hito 10: Baterias de pruebas con usuarios reales
Hito 11: Paso de modelos a REST
Hito 12: En las vistas paso a comprobaciones JS
Hito 13: Paso a framework JS
Hito 14: Test finales

La creacion de los hitos 4 y 5, 6 y 7, 8 y 9 van juntas.

2.3 Fases

Las fases coinciden practicamente con los hitos.

  1. Especificaciones =================== A continuación se relatan las especificaciones técnicas del producto.

3.1. Requisitos

Aplicacion realizada en PHP usando el framework de Codeigniter.

Necesario un servidor LAMP tipico (Apache + PHP + MySQL).

3.2. Diseño

3.2.1. Controladores

/Admin

    Login.php --> Controlador de sesion<br/>
                  index: Valida los datos del usuario para iniciar sesion<br/>
                  salir: Salir de la sesion<br/>
    Actividades.php --> Controlador de actividades:<br/>
                        add_actividad: Añadir<br/>
                        modifica_actividad: Modificar<br/>
                        buscar_actividad: Buscar<br/>
                        publicar: Publicar o despublicar una actividad<br/>
                        Funciones Privadas:<br/>
                        esta_vacio: retorna true si un campo no esta vacio<br/>
                                    retorna false si un campo si esta vacio<br/>

    Barrios.php --> Controlador de barrios:<br/>
                        add_barrio: Añadir<br/>
                        modifica_barrio: Modificar<br/>
                        buscar_barrio: Buscar<br/>
                        Funciones Privadas:<br/>
                        esta_vacio: retorna true si un campo no esta vacio<br/>
                                    retorna false si un campo si esta vacio<br/>

    Secciones.php --> Controlador de secciones:<br/>
                        add_seccion: Añadir<br/>
                        modifica_seccion: Modificar<br/>
                        buscar_seccion: Buscar<br/>
                        Funciones Privadas:<br/>
                        esta_vacio: retorna true si un campo no esta vacio<br/>
                                    retorna false si un campo si esta vacio<br/>

    Usuarios.php --> Controlador de usuarios:<br/>
                        add_usuario: Añadir<br/>
                        modifica_usuario: Modificar<br/>
                        buscar_usuario: Buscar<br/>
                        Funciones Privadas:<br/>
                        esta_vacio: retorna true si un campo no esta vacio<br/>
                                    retorna false si un campo si esta vacio<br/>

Principal.php --> Controlador de entrada

3.2.2. Modelos

Modelo_actividades. Métodos:

    Añadir una actividad
    public function add_actividad ($campanya, $actividad, $descripcion, $organiza, $lugar, $idbarrio, $idseccion, $fecha, $usuario, $publicada)
        Parámetros entrada:
        $campanya    --> Nombre de la campanya de la actividad
        $actividad   --> Nombre de la actividad
        $descripcion --> Descripcion de la actividad
        $organiza    --> Nombre del organizador u organizadores
        $lugar       --> Direccion donde tiene lugar
        $idbarrio    --> ID del barrio donde se realiza la actividad
        $idseccion   --> ID de la seccion a la que pertenece la actividad
        $fecha       --> Fecha y Hora de comienzo de la actividad
        $usuario     --> login del usuario                
        $publicada   --> Si está o no publicada la actividad, al crearla vendrá con valor 0 

    Actualizar una actividad            
    public function update_actividad ($idactividades, $campanya, $actividad, $descripcion, $organiza, $lugar, $idbarrio, $idseccion, $fecha, $usuario, $publicada)
        Parámetros entrada:
        $idactividades --> Identificador de la actividad que se va a actualizar
        $campanya      --> Nombre de la campanya de la actividad
        $actividad     --> Nombre de la actividad
        $descripcion   --> Descripcion de la actividad
        $organiza      --> Nombre del organizador u organizadores
        $lugar         --> Direccion donde tiene lugar
        $idbarrio      --> ID del barrrio donde se realiza la actividad
        $idseccion     --> ID de la seccion a la que pertenece la actividad
        $fecha         --> Fecha y Hora de comienzo de la actividad
        $usuario       --> login del usuario
        $publicada     --> Si está o no publicada la actividad 1- Publicada 0 - No publicada
            
    Borrar una actividad                 
    public function del_actividad ($idactividades)
        Parámetros entrada:
        $idactividades --> Identificador de la actividad que se va a eliminar
        Antes de borrar la actividad:
            Borra del fichero imagenes, las imagenes de esa actividad.
            Borra del fichero documentos, los documentos de esa actividad.
            Borra la actividad.

    Actividades de un usuario por orden descendente de fecha
    public function actividad_usuario_fecha($idusuario)
        Parámetros entrada:
        $idusuario --> Identificador del usuario del que se van a obtener las actividades
        Salida:
        Array con las actividades

    Datos de una actividad a partir del id de la actividad
    public function actividad_id($idactividades)
        Parámetros entrada:
        $idactividades --> Identificador de la actividad
        Salida:
        Array con los datos de la actividad

    Devuelve las actividades, resultado de la busqueda de un texto en cualquier campos de actividades sobre el que se va a buscar, ordenadas por fecha descendente
    public function buscar_cajetin($texto)
        Parámetros entrada:
        $texto --> texto que se va a buscar
        Campos sobre los que se va a buscar: campanya, actividad, descripcion, organiza, lugar, usuario 
        Salida:
        Array con los datos de las actividades ordenadas por fecha descendente.

    Devuelve las actividades, resultado de la busqueda en campos con un determinado texto, ordenadas por fecha descendente
    public function buscar_actividad($array_datos)
        Parámetros entrada:
        $array_datos --> array con el texto de los campos de actividades por los que se va a buscar
        Estos textos corresponden a los campos: campanya, actividad, organiza y fecha
        Salida:
        Array con los datos de las actividades ordenadas por fecha descendente.

    Publica o Despublica una actividad
    public function publicar_actividad($idactividades, $publicada)
        Parámetros entrada:
        $idactividades --> ID de la actividad que se quiere cambiar el valor de publicada
        $publicada     --> 0 - Si despublica, 1 - si publica
        Salida:
        true

Modelo_barrios. Métodos:

    Añadir un barrio
    public function add_barrio ($nombre)
        Parámetros entrada:      
        $nombre --> Nombre del barrio que se va a añadir

    Actualizar un barrio
    public function update_barrio ($idbarrios, $nombre)
        Parámetros entrada:
        $idbarrios --> Identificador del barrio que se va a actualizar
        $nombre    --> Nombre del barrio que se va a actualizar

    Borrar un barrio
    public function del_barrio ($idbarrios)
        Parámetros entrada:
        $idbarrios  --> Identificador del barrio que se va a eliminar
        Antes de borrar el barrio:
            Borra del fichero imagenes, las imagenes de las actividades del barrio.
            Borra del fichero documentos, los documentos de las actividades del barrio.
            Borra del ficheros actividades, las actividades del barrio.
            Borra el barrio.

    Datos de un barrio a partir del id
    public function barrio_id($idbarrios)       
        Parámetros entrada:
        $idbarrios --> id del barrio
        Salida:
        Array con los datos del barrio

    Devuelve los barrios, resultado de la busqueda en campos con un determinado texto, ordenados por nombre
    public function buscar_barrio($array_datos){
        Parámetros entrada:
        $array_datos --> array con el texto de los campos de barrios por los que se va a buscar
        Estos textos corresponden a los campos: nombre
        Salida:
        Array con los datos de los barrios ordenados por nombre.
        NOTA: No se está utilizando

    Devuelve los barrios, resultado de la busqueda de un texto en cualquier campos de barrios sobre el que se va a buscar, ordenadas por nombre
    public function buscar_cajetin($texto)
    Parámetros entrada:
        $texto --> texto que se va a buscar
        Campos sobre los que se va a buscar: nombre 
        Salida:
        Array con los datos de los barrios ordenados por nombres.

    Devuelve todos los barrios ordenados por nombre
    public function devuelve_barrios()      
        Parámetros entrada:
        Ninguno
        Salida:
        Array con los datos de todos los barrios

    Devuelve los ultimos barrios    
    public function ultimos_barrios($numero)       
        Parámetros entrada:
        $numero --> Numero de barrios a devolver
        Salida:
        Array con los datos de los ultimos barrios

Modelo_documentos. Métodos:

    Añadir un documento a la actividad
    public function add_documento ($idactividad, $nombredocumento, $descripcion)
        Parámetros entrada: 
        $idactividad   --> ID de la actividad a la que pertenece el documento
        $nombredocumento --> Nombre del documento
        $descripcion   --> Descripcion del documento

    Actualizar un documento de una actividad
    public function update_documento ($iddocumentos, $idactividad, $nombredocumento, $descripcion)
        Parámetros entrada:
        $iddocumentos --> Identificador del documento que se va a actualizar
        $idactividad  --> ID de la actividad a la que pertenece el documento
        $nombredocumento --> Nombre del documento
        $descripcion  --> Descripcion del documento

    Borrar un documento de una actividad
    public function del_documento ($iddocumentos) {
        Parámetros entrada:
        iddocumentos  --> Identificador del documento que se va a eliminar

Modelo_imagenes. Métodos:

    Añadir una imagen a una actividad      
    public function add_imagen ($idactividad, $nombreimagen, $descripcion)
        Parámetros entrada:
        $idactividad --> ID de la actividad a la que pertenece la imagen
        $nombreimagen  --> Nombre de la imagen
        $descripcion --> Descripcion de la imagen

    Actualizar una imagen de una actividad
    public function update_imagen ($idimagenes, $idactividad, $nombreimagen, $descripcion)
        Parámetros entrada:
        $idimagenes  --> Identificador de la imagen que se va a actualizar
        $idactividad --> ID de la actividad a la que pertenece la imagen
        $nombreimagen  --> Nombre de la imagen
        $descripcion --> Descripcion de la imagen

    Borrar una imagen de una actividad
    public function del_imagen ($idimagenes)
        Parámetros entrada:
        $idimagenes  --> Identificador de la imagen que se va a eliminar

Modelo_secciones. Métodos:

    Añadir una seccion
    public function add_seccion ($nombre)
        Parámetros entrada:
        $nombre --> Nombre de la seccion que se va a añadir

    Actualizar una seccion
    public function update_seccion ($idsecciones, $nombre)
        Parámetros entrada:
        $idsecciones --> Identificador de la seccion que se va a actualizar
        $nombre      --> Nombre de la seccion que se va a actualizar

    Borrar una seccion
    public function del_seccion ($idsecciones)
        Parámetros entrada:
        $idsecciones  --> Identificador de la seccion que se va a eliminar
        Antes de borrar la seccion:
            Borra del fichero imagenes, las imagenes de las actividades de la seccion.
            Borra del fichero documentos, los documentos de las actividades de la seccion.
            Borra del ficheros actividades, las actividades de la seccion.
            Borra la seccion.

    Datos de una seccion a partir del id
    public function seccion_id($idsecciones)       
        Parámetros entrada:
        $idsecciones --> id de la seccion
        Salida:
        Array con los datos de la seccion

    Devuelve las secciones, resultado de la busqueda en campos con un determinado texto, ordenados por nombre
    public function buscar_seccion($array_datos){
        Parámetros entrada:
        $array_datos --> array con el texto de los campos de secciones por los que se va a buscar
        Estos textos corresponden a los campos: nombre
        Salida:
        Array con los datos de las secciones ordenados por nombre.
        NOTA: No se está utilizando

    Devuelve las secciones, resultado de la busqueda de un texto en cualquier campos de secciones sobre el que se va a buscar, ordenadas por nombre
    public function buscar_cajetin($texto)
        Parámetros entrada:
        $texto --> texto que se va a buscar
        Campos sobre los que se va a buscar: nombre 
        Salida:
        Array con los datos de los barrios ordenados por nombres.

    Devuelve todas las secciones ordenados por nombre
    public function devuelve_secciones()      
        Parámetros entrada:
        Ninguno
        Salida:
        Array con los datos de todas las secciones

    Devuelve las ultimas secciones    
    public function ultimas_secciones($numero)       
        Parámetros entrada:
        $numero --> Numero de secciones a devolver
        Salida:
        Array con los datos de las ultimas secciones

Modelo_usuarios. Métodos:

    Añadir un usuario
    public function add_usuario ($login, $password, $nombre, $idacl)
        Parámetros entrada: 
        $login    --> Login de entrada del usuario
        $password --> Password, md5
        $nombre   --> Nombre del usuario
        $idacl    --> Identificador de la ACL. 1-Administrador, 2-Usuario, 3-Desactivado

    Actualizar un usuario
    public function add_usuario ($login, $password, $nombre, $idacl)
        Parámetros entrada: 
        $login    --> Login de entrada del usuario
        $password --> Password, md5
        $nombre   --> Nombre del usuario
        $idacl    --> Identificador de la ACL. 1-Administrador, 2-Usuario, 3-Desactivado

    Borrar un usuario
    public function del_usuario ($login)
        Parámetros entrada:
        $login    --> Login de entrada del usuario que se va a eliminar
        Antes de borrar el usuario:
            Borra del fichero imagenes, las imagenes de las actividades del usuario.
            Borra del fichero documentos, los documentos de las actividades del usuario.
            Borra del ficheros actividades, las actividades del usuario.
            Borra el usuario.

    Comprobar en la base de datos si existe un usuario con un password
    public function checkusuario($login, $password)           
        Parámetros entrada:
        $login --> login del usuario que se va a chequear
        $password --> password del usuario que se va a chequear
        Salida:
        0 --> no existe usuario y password
        1 --> existe y es correcto
        2 --> existe y deshabilitado

    Datos de un usuario a partir del login del usuario
    public function usuario_id($login){       
        Parámetros entrada:
        $login --> login del usuario
        Salida:
        Array con los datos del usuario

    Devuelve los usuarios, resultado de la busqueda en campos con un determinado texto, ordenados por nombre
    public function buscar_usuario($array_datos)
        Parámetros entrada:
        $array_datos --> array con el texto de los campos de usuarios por los que se va a buscar
        Estos textos corresponden a los campos: login, nombre
        Salida:
        Array con los datos de los usuarios ordenados por nombre.

    Devuelve los usuarios, resultado de la busqueda de un texto en cualquier campos de usuarios sobre el que se va a buscar, ordenadas por nombre
    public function buscar_cajetin($texto)
        Parámetros entrada:
        $texto --> texto que se va a buscar
        Campos sobre los que se va a buscar: login, nombre 
        Salida:
        Array con los datos de los usuarios ordenados por nombres.

    Devuelve los ultimos usuarios    
    public function ultimos_usuarios($numero)       
        Parámetros entrada:
        $numero --> Numero de usuarios a devolver
        Salida:
        Array con los datos de los ultimos usuarios

3.2.3. Vistas

admin/

actividades/<br/>
    add_actividades.php --> Añadir actividades<br/>
    buscar_actividad.php --> Muestra el resultado de las búsquedas</br>
    formbuscar_actividad.php --> Formulario para buscar actividades<br/>
    modificar_actividad.php --> Modificar actividades<br/>
    principal.php --> Principal tras un login correcto<br/>
                      Muestra actividades de un usuario<br/>

barrios/<br/>
    add_barrio.php --> Añadir barrios<br/>
    buscar_barrio.php --> Muestra el resultado de las búsquedas</br>
    formbuscar_barrio.php --> Formulario para buscar barrios<br/>
    modificar_barrio.php --> Modificar barrio<br/>

secciones/<br/>
    add_seccion.php --> Añadir secciones<br/>
    buscar_seccion.php --> Muestra el resultado de las búsquedas</br>
    formbuscar_seccion.php --> Formulario para buscar secciones<br/>
    modificar_seccion.php --> Modificar seccion<br/>

usuarios/<br/>
    add_usuario.php --> Añadir usuarios<br/>
    buscar_usuario.php --> Muestra el resultado de las búsquedas</br>
    desconectar.php --> Desconexion o salida del usuario<br/>
    formbuscar_usuario.php --> Formulario para buscar usuarios<br/>
    modificar_usuarios.php --> Modificar usuario<br/>

footer.php --> Pie de las páginas<br/>
header.php --> Cabecera de las páginas<br/>
index.php --> Entrada de usuario<br/>
menu.php --> Menu<br/>
principal.php --><br/> 

3.2.4 Librerias

Librería_sesiones. Métodos:

    Comprobar si hay sesion
    public function comprobar_session()
        Salida:
        TRUE --> Si hay sesion iniciada.
        FALSE --> Si no hay sesion iniciada.

    Registrar una sesión de usuario
    public function registrar($estado, $idusuario)
        Parámetros entrada:
        $estado = true
        $idusuario = login del usuario que se va a registrar en la sesion.
        Salida:
        TRUE --> Si el registro de sesion es correcto.
        FALSE --> Si no es correcto.

    Des-registrar o des-logear al usuario
    public function des_registrar()
        Salida:
        TRUE --> Si el des-registro es correcto.
        FALSE --> Si no es correcto. 

    Devolver datos de una sesion
    public function devuelve_datos_session()
        Salida: Array con los datos de la sesion

    Meter datos en la sesion
    public function mete_datos_sesion($idsesion, $registrado, $login, $nombre, $acl)
        Parámetros entrada:
        $idsesion = el identificador que es el login
        $registrado = TRUE o FALSE, autoexplicativo
        $login = El login del usuario
        $nombre = el nombre real del usuario
        $acl = el identificador de acl 
        Salida:
        TRUE

3.2.5 Resources

/js/

    comprobaciones:
        Función que comprueba si está vacio algo o no
        function esta_vacio(cadena)
        Parámetros de entrada:
        cadena --> el valor que se va a comprobar
        Salida:
        true --> si NO lo esta
        false --> si SI está vacia

    actividades:
        Funcion para revisar los campos del formulario
        function revisa_form(form)
        Parámetros de entrada:
        form --> Nombre del formulario que se va a revisar

    barrios:
        Funcion para revisar los campos del formulario
        function revisa_form(form)
        Parámetros de entrada:
        form --> Nombre del formulario que se va a revisar

    secciones:
        Funcion para revisar los campos del formulario
        function revisa_form(form)
        Parámetros de entrada:
        form --> Nombre del formulario que se va a revisar

    usuarios:
        Funcion para revisar los campos del formulario
        function revisa_form(form)
        Parámetros de entrada:
        form --> Nombre del formulario que se va a revisar

3.3. Base de Datos

Nombre de la Base de Datos: agenda 3.3.1 Características

Default collation: utf8_spanish-ci
Default characterset: utf8
Número de Tablas: 6

3.3.2 Tablas

actividades Engine=MyISAM Default Charset=utf8 Collate=utf8_spanish_ci

campos:
idactividades: int(11) NOT NULL AUTO_INCREMENT COMMENT 'Identificador de la actividad, UNICO',
campanya: varchar(100) COLLATE utf8_spanish_ci DEFAULT NULL COMMENT 'Nombre de la campanya',
actividad: varchar(150) COLLATE utf8_spanish_ci NOT NULL COMMENT 'Nombre de la actividad',
descripcion: text COLLATE utf8_spanish_ci COMMENT 'Descripcion de la actividad',
organiza: varchar(150) COLLATE utf8_spanish_ci DEFAULT NULL COMMENT 'Nombre del organizador u organizadores (separados por - )',
lugar: varchar(100) COLLATE utf8_spanish_ci NOT NULL COMMENT 'Direccion donde tiene lugar la actividad',
idbarrio: int(11) NOT NULL COMMENT 'ID del barrio donde se realiza la actividad',
idseccion: int(11) NOT NULL COMMENT 'ID de la seccion a la que pertenece',
fecha: datetime NOT NULL COMMENT 'Fecha y hora de comienzo de la actividad',
usuario: varchar(45) COLLATE utf8_spanish_ci NOT NULL COMMENT 'login del usuario',
publicada: tinyint(1) DEFAULT '0' COMMENT 'Si esta publicada o no la actividad (1- Publicada,  0 - No publicada)',
PRIMARY KEY (`idactividades`)

barrios Engine=MyISAM Default Charset=utf8 Collate=utf8_spanish_ci

campos:
idbarrios: int(11) NOT NULL AUTO_INCREMENT COMMENT 'Identificador del barrio, UNICO',
nombre: varchar(45) COLLATE utf8_spanish_ci NOT NULL COMMENT 'Nombre del barrio',
PRIMARY KEY (`idbarrios`)

documentos Engine=MyISAM Default Charset=utf8 Collate=utf8_spanish_ci

campos:
iddocumentos: int(11) NOT NULL AUTO_INCREMENT COMMENT 'Identificador del documento, UNICO',
idactividad; int(11) NOT NULL COMMENT 'ID de la actividad a la que pertenece el documento',
nombredocumento: varchar(100) COLLATE utf8_spanish_ci NOT NULL COMMENT 'Nombre del documento ',
descripcion: varchar(100) COLLATE utf8_spanish_ci DEFAULT NULL COMMENT 'Descripcion del documento',
PRIMARY KEY (`iddocumentos`)

imagenes Engine=MyISAM Default Charset=utf8 Collate=utf8_spanish_ci

campos:    
idimagenes: int(11) NOT NULL AUTO_INCREMENT COMMENT 'Identificador de la imagen, UNICO',
idactividad: int(11) NOT NULL COMMENT 'ID de la actividad a la que pertenece',
nombreimagen: varchar(100) COLLATE utf8_spanish_ci NOT NULL COMMENT 'Nombre de la imagen',
descripcion: varchar(100) COLLATE utf8_spanish_ci DEFAULT NULL COMMENT 'Descripcion de la imagen',
PRIMARY KEY (`idimagenes`)

secciones Engine=MyISAM Default Charset=utf8 Collate=utf8_spanish_ci

campos: 
idsecciones: int(11) NOT NULL AUTO_INCREMENT COMMENT 'Identificador de la seccion, UNICO',
nombre: varchar(100) COLLATE utf8_spanish_ci NOT NULL COMMENT 'Nombre de la seccion',
PRIMARY KEY (`idsecciones`)

usuarios Engine=MyISAM Default Charset=utf8 Collate=utf8_spanish_ci

campos: 
login varchar(45) COLLATE utf8_spanish_ci NOT NULL COMMENT 'Login de entrada del usuario, UNICO',
password varchar(45) COLLATE utf8_spanish_ci NOT NULL COMMENT 'Password. md5',
nombre varchar(100) COLLATE utf8_spanish_ci NOT NULL COMMENT 'Nombre del usuario',
idacl int(11) NOT NULL COMMENT 'Identificador de la ACL: 0-Disabled, 1-Super Administrador, 2-Redactor, 3-Editor',
PRIMARY KEY (`login`)
  1. Test/Pruebas/Instalacion ===========================

4.1. Estrategias de las pruebas

4.2. Resultados

4.3. Instalacion

Clonar el git en un directorio (se incluye el codeigniter) y volcar en la base de datos el fichero .sql que se encuentra en la carpeta SQL.

Hay que crear, ademas la capeta uploads para los ficheros y darla permisos de escritura para el servicio web,

Poner un usuario con las siguientes características: login: administrador --> Por ejemplo password: 81dc9bdb52d04dc20036dbd8313ed055 --> hash(md5) de la contraseña 1234 nombre: Super Administrador --> Por ejemplo idacl: 1 --> Corresponde al Super Administrador que tiene todos los derechos.

  1. Funcionacionamiento - Manual de Uso ======================================

5.1 Errores y limitaciones

About

Proyecto de la agenda de Palabras Menores

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages