Informe TécnicoDesarrollo de Aplicaciones Web para comercio electrónico. Tiendas Virtuales               Tienda Virtual: H...
IntroducciónComo trabajo del curso se ha realizado una pequeña tienda de comercio electrónico denominada H2M (Hogar 2ª Man...
Estructura del Programa                                              http://localhost/TVProjectV00/cliente/index.php      ...
http://localhost/TVProjectV00/admon/admin.phpPARTE SERVIDOR                                                H2M            ...
Arquitectura de la Aplicación sobre la base de una posible ruta de navegaciónA continuación se muestra un ejemplo de funci...
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...
Las dos listas, tema y subtema, están en correspondencia de forma que si en el primer combo seleccionamos un temaconcreto ...
En el proceso de registro el usuario tendrá con cumplimentar un formulario que consta de dos bloques principales, susdatos...
Los datos de facturación facilitados en el proceso de registro podrán ser ahora modificados si así lo desea el cliente.Tam...
Administración de la TiendaA la parte de administración de la tienda se accede por una URL distinta a la de la parte clien...
A cada área de gestión se accederá a través del botón de comando correspondiente situado en el menú verticalizquierdo.Tal ...
Listado del programa (manual del desarrollador)A continuación se comentan los aspectos más interesantes de los ficheros de...
index.phpcatalogo.phpEste fichero implementa el catálogo de artículos con sus distintos tipos de productos. Como aspectos ...
La implementación de esta estructura se realiza mediante una función recursiva. Partiendo de la categoría raíz (0), lafunc...
b) Existen dos tipos de filtros, un buscador genérico y un buscador avanzado que para el caso de <libros> se implementanen...
catalogo.php               15
libro_descripcion.php – disco_descripcion.php – etc...Los ficheros de descripción de un artículo determinado muestran un z...
libro_descripcion.phpComo se observa, básicamente y para el caso de <libro> (sería similar para cualquier otro tipo de obj...
carrito.phpEl carrito o cesta de la compra basa su operativa en un objeto de la clase <class carrito>. En este caso se ha ...
claseCarrito.php                   19
Otro aspecto muy importante respecto al carrito, es que el objeto de la clase carrito que se crea se almacena en unavariab...
carrito.php              21
registroCliente.phpComo se comentó en la descripción general del programa, para que un cliente pueda tramitar un pedido, e...
registroCliente.php                      23
24
25
tramitarPedidoLogin.phpEn este fichero es donde se identifica el cliente (1ª fase del proceso de tramitación) para poder t...
tramitarPedidoLogin.php                          27
finalizarPedido.php – grabarPedido.phpEn estos fichero es donde se crea el pedido anexando los datos de la cesta de la com...
finalizarPedido.php                      29
30
31
grabarPedido.php                   32
33
Parte de Administración -> Carpeta <admon>admin.phpEn este fichero se valida que el usuario administrador que pretende acc...
admin.php            35
36
admin_ControlPanel.phpSe ha implementado el esqueleto del Panel de Control desde donde se gestionarán todas las operacione...
38
39
Se utiliza una estructura de tipo switch-case (switch($_SESSION[OPCION])), para que se interprete el código de laoperación...
Ficheros de Biblioteca y configuración-> Carpeta <biblioteca>Esta carpeta contiene el fichero <clases.php> que agrupa toda...
clases.php             42
43
44
45
46
funciones.php                47
48
49
50
51
52
estilos.css              53
54
55
56
57
Herramientas utilizadas para el desarrollo del programa              Entorno Completo de Desarrollo: XAMPP para Windows Ve...
Próxima SlideShare
Cargando en…5
×

Tienda virtual php_mysql

3.854 visualizaciones

Publicado el

2 comentarios
1 recomendación
Estadísticas
Notas
  • Buenas disculpa tendras el codigo completo de tu trabajo? jonathanberdugo@hotmail.com
       Responder 
    ¿Estás seguro?    No
    Tu mensaje aparecerá aquí
  • De casualidad tendras el codigo de tu trabajo, por favor enviame el codigo al email
    msnpractica@hotmail.com
    gracias
       Responder 
    ¿Estás seguro?    No
    Tu mensaje aparecerá aquí
Sin descargas
Visualizaciones
Visualizaciones totales
3.854
En SlideShare
0
De insertados
0
Número de insertados
406
Acciones
Compartido
0
Descargas
321
Comentarios
2
Recomendaciones
1
Insertados 0
No insertados

No hay notas en la diapositiva.

Tienda virtual php_mysql

  1. 1. Informe TécnicoDesarrollo de Aplicaciones Web para comercio electrónico. Tiendas Virtuales Tienda Virtual: H2M (Hogar 2ª Mano)
  2. 2. IntroducciónComo 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 hogarde segunda mano.H2M se divide en dos bloques esenciales, por un lado una parte cliente dirigida a los potenciales compradores y por otrouna parte de administración reservada a usuarios propietarios de la tienda.Parte Cliente de la AplicaciónContiene la operativa básica para que un potencial comprador pueda realizar un pedido con los artículos que le interesende 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 contactodonde los clientes podrán comunicarse con los responsables de la tienda para sugerencias, quejas o solicitar informaciónsobre algún pedido, una sección donde se identifiquen los responsables de la tienda y otras muchas que por falta detiempo no se han realizado.Parte de Administración de la AplicaciónSe trata de una zona restringida a la que únicamente podrán acceder, previa identificación, usuarios consideradosadministradores 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 lospedidos realizados por los clientes. Lógicamente la administración de una tienda virtual conlleva varias tareas comoseguimiento de pedidos (en proceso, anulados, pagados,...), gestión de productos (alta, bajas y modificaciones tanto decategorías como de artículos), gestión del correo de clientes (contacto), gestión de cuentas de administración y muchasotras que por el momento no se han implementado dado el tamaño de la tarea. 1
  3. 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. 4. http://localhost/TVProjectV00/admon/admin.phpPARTE 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. 5. Arquitectura de la Aplicación sobre la base de una posible ruta de navegaciónA continuación se muestra un ejemplo de funcionamiento de la aplicación tomando como base una posible comprarealizada por un cliente. La ruta descrita en el proceso de compra servirá para explicar los diagramas de estructuravistos anteriormente y describir la operativa de la aplicación a través de sus interfaces (guía de usuario).Proceso de CompraEn la parte cliente de la aplicación un usuario podrá seleccionar uno o varios artículos de su interés de un catálogo, llenarsu cesta de la compra (carrito) con dichos artículos y realizar un pedido con su compra. Es requisito para que el usuariopueda tramitar un pedido estar registrado en la base de datos de clientes donde, una vez finalizado el proceso de registrose le facilitará una cuenta de usuario (email,contraseña) que serán los datos de identificación que necesitará paratramitar los pedidos.Catálogo de ArtículosAl 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 ensubcategorí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 semostrará paginado, en este caso el tamaño de artículos por página es de 3. Cada ítem del listado contiene un pequeñoresumen informativo sobre el artículo que podrá ampliarse pinchando en el vínculo <Leer más>. 4
  6. 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 unasherramientas 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 quedescriben 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 lacadena 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. 7. Las dos listas, tema y subtema, están en correspondencia de forma que si en el primer combo seleccionamos un temaconcreto (por ej. Informática), el segundo combo cargará los subtemas relacionados (Base de Datos, Programación), locual 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 decompra (navegación y selección de productos en catálogo). Esta herramienta permite al cliente visualizar en todomomento 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 PedidoUna vez que el cliente está satisfecho con los artículos que desea comprar puede comenzar a tramitar su pedido pulsandoen 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 elproceso de tramitación del pedido bastaría con identificarse mediante su cuenta de acceso (email y contraseña), o bienque se trate de un nuevo cliente que deberá registrarse antes de poder continuar con el proceso. 6
  8. 8. En el proceso de registro el usuario tendrá con cumplimentar un formulario que consta de dos bloques principales, susdatos de acceso (email y contraseña) y los datos de facturación que incluye la identificación de la empresa o profesionaly su dirección. Esta dirección será tomada por defecto como dirección de envío para los pedidos pero podrá sermodificada 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 deacceso obtenidos.Tras la identificación el usuario accede a la información de su pedido compuesto en principio por los datos de comprajunto con los datos de facturación. 7
  9. 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 omensajerí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 alcoste 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 lainformación de su pedido, previa comprobación de existencias. 8
  10. 10. Administración de la TiendaA 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, porseguridad, no habilitar en la parte cliente ningún acceso a este área restringida, de forma que no haya conexión entreambas zonas.Por tanto accedemos a la zona de gestión de la tienda mediante la URL: http://localhost/TVProjectV00/admon/admin.phpLo 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 distintosprocesos como seguimiento de pedidos, correo de clientes, dar de alta-modificar-borrar productos, gestión de cuentas declientes y de administradores de tienda. 9
  11. 11. A cada área de gestión se accederá a través del botón de comando correspondiente situado en el menú verticalizquierdo.Tal como se comentó anteriormente, se ha implementado por el momento parte de la gestión de pedidos, el resto quedapendiente de implementación ya que requiere una enorme cantidad de tiempo.Implementación de la Base de DatosLa figura muestra el modelo relacional de base de datos que da soporte a la tienda. Como se observa, por el momentoestá compuesta por seis tablas relacionadas (integridad referencial). La base de datos tendrá que ampliarse a medida quese dote de más funcionalidades a la tienda, pero por el momento se corresponde con la parte implementada de laaplicació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 ysubcategorí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 tablapara 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ánaquellos 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. 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 laaplicación sigue un modelo similar al del libro de texto del curso. El conjunto de ficheros que dan funcionalidad a la partecliente y de administración, están agrupados en sus respectivas carpetas <cliente> y <admon>. Las otras dos carpetasimportantes <biblioteca> y <css> son de uso común a ambas zonas.Parte Cliente -> Carpeta <cliente>index.phpEste 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 sinnecesidad de refrescar la página. El código javascript está implementado en el fichero <fecha-hora.js> (archivoencontrado 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ú horizontalimplementado 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. 13. index.phpcatalogo.phpEste 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. 14. La implementación de esta estructura se realiza mediante una función recursiva. Partiendo de la categoría raíz (0), lafunció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-caseswitch($_REQUEST["idCategoria"]), de forma que dependiendo de la categoría que se haya pasado como parámetroejecutará 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. Portanto la funcionalidad para la categoría libros estará basada en un objeto de la clase libro, los discos en un objeto de laclase 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. Elresultado aparecerá paginado con un tamaño de tres artículos por página (el tamaño de paginación es configurable). Lapaginación se basa en la cláusula LIMIT utilizada para restringir el número de registros retornados por el comandoSELECT tal como se implementa en el método siguiente de <class libro>. 13
  15. 15. b) Existen dos tipos de filtros, un buscador genérico y un buscador avanzado que para el caso de <libros> se implementanen 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 varioscampos 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 deforma 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 queseleccionamos tema y subtema en los combos, el filtrado se realiza a través del método de <class libro> siguiente: 14
  16. 16. catalogo.php 15
  17. 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ículoconcreto seleccionado de un listado. Los listados de productos muestran de forma resumida las características másimportantes de un artículo, sin embargo podremos ampliar esta información mediante los ficheros objeto_descripción.phpque 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 lacompra. 16
  18. 18. libro_descripcion.phpComo se observa, básicamente y para el caso de <libro> (sería similar para cualquier otro tipo de objeto), se recuperamediante el método leerLibroParam($idLibro) de <class libro> el libro del que queremos hacer un zoom y lo mostramosmediante la función mostrarLibroZoom($arrayLibros). 17
  19. 19. carrito.phpEl carrito o cesta de la compra basa su operativa en un objeto de la clase <class carrito>. En este caso se ha optado porimplementar el carrito de forma distinta a la expuesta en el libro de texto, ya que en lugar de utilizar una clase para cadatipo 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 Articulo2De esta forma se crea un array para cada campo del artículo en el carrito. Cada vez que se inserta un nuevo artículo sedesplaza 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
  20. 20. claseCarrito.php 19
  21. 21. Otro aspecto muy importante respecto al carrito, es que el objeto de la clase carrito que se crea se almacena en unavariable de sesión. Esto nos permite disponer del carrito desde cualquier parte de la aplicación, tanto para seguirañadiendo artículos desde cualquier parte del catálogo, como posteriormente para añadir a los datos del cliente cuandose 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 sevuelcan a la base de datos. 20
  22. 22. carrito.php 21
  23. 23. registroCliente.phpComo se comentó en la descripción general del programa, para que un cliente pueda tramitar un pedido, es necesario queesté dado de alta en la base de datos de clientes. En este proceso el usuario o empresa facilita unos datos de acceso y losdatos 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 deun pedido.El fichero consta de un formulario dividido en dos secciones, datos de acceso y datos de facturación, que un clienteparticular 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 medianteJavaScript, 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
  24. 24. registroCliente.php 23
  25. 25. 24
  26. 26. 25
  27. 27. tramitarPedidoLogin.phpEn este fichero es donde se identifica el cliente (1ª fase del proceso de tramitación) para poder tramitar su pedido. Si noestá 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 campoen blanco, que la sintaxis del email sea mínimamente correcta, que exista el usuario y que su clave coincida con laalmecenada 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 sepasará 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 querequieren que previamente se haya identificado.//COMPRUEBA QUE EL USUARIO ESTA AUTENTICADO=======================================if ((!isset($_SESSION["autenticado"])) or ($_SESSION["autenticado"] != "SI")){ header ("Location: index.php");} 26
  28. 28. tramitarPedidoLogin.php 27
  29. 29. finalizarPedido.php – grabarPedido.phpEn estos fichero es donde se crea el pedido anexando los datos de la cesta de la compra a los datos del cliente. Pordefecto se cargan los datos de facturación que el cliente facilitó cuando se registró. El cliente tiene la posibilidad deactualizar 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 deenví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 datosentre las tablas <pedidos> y <lineaPedido>, es necesario insertar primero los datos de pedido y luego los datos del carritoque conforman las lineas de pedido. 28
  30. 30. finalizarPedido.php 29
  31. 31. 30
  32. 32. 31
  33. 33. grabarPedido.php 32
  34. 34. 33
  35. 35. Parte de Administración -> Carpeta <admon>admin.phpEn este fichero se valida que el usuario administrador que pretende acceder a la zona de gestión de la tienda esté dadode 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 accesosindebidos por URL a páginas que requieren de una previa identificación.//COMPRUEBA QUE EL USUARIO ADMINISTRADOR ESTA AUTENTICADOif ((!isset($_SESSION["auth_admin"])) or ($_SESSION["auth_admin"] != 1)){ header ("Location: admin.php");} 34
  36. 36. admin.php 35
  37. 37. 36
  38. 38. admin_ControlPanel.phpSe ha implementado el esqueleto del Panel de Control desde donde se gestionarán todas las operaciones deadministración de la tienda (Correo Entrante, Clientes, Administradores, Seguimiento de Pedidos, Gestión de Artículos,...).admin_ControlPanel.php 37
  39. 39. 38
  40. 40. 39
  41. 41. Se utiliza una estructura de tipo switch-case (switch($_SESSION[OPCION])), para que se interprete el código de laoperació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. 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 laclase carrito que se implementa en un fichero aparte. Las clases libro, disco, cliente, pedido, administrador, contienenmétodos muy intuitivos y prácticamente su funcionalidad se autoexplica por el nombre del método, por lo que noconsidero 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 losparámetros: servidor, base de datos, usuario y contraseña. Esta clase nos permite crear en cualquier momento y encualquier 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 labase 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 deinterfaz 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 losgastos 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 formacentralizada. Por el momento están definidas las rutas a las carpetas de imágenes y el tamaño de página utilizado por elpaginador de artículos.<?php//Ruta a la imágines de la tienda virtualDEFINE("PATHIMGTV","/TVProjectV00/imagenes/imgTV/");DEFINE("PATHIMGAPP","/TVProjectV00/imagenes/imgAPP/");//Bloque de páginas por página (Paginador)DEFINE("TAMANO_PAGINA",3);?> 41
  43. 43. clases.php 42
  44. 44. 43
  45. 45. 44
  46. 46. 45
  47. 47. 46
  48. 48. funciones.php 47
  49. 49. 48
  50. 50. 49
  51. 51. 50
  52. 52. 51
  53. 53. 52
  54. 54. estilos.css 53
  55. 55. 54
  56. 56. 55
  57. 57. 56
  58. 58. 57
  59. 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 4Conclusiones, Limitaciones del Programa y Reflexiones finalesLas limitaciones del programa se deben sobre todo a la falta de tiempo para el desarrollo completo del mismo. Acontinuació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 hatenido el foro (falta de dinamización). 58

×