1. Informe Técnico
Desarrollo de Aplicaciones Web para comercio electrónico. Tiendas Virtuales
Tienda Virtual: H2M (Hogar 2ª Mano)
2. Introducción
Como trabajo del curso se ha realizado una pequeña tienda de comercio electrónico denominada H2M (Hogar 2ª Mano),
(en adelante H2M) cuyo objetivo es facilitar a cualquier familia una herramienta para la venta online de artículos del hogar
de segunda mano.
H2M se divide en dos bloques esenciales, por un lado una parte cliente dirigida a los potenciales compradores y por otro
una parte de administración reservada a usuarios propietarios de la tienda.
Parte Cliente de la Aplicación
Contiene la operativa básica para que un potencial comprador pueda realizar un pedido con los artículos que le interesen
de aquellos ofertados. Consta de las secciones:
Catálogo: El catálogo agrupa los artículos en distintas categorías las cuales a su vez estarán desglosadas
en subcategorías.
Carrito: En esta sección el cliente podrá ver en todo momento aquellos artículos seleccionados del
catálogo y que de forma provisional desea comprar. Al igual que una cesta de la compra tradicional se
podrán agregar, eliminar, incrementar o decrementar los artículos almacenados en el carrito.
Registro: Para que el cliente pueda tramitar un pedido necesita estar registrado como tal en la base de
datos de clientes de la tienda. El registro se realiza una vez facilitando los datos de acceso y de
facturación y tras el proceso el cliente obtiene una cuenta de usuario (email,contraseña).
Pedido: En la tramitación de un pedido y una vez que el cliente se identifica con los datos de su cuenta
obtenida en el proceso de registro, se genera automáticamente un pedido asociando el carrito con los
artículos a los datos del cliente. Los datos de facturación (dirección de envío del pedido) serán en principio
los que facilitó el cliente en el registro pero podrán ser modificados de forma independiente para cada
pedido.
Queda pendiente para un futuro implementar otras secciones como una sección de ofertas, una sección de contacto
donde los clientes podrán comunicarse con los responsables de la tienda para sugerencias, quejas o solicitar información
sobre algún pedido, una sección donde se identifiquen los responsables de la tienda y otras muchas que por falta de
tiempo no se han realizado.
Parte de Administración de la Aplicación
Se trata de una zona restringida a la que únicamente podrán acceder, previa identificación, usuarios considerados
administradores de tienda y que deberán estar dados de alta como tales en la base de datos. En principio sólo está
operativa de forma incompleta la sección de pedidos en la que un administrador podrá ver y realizar búsquedas sobre los
pedidos realizados por los clientes. Lógicamente la administración de una tienda virtual conlleva varias tareas como
seguimiento de pedidos (en proceso, anulados, pagados,...), gestión de productos (alta, bajas y modificaciones tanto de
categorías como de artículos), gestión del correo de clientes (contacto), gestión de cuentas de administración y muchas
otras que por el momento no se han implementado dado el tamaño de la tarea.
1
3. Estructura del Programa
http://localhost/TVProjectV00/cliente/index.php
PARTE CLIENTE
H2M
HOME CATALOGO CARRITO REGISTRO
TRAMITAR PEDIDO CLIENTE
(Validar Cliente)
DATOS DE REALIZAR
LISTAR PRODUCTOS INCREMENTAR ACCESO PEDIDO
Añadir DECREMENTAR
Compra PRODUCTOS DATOS DE
ENVÍO ACTUALIZAR
BÚSQUEDA SENCILLA
PEDIDO
BORRAR PRODUCTO Tramitar
Pedido
BÚSQUEDA AVANZADA CANCELAR
PEDIDO
VACIAR CARRITO ENVÍO
DETALLE DEL PRODUCTO N
CONFIRMAR
S PEDIDO
¿Cliente
Registrado?
2
4. http://localhost/TVProjectV00/admon/admin.php
PARTE SERVIDOR H2M
VALIDAR ADMINISTRADOR
(Login, Password)
N
¿Existe
usuario?
S
GESTIÓN DE PEDIDOS GESTIÓN DE CORREO GESTIÓN DE ARTÍCULOS GESTIÓN DE CLIENTES GESTIÓN DE CUENTAS
(Sin implementar) (Sin implementar) (Sin implementar) (Sin implementar)
Cerrar
Sesión
3
5. Arquitectura de la Aplicación sobre la base de una posible ruta de navegación
A continuación se muestra un ejemplo de funcionamiento de la aplicación tomando como base una posible compra
realizada por un cliente. La ruta descrita en el proceso de compra servirá para explicar los diagramas de estructura
vistos anteriormente y describir la operativa de la aplicación a través de sus interfaces (guía de usuario).
Proceso de Compra
En la parte cliente de la aplicación un usuario podrá seleccionar uno o varios artículos de su interés de un catálogo, llenar
su cesta de la compra (carrito) con dichos artículos y realizar un pedido con su compra. Es requisito para que el usuario
pueda tramitar un pedido estar registrado en la base de datos de clientes donde, una vez finalizado el proceso de registro
se le facilitará una cuenta de usuario (email,contraseña) que serán los datos de identificación que necesitará para
tramitar los pedidos.
Catálogo de Artículos
Al catálogo de artículos se accede pinchando en la opción correspondiente del menú horizontal principal.
Se compone de un menú vertical izquierdo que contiene un árbol de categorías de productos desglosadas a su vez en
subcategorías. Por el momento sólo se ha implementado la sección [OCIO Y CULTURA] con las subcategorías <libros> y
<música> puesto que el proceso de codificación de las restantes categorías sería similar.
Para cada tipo de artículo, se muestra, en principio, un listado completo ordenado por subcategoría. El resultado se
mostrará paginado, en este caso el tamaño de artículos por página es de 3. Cada ítem del listado contiene un pequeño
resumen informativo sobre el artículo que podrá ampliarse pinchando en el vínculo <Leer más>.
4
6. La página de detalle de un artículo ofrece una descripción más amplia del producto.
Para agilizar la localización de un artículo(s) determinado(s) dentro de un tipo de producto, se han implementado unas
herramientas de búsqueda que permiten filtrar los resultados por un cierto(s) criterio(s).
Cata tipo de producto contará con un buscador genérico que buscará una cadena de texto en varios de los campos que
describen al artículo y un buscador más específico que nos permitirá afinar más la búsqueda.
Buscador Genérico (ejemplo para la subcategoría <Libros>)
Buscará la cadena de texto (criterio) escrita en la caja de texto de búsqueda en varios de los campos descriptivos del
<Libro> como isbn, título del libro, autor, editorial, descripción resumida. De esta forma las búsquedas serán más toscas
(mayor cantidad de resultados) cuanta menos información tengamos del libro que queremos localizar puesto que la
cadena de búsqueda será más ambigua, y más precisas a medida que el criterio de búsqueda sea más específico. Por ej.
si como criterio de búsqueda ponemos el nombre de un autor, se mostrarán todos los libros disponibles de ese autor,
pero si ponemos el isbn de un libro localizará concretamente el libro que se corresponda con ese isbn puesto que es
único.
Buscador Específico (ejemplo para la subcategoría <Libros>)
En este caso podemos realizar búsquedas de libros por tema y subtema.
5
7. Las dos listas, tema y subtema, están en correspondencia de forma que si en el primer combo seleccionamos un tema
concreto (por ej. Informática), el segundo combo cargará los subtemas relacionados (Base de Datos, Programación), lo
cual nos permitirá filtrar un conjunto de libros que sea de nuestro interés.
Carrito (Cesta de la Compra)
El carrito de la compra permite al cliente ir almacenando aquellos artículos que son de su interés en el proceso de
compra (navegación y selección de productos en catálogo). Esta herramienta permite al cliente visualizar en todo
momento un listado agrupado de los productos que desea comprar y realizar ciertas operaciones sobre ese listado:
a) Incrementar o decrementar las unidades de un producto.
b) Eliminar un artículo concreto.
c) Vaciar la Cesta cancelando la lista temporal.
Para cada actualización sobre el carrito se recalcularán las cantidades parciales y totales a pagar.
Tramitación del Pedido
Una vez que el cliente está satisfecho con los artículos que desea comprar puede comenzar a tramitar su pedido pulsando
en el botón de comando <Tramitar Pedido> del carrito.
En este punto pueden ocurrir dos cosas, o bien que el cliente ya esté registrado con lo cual para seguir adelante en el
proceso de tramitación del pedido bastaría con identificarse mediante su cuenta de acceso (email y contraseña), o bien
que se trate de un nuevo cliente que deberá registrarse antes de poder continuar con el proceso.
6
8. En el proceso de registro el usuario tendrá con cumplimentar un formulario que consta de dos bloques principales, sus
datos de acceso (email y contraseña) y los datos de facturación que incluye la identificación de la empresa o profesional
y su dirección. Esta dirección será tomada por defecto como dirección de envío para los pedidos pero podrá ser
modificada de forma independiente para cada pedido que realice este cliente.
Una vez que el cliente está registrado puede continuar con la tramitación del pedido identificándose con los datos de
acceso obtenidos.
Tras la identificación el usuario accede a la información de su pedido compuesto en principio por los datos de compra
junto con los datos de facturación.
7
9. Los datos de facturación facilitados en el proceso de registro podrán ser ahora modificados si así lo desea el cliente.
También se podrá seleccionar la forma de pago (contrareembolso o ingreso en cuenta) y el tipo de envío (correo o
mensajería). De esta elección, junto con el peso del artículo dependerá el cálculo de los gastos de envío que se sumarán al
coste del pedido.
El cliente puede realizar tres operaciones sobre un pedido:
a) Cancelarlo, con lo cual se anulará el pedido y su cesta de la compra.
b) Actualizar Pedido, pudiendo modificar los datos de envío, forma de pago y tipo de envío.
c) Aceptar Pedido, con lo cual el pedido se procesará y será guardado en la base de datos para su posterior
seguimiento.
Queda pendiente en este punto implementar el envío automático al email del cliente de un mensaje de correo con la
información de su pedido, previa comprobación de existencias.
8
10. Administración de la Tienda
A la parte de administración de la tienda se accede por una URL distinta a la de la parte cliente ya que se ha preferido, por
seguridad, no habilitar en la parte cliente ningún acceso a este área restringida, de forma que no haya conexión entre
ambas zonas.
Por tanto accedemos a la zona de gestión de la tienda mediante la URL: http://localhost/TVProjectV00/admon/admin.php
Lo que nos sitúa en la página de control de acceso de usuarios administradores. Para que un usuario sea validado tendrá
que estar dado de alta en la tabla <administradores> de la base de datos.
Tras la identificación accedemos al Panel de Control de Gestión de la tienda, desde donde se podrán administrar distintos
procesos como seguimiento de pedidos, correo de clientes, dar de alta-modificar-borrar productos, gestión de cuentas de
clientes y de administradores de tienda.
9
11. A cada área de gestión se accederá a través del botón de comando correspondiente situado en el menú vertical
izquierdo.
Tal como se comentó anteriormente, se ha implementado por el momento parte de la gestión de pedidos, el resto queda
pendiente de implementación ya que requiere una enorme cantidad de tiempo.
Implementación de la Base de Datos
La figura muestra el modelo relacional de base de datos que da soporte a la tienda. Como se observa, por el momento
está compuesta por seis tablas relacionadas (integridad referencial). La base de datos tendrá que ampliarse a medida que
se dote de más funcionalidades a la tienda, pero por el momento se corresponde con la parte implementada de la
aplicación.
Explicación del modelo: Por un lado están las tablas que sirven de almacén para los productos de la tienda, <categorias> y
<articulos>. Puesto que una categoría puede contener varios artículos su relación es de 1:n. El árbol de categorías y
subcategorías se almacena en la tabla <categorias> considerando para cada nueva categoría la categoría padre
(idCategoriaPadre) a la que pertenece. Respecto a la tabla de artículos se ha optado por el momento por una sola tabla
para almacenar los distintos tipos de artículos. Esta tabla contiene unos campos que son comunes a todo tipo de artículo
(nombre, descripción breve, descripción detallada, precio, imagen pequeña, imagen ampliada, peso, iva, existencias,
conjunto, subconjunto, etc) y otros campos genéricos (itemText01,itemText02,itemMemo01,itemNum01,etc) que contendrán
aquellos campos de cada tipo de artículo que sean distintos de los comunes.
Respecto a los pedidos un cliente podrá realizar varios pedidos 1:n y un pedido a su vez contiene varias lineas de pedido
(varios artículos).
Por último la tabla de <administradores> contiene las cuentas de usuario de los gestores de la tienda virtual.
10
12. Listado del programa (manual del desarrollador)
A continuación se comentan los aspectos más interesantes de los ficheros del programa. La estructura de ficheros de la
aplicación sigue un modelo similar al del libro de texto del curso. El conjunto de ficheros que dan funcionalidad a la parte
cliente y de administración, están agrupados en sus respectivas carpetas <cliente> y <admon>. Las otras dos carpetas
importantes <biblioteca> y <css> son de uso común a ambas zonas.
Parte Cliente -> Carpeta <cliente>
index.php
Este fichero implementa la página <Home> o de inicio de la aplicación.
Los aspectos más interesantes son por un lado la visualización de la fecha y hora que se actualiza automáticamente sin
necesidad de refrescar la página. El código javascript está implementado en el fichero <fecha-hora.js> (archivo
encontrado en internet) donde básicamente el refresco de hora se realiza mediante la función setTiemout
<setTimeout("horaActual()",1000)>.
Por otro lado se implementa el menú de navegación principal de la aplicación. Se trata de un menú horizontal
implementado con una lista html a la que se le ha aplicado estilos css para que la lista tome aspecto horizontal y cada
ítem del menú cambie de color al situar el ratón encima (ver estilos para menú de navegación horizontal del archivo
<estilos.css>).
11
13. index.php
catalogo.php
Este fichero implementa el catálogo de artículos con sus distintos tipos de productos. Como aspectos importantes está
por una parte el árbol de categorías y subcategorías de artículos cuya estructura se muestra a continuación:
12
14. La implementación de esta estructura se realiza mediante una función recursiva. Partiendo de la categoría raíz (0), la
función va recorriendo y entrando de forma recursiva en cada nivel y subnivel del árbol.
Por otro lado la distinción entre los distintos tipos de artículos se realiza mediante una estructura de tipo switch-case
switch($_REQUEST["idCategoria"]), de forma que dependiendo de la categoría que se haya pasado como parámetro
ejecutará el código correspondiente. Por el momento sólo se han implementado los casos para las subcategorías 45
(libros) y 46 (discos) de la categoría <OCIO Y CULTTURA>, siendo el proceso repetitivo para las demás categorías.
La operativa para cada tipo de artículo se implementa en su clase correspondiente con sus propiedades y métodos. Por
tanto la funcionalidad para la categoría libros estará basada en un objeto de la clase libro, los discos en un objeto de la
clase disco y así sucesivamente.
Si tomamos como ejemplo el tipo de artículos <libros> (los procesos son similares para cualquier otro tipo de producto),
tenemos que en el catálogo se dan ciertos tipos de operaciones comunes:
a) Si no existe ningún tipo de filtrado, se mostrará un listado completo ordenado primero por tema y luego por subtema. El
resultado aparecerá paginado con un tamaño de tres artículos por página (el tamaño de paginación es configurable). La
paginación se basa en la cláusula LIMIT utilizada para restringir el número de registros retornados por el comando
SELECT tal como se implementa en el método siguiente de <class libro>.
13
15. b) Existen dos tipos de filtros, un buscador genérico y un buscador avanzado que para el caso de <libros> se implementan
en el código siguiente:
Buscador genérico: Corresponde a un método de <class libro> y básicamente busca un patrón (cadena de texto) en varios
campos del artículo de la categoría correspondiente.
Buscador Avanzado: Para el caso de <libros> el buscador avanzado se basa en un par de combos correlacionados de
forma que el tema seleccionado en el primer combo carga las materias relacionadas en el segundo combo.
Los combos se cargan mediante los métodos de <class libro>, getTemas() y getMaterias($Tema). Una vez que
seleccionamos tema y subtema en los combos, el filtrado se realiza a través del método de <class libro> siguiente:
14
17. libro_descripcion.php – disco_descripcion.php – etc...
Los ficheros de descripción de un artículo determinado muestran un zoom o descripción más detallada de un artículo
concreto seleccionado de un listado. Los listados de productos muestran de forma resumida las características más
importantes de un artículo, sin embargo podremos ampliar esta información mediante los ficheros objeto_descripción.php
que ayudarán al cliente a decidir de forma más exacta si le interesa o no el producto antes de añadirlo a la cesta de la
compra.
16
18. libro_descripcion.php
Como se observa, básicamente y para el caso de <libro> (sería similar para cualquier otro tipo de objeto), se recupera
mediante el método leerLibroParam($idLibro) de <class libro> el libro del que queremos hacer un zoom y lo mostramos
mediante la función mostrarLibroZoom($arrayLibros).
17
19. carrito.php
El carrito o cesta de la compra basa su operativa en un objeto de la clase <class carrito>. En este caso se ha optado por
implementar el carrito de forma distinta a la expuesta en el libro de texto, ya que en lugar de utilizar una clase para cada
tipo de artículo he preferido utilizar una estructura de arrays tal como se muestra a continuación.
Cursor ($num_articulos)
idArticulo (array) 0 1 2 ------------------------------ n
nombre (array) ------------------------------
0 1 2 n
precioUnidad(array) 0 1 2 ------------------------------ n
------------------------------------------------------------
------------------------------------------------------------
0 1 2 ------------------------------ n
Articulo1 ArticuloN
Articulo2
De esta forma se crea un array para cada campo del artículo en el carrito. Cada vez que se inserta un nuevo artículo se
desplaza el cursor una posición en el conjunto de arrays.
La clase carrito contiene métodos que permiten:
a) Añadir un nuevo artículo. Cada vez que se añade un artículo es necesario llamar a los métodos para recalcular
los totales, tanto parciales (de línea) como finales.
b) Eliminar un nuevo artículo: Hay que destacar que el borrado de un artículo es un borrado lógico (se marca con
0 el objeto eliminado) y por tanto no se borra físicamente dicho producto.
c) Como consecuencia de lo anterior se necesita un método que recuente la cantidad de artículos real,
discriminando aquellos marcados con 0.
18
21. Otro aspecto muy importante respecto al carrito, es que el objeto de la clase carrito que se crea se almacena en una
variable de sesión. Esto nos permite disponer del carrito desde cualquier parte de la aplicación, tanto para seguir
añadiendo artículos desde cualquier parte del catálogo, como posteriormente para añadir a los datos del cliente cuando
se realiza un pedido.
La variable de sesión carrito se destruirá cuando el usuario vacía su carrito o al aceptar un pedido ya que los datos se
vuelcan a la base de datos.
20
23. registroCliente.php
Como se comentó en la descripción general del programa, para que un cliente pueda tramitar un pedido, es necesario que
esté dado de alta en la base de datos de clientes. En este proceso el usuario o empresa facilita unos datos de acceso y los
datos de facturación o dirección de envío. Finalizado el proceso de alta el cliente obtiene una cuenta de usuario (email,
password) que le permitirá por un lado identificarse y por otro que se carguen sus datos por defecto en la tramitación de
un pedido.
El fichero consta de un formulario dividido en dos secciones, datos de acceso y datos de facturación, que un cliente
particular o una empresa han de cumplimentar.
Otro aspecto a destacar es la validación de datos insertados en el formulario. Esta validación se realiza mediante
JavaScript, comprobando que se rellenan los campos obligatorios, que el email tiene una sintaxis mínimamente correcta,
que la clave y su confirmación son coincidentes, etc.
Si todo es correcto se envían los datos del formulario y a través del método addCliente($clienteValues) de <class cliente>,
se añade el nuevo cliente a la base de datos mediante una sentencia INSERT.
22
27. tramitarPedidoLogin.php
En este fichero es donde se identifica el cliente (1ª fase del proceso de tramitación) para poder tramitar su pedido. Si no
está registrado (cliente nuevo) se le facilita un enlace para acceder a la página de registro.
Se trata de un formulario de autenticación que valida los datos de entrada. Se comprueba que no se deje ningún campo
en blanco, que la sintaxis del email sea mínimamente correcta, que exista el usuario y que su clave coincida con la
almecenada en la base de datos.
Tras la validación del formulario se mostrará un listado con los errores en caso de existir o bien si todo es correcto se
pasará a la siguiente fase de la tramitación.
Un aspecto importante a tener en cuenta es que si el cliente se valida con éxito se crea una variable de sesión
$_SESSION["autenticado"]= "SI". Esta variable se usa para evitar que un usuario pueda acceder por URL a páginas que
requieren que previamente se haya identificado.
//COMPRUEBA QUE EL USUARIO ESTA AUTENTICADO=======================================
if ((!isset($_SESSION["autenticado"])) or ($_SESSION["autenticado"] != "SI"))
{
header ("Location: index.php");
}
26
29. finalizarPedido.php – grabarPedido.php
En estos fichero es donde se crea el pedido anexando los datos de la cesta de la compra a los datos del cliente. Por
defecto se cargan los datos de facturación que el cliente facilitó cuando se registró. El cliente tiene la posibilidad de
actualizar los datos de envío para el pedido en curso, seleccionar el tipo de envío y la forma de pago. En función del tipo de
envío y peso del artículo se calcularán los gastos de envío mediante un algoritmo.
El pedido se crea basándose en un objeto de <class pedido> y puesto que existe integridad referencial en la base de datos
entre las tablas <pedidos> y <lineaPedido>, es necesario insertar primero los datos de pedido y luego los datos del carrito
que conforman las lineas de pedido.
28
35. Parte de Administración -> Carpeta <admon>
admin.php
En este fichero se valida que el usuario administrador que pretende acceder a la zona de gestión de la tienda esté dado
de alta en la base de datos en la tabla de administradores (login,passwd).
Si la autenticación es correcta, se crea y activa la variable de sesión $_SESSION["auth_admin"]= 1.
Esta variable se utilizará posteriormente en todas las demás páginas de la zona de administración para evitar accesos
indebidos por URL a páginas que requieren de una previa identificación.
//COMPRUEBA QUE EL USUARIO ADMINISTRADOR ESTA AUTENTICADO
if ((!isset($_SESSION["auth_admin"])) or ($_SESSION["auth_admin"] != 1))
{
header ("Location: admin.php");
}
34
38. admin_ControlPanel.php
Se ha implementado el esqueleto del Panel de Control desde donde se gestionarán todas las operaciones de
administración de la tienda (Correo Entrante, Clientes, Administradores, Seguimiento de Pedidos, Gestión de Artículos,...).
admin_ControlPanel.php
37
41. Se utiliza una estructura de tipo switch-case (switch($_SESSION['OPCION'])), para que se interprete el código de la
operación de gestión seleccionada en la botonera del menú izquierdo.
La sección de pedidos está implementada en parte, y por el momento se pueden filtrar pedidos por empresa o profesional,
restringiendo además por el estado del pedido (En Proceso, Anulado, Pagado, Cualquier Estado).
40
42. Ficheros de Biblioteca y configuración-> Carpeta <biblioteca>
Esta carpeta contiene el fichero <clases.php> que agrupa todas las clases utilizadas en la aplicación a excepción de la
clase carrito que se implementa en un fichero aparte. Las clases libro, disco, cliente, pedido, administrador, contienen
métodos muy intuitivos y prácticamente su funcionalidad se autoexplica por el nombre del método, por lo que no
considero necesario describir cada uno de ellos.
Una clase especial es <class conexion> que nos permite conectarnos a la base de datos de la tienda facilitando los
parámetros: servidor, base de datos, usuario y contraseña. Esta clase nos permite crear en cualquier momento y en
cualquier parte de la aplicación un objeto de la misma para interactuar con la base de datos.
La clase además implementa el método, public function consulta($consulta), que nos permite lanzar una consulta SQL a la
base de datos devolviendo el resultado de la misma.
El fichero de funciones <funciones.php> agrupa una serie de funciones donde la mayor parte de ellas son funciones de
interfaz que sirven para mostrar resultados (mostrar libros, mostrar discos, mostrar el detalle de un libro o de un disco,
visualizar el carrito, etc).
También contiene algunas funciones de validación y las funciones para crear el árbol de categorías y para calcular los
gastos de envío de un pedido en función del peso del artículo y el tipo de envío seleccionado.
El fichero <configurador.php> contiene la definición de los parámetros de configuración de la aplicación de forma
centralizada. Por el momento están definidas las rutas a las carpetas de imágenes y el tamaño de página utilizado por el
paginador de artículos.
<?php
//Ruta a la imágines de la tienda virtual
DEFINE("PATHIMGTV","/TVProjectV00/imagenes/imgTV/");
DEFINE("PATHIMGAPP","/TVProjectV00/imagenes/imgAPP/");
//Bloque de páginas por página (Paginador)
DEFINE("TAMANO_PAGINA",3);
?>
41
59. Herramientas utilizadas para el desarrollo del programa
Entorno Completo de Desarrollo: XAMPP para Windows Version 1.6.8
Editor HTML: Macromedia DREAMWEAVER 8
PHP Version 5.2.6
Gestor Web de Bases de Datos: phpMyAdmin - 2.11.9.2
Servidor Web: Apache/2.2.9 (Win32)
Servidor de Base de Datos (MYSQL): Versión 5.0.67-community-nt
Aplicación para diseño de Bases de Datos: DB Designer 4
Conclusiones, Limitaciones del Programa y Reflexiones finales
Las limitaciones del programa se deben sobre todo a la falta de tiempo para el desarrollo completo del mismo. A
continuación se enumeran algunos aspectos a completar en un futuro:
1) Control automático de existencias de artículos.
2) Crear una sección de productos en oferta.
3) Permitir comunicación entre clientes y responsables de la tienda a través de mensajes de correo.
4) Mejora de la gestión de excepciones y errores.
5) Envío automático de email al cliente con información del pedido que ha realizado.
6) Mejorar los aspectos de seguridad creando usuarios mysql con privilegios limitados.
7) Implementar la forma de pago mediante PayPal.
8) Completar la parte de Administración de la tienda.
9) Implementar SSL.
10) Y otros muchos aspectos,...
Respecto al curso el material del mismo es muy interesante, y en la parte negativa resaltar la poca actividad que ha
tenido el foro (falta de dinamización).
58