Diseño Web PHP y MySQL Ingeniería Técnica en Informática de Gestión Proyecto final de carrera Empresa: Dino Theo Atlantis MC, S.L Autor: Marc Mateu Martí Tutor: Miguel Ángel Acebo Visanzay Fecha: junio 2008 Proyecto final de carrera Dino Theo Atlantis MC, S.L Índice Descripción de la empresa ............................................................................................. 3 Ubicación del alumno dentro de la empresa .................................................................. 4 Descripción del trabajo realizado .................................................................................. 4 Problemática .............................................................................................................. 4 Solución .................................................................................................................... 5 Renovar la imagen .................................................................................................. 5 Estructuración y presentación de la información ..................................................... 6 Herramientas utilizadas ............................................................................................... 21 Diseño de la web, elección de tecnología ................................................................. 21 Ideas generales de una página Web bien construida ................................................. 21 Separar el contenido del diseño ............................................................................. 21 Código HTML válido ........................................................................................... 21 Código CSS válido ............................................................................................... 21 El contenido ha de llegar a todos........................................................................... 22 Estándares web ........................................................................................................ 23 ¿Qué es un estándar? ............................................................................................ 23 HTML .................................................................................................................. 23 CSS ...................................................................................................................... 24 Uso del CSS y HTML........................................................................................... 26 Diseño Gráfico ..................................................................................................... 29 PHP ...................................................................................................................... 29 Base de Datos: MySQL ........................................................................................ 34 Apache ................................................................................................................. 39 Xampp .................................................................................................................. 40 Crimson Editor ..................................................................................................... 41 Gimp .................................................................................................................... 42 Aportaciones del proyecto a los conocimientos del alumno ......................................... 43 Aportaciones del los estudios realizados al proyecto ................................................... 44 Conclusiones ............................................................................................................... 45 2 Proyecto final de carrera Dino Theo Atlantis MC, S.L Descripción de la empresa Dino Theo Atlantis MC, S.L. es una empresa familiar dedicada al aprovisionamiento de buques, fue creada por Theodoro Dritsakis en 1956. Theodoros Dritsakis nació en Andros (una isla griega con una larga tradición marinera). El padre de Theodoro, trabajó como jefe de máquina en buques griegos, y así es como empezó su relación con compañías navieras. Theodoro Dritsakis siguió sus pasos y después de varios años trabajando en el sector marítimo, tuvo la oportunidad de empezar a trabajar en el consulado griego de Barcelona. Gracias a este vínculo con España, vio factible la creación de una empresa propia en nuestro país. Fue el inicio de su empresa: DINO THEO ATLANTIS MC, S.L. En sus inicios la empresa se llamaba Atlantis, y nació con el ánimo de servir a los buques que llegaban a los puertos de Barcelona y Tarragona. Unos años después el nombre comercial fue cambiado a Theo Atlantis, y en la actualidad la empresa es conocida como Dino Theo Atlantis MC, S.L, dando cabida en la empresa al hijo de Theodoros Dritsakis. La filosofía de la empresa siempre ha sido dar un servicio completo a sus clientes con la mayor calidad posible; siempre desde un mando familiar. Siguiendo la filosofía inicial de la empresa, han crecido sustancialmente en los últimos años, y en la actualidad dan servicio a toda España, Gibraltar, Sur de Francia y Portugal. 3 Proyecto final de carrera Dino Theo Atlantis MC, S.L Ubicación del alumno dentro de la empresa En la empresa soy el encargado de realizar la página web. Como la empresa no tiene departamento de informática, soy yo mismo quién se encargará de su mantenimiento y quién les informa y les consulta como quieren la página. La empresa, al no estar dedicada al mundo de la informática y al estar en convenio con la Universidad y no como un trabajador más, me deja trabajar desde casa e ir allí cuando lo necesite, por si me falta información o alguna consulta sobre la misma. Descripción del trabajo realizado Problemática Hasta ahora la empresa Dino Theo Atlantis disponía de una página hecha por los propios trabajadores y de otra página realizada hace 10 años, por lo que se ha quedado anticuada respecto a la competencia. La página web de la que disponían era confusa y llena de programación flash, cosa que no gusta demasiado, a la vez que ralentiza la página. 4 Proyecto final de carrera Dino Theo Atlantis MC, S.L La antigua página web no dispone de importantes funcionalidades, como una consulta exhaustiva de sus productos, una guía de contactos, etc. Solución Renovar la imagen El problema principal era encontrar un estilo de página que gustara, fuese intuitivo y fácil de manejar, junto con una visión agradable y que hiciera referencia a la empresa y a su sector. El logo El diseño del logo es una parte muy importante de la empresa. El logo tiene influencia en cada aspecto de la empresa y establecerá la línea a seguir en el diseño gráfico de la página web. El diseño del logo de la empresa ya se encuentra realizado desde hace mucho años en la empresa, se trata de la bandera de un barco: 5 Proyecto final de carrera Dino Theo Atlantis MC, S.L Estructuración y presentación de la información Para las personas que piensen que desarrollar una primera página web para su negocio y así promocionar sus productos y servicios, será una tarea fácil, pueden llevarse alguna sorpresa, ya que no es tan sencillo como parece. Para empezar, la estructuración de la página Web, lo primero que se hizo fue decidir los apartados que tendría. Como no tenía experiencia en hacer páginas de este estilo, hablé con los integrantes de la empresa para ver que tenían en mente y visité algunas páginas webs similares para coger ideas, de la misma manera tenía que saber que querían y que no o el idioma en el cual la querían. Una introducción a la empresa, para saber que página se esta visitando de manera rápida, su historia, sus productos y servicios, localizaciones y como ponerse en contacto con los mismos. Mi objetivo principal en ésta página web ha sido presentar los contenidos de la forma más intuitiva y clara posible para cualquier usuario que desea visitar la página web, y al mismo tiempo, hacerla fácil y entendible a los propios de la empresa, que se encargarán de controlar sus productos o/y quién accede a su página web. Todo esto se consigue separando de forma correcta todo el contenido en sus secciones correspondientes. El acceso de los clientes está muy claro y visual, ya que lo he situado en la zona alta de la página web de manera que cambiando de apartado sigue apareciendo. Una vez registrados sus opciones personales aparecen en la parte derecha de la pantalla. Si los usuarios desean navegar por la web no deben más que ir seleccionando cada uno de los apartados que hay justo después de logarse, cosa que me parece muy intuitiva y entendible. 6 Proyecto final de carrera Dino Theo Atlantis MC, S.L La estructura de la página web Cabecera La cabecera denota claramente la dedicación marítima que tiene la empresa, dónde se puede ver el nombre de la misma de manera continua. De la misma manera puede verse el logo de la empresa de manera fija en la parte izquierda de la web. Acceso y/o registro de usuarios Barra de registro de usuarios y/o acceso, se muestra de forma permanente en cualquier página dónde se navegue. Una vez el usuario se ha registrado Datos a la hora de registrar un usuario: 7 Proyecto final de carrera Dino Theo Atlantis MC, S.L Barra de menú Menú para navegar por la página web y acceder a las secciones. Cada vez que se accede a una sección, aparece su nombre en la página principal para saber donde nos encontramos en cada momento. Menú lateral El menú lateral tiene dos funciones, la primera función se muestra cuando el usuario que accede a la página web no esta logeado, en ese momento se muestran novedades o noticias que la empresa considera relevantes, para que los demás usuarios puedan ver sus avances y/o nuevas adquisiciones. La otra función se puede ver una vez se logea el usuario, entonces en el menú lateral aparecen la funciones que puede realizar según el tipo de usuario que sea, si es usuario estándar, sólo podrá modificar su perfil, en cambio, si es usuario administrador, podrá editar su perfil, el de los demás usuarios y añadir o modificar productos. Ejemplo de menú lateral administrador: 8 Proyecto final de carrera Dino Theo Atlantis MC, S.L Contenido Historia de la empresa: Dónde se explica la historia de la empresa. 9 Proyecto final de carrera Dino Theo Atlantis MC, S.L Productos Apartado dónde podemos acceder a un listado de productos de la empresa, que ellos mismos podrán modificar y añadir diferentes productos desde el menú lateral derecho. 10 Proyecto final de carrera Dino Theo Atlantis MC, S.L Después de acceder a “More products”, podemos seleccionar un tipo de productos y ver un listado de productos de los que la empresa distribuye. Si no sabemos que tipo de categoría es el producto que buscamos, podemos usar el buscar que se encuentra en la parte superior de la pantalla y nos mostrará, si los hay, los productos buscados. 11 Proyecto final de carrera Dino Theo Atlantis MC, S.L Este es un ejemplo de una parte del listado del tipo de productos “Welfare Items”: 12 Proyecto final de carrera Dino Theo Atlantis MC, S.L En esta parte no se puede acceder si no estas logado, en caso de intentar acceder sin estar logado nos llevará a la página principal y aparecerá el siguiente mensaje: Servicios y localizaciones En estos dos apartados, nos aparece la información de los servicios que ofrece la empresa y su localización de cada una de sus sedes: 13 Proyecto final de carrera Dino Theo Atlantis MC, S.L 14 Proyecto final de carrera Dino Theo Atlantis MC, S.L Contactos Informa de las distintas maneras en las que los usuarios pueden ponerse en contacto con la empresa: 15 Proyecto final de carrera Dino Theo Atlantis MC, S.L Menú lateral En el menú lateral tenemos dos visiones, la primera es cuando el usuario todavía no se ha logado, nos aparecerán noticias o novedades recientes o importantes en la empresa: La segunda visión vendrá dada a partir del registro de los usuarios, y variará según el usuario sea administrador o no: Vista de usuario estándar: Vista usuario administrador: 16 Proyecto final de carrera Dino Theo Atlantis MC, S.L Modificación del perfil: El usuario puede modificar su propio perfil en el apartado My Profile que aparece en el menú lateral derecho una vez está logado. El administrador puede modificar su perfil y puede modificar los perfiles de los usuarios, en el apartado Edit Users, dónde le aparecerá un desplegable con todos los usuarios, así como deshabilitarlos para que no puedan volver a logarse por algún motivo. Aquí vemos un ejemplo de modificación de un perfil, concretamente es el perfil del administrador. La opción Status no está disponible en la modificación de usuario, ya que los propios usuarios no pueden deshabilitarse. 17 Proyecto final de carrera Dino Theo Atlantis MC, S.L Añadir productos Cuando un usuario tenga poderes de administrador, podrá añadir productos en la base de datos para que los demás usuarios puedan verlos. En el menú lateral aparecerá la opción Add product, si la seleccionamos aparecerá la siguiente pantalla: Dónde pondremos la referencia, nombre, descripción del producto y seleccionaremos el tipo del producto. Una vez el administrador clique en Save, el producto queda insertado en la base de datos y activado para que los demás usuarios puedan verlo. 18 Proyecto final de carrera Dino Theo Atlantis MC, S.L Editar productos De la misma manera que para añadir productos, para editar un producto son necesarios privilegios de administrador. Podremos cambiar cualquier apartado del producto y podremos deshabilitar un producto, el cual no tenga la empresa disponible en un momento determinado. En ningún caso un usuario administrador podrá eliminar un producto de manera definitiva, de eso se encargará el administrador de la base de datos. Para acceder a la modificación de un producto hay que seleccionar Edit product en el menú lateral y aparecerá un desplegable con los distintos productos, seleccionaremos uno y lo modificaremos: 19 Proyecto final de carrera Dino Theo Atlantis MC, S.L Caducidad de la sesión Una vez el usuario se ha logado, hay un tiempo de espera en el cual puede realizar cualquier tipo de navegación por la página web, a partir de cierto tiempo (actualmente la página dispone de un tiempo limitado, este tiempo puede cambiarse) le aparecerá el siguiente mensaje: Si el usuario quiere volver a consultar/modificar/añadir productos o perfiles deberá volver a logarse. Este sistema se utiliza para evitar que mucha gente pueda estar logada a la vez de manera innecesaria. El único usuario que no tiene limitada su estancia en la página web es el administrador, ya que él debe poder añadir productos u otras cosas sin tener un tiempo máximo, ya que no es lógico que sólo deje introducir 5 productos, por poner un ejemplo, y deba volver a logarse. 20 Proyecto final de carrera Dino Theo Atlantis MC, S.L Herramientas utilizadas Diseño de la web, elección de tecnología Ideas generales de una página Web bien construida Separar el contenido del diseño Todos los navegadores muestran el texto de una página, pero algunos no soportan algún tipo de imagen, colores, animaciones o diferentes efectos. Separar el contenido del diseño hace posible que cualquiera pueda leer la página, aunque haya alguna parte que no se muestre de manera correcta, los visitantes o usuarios no tendrán problemas para ver la información, que es lo más importante. También tiene la ventaja en que puedes cambiar el diseño a la web sin cambiar el texto o viceversa. Código HTML válido Para que todo funcione de manera correcta y sin problemas, deben usarse las especificaciones del lenguaje HTML. Código CSS válido Como en alguna parte del código también se ha usado la programación en CSS, está también ha de ser valida para que no de problemas. 21 Proyecto final de carrera Dino Theo Atlantis MC, S.L El contenido ha de llegar a todos Una página es accesible si se puede llegar fácilmente a su contenido. No tiene que estar escondido entre diversos menús y diversas opciones, dónde muchas veces no sabemos ni donde nos encontramos y puede resultar caótico. Tampoco debe depender del tipo de configuración que tenga el navegador del usuario. Al tener la web un contenido de HTML y todos los navegadores son compatibles con él, con escribir de manera correcta el HTML ya tenemos mucho ganado. 22 Proyecto final de carrera Dino Theo Atlantis MC, S.L Estándares web ¿Qué es un estándar? Los estándares web son un conjunto de recomendaciones dadas por el World Wide Web Consortium y otras organizaciones internacionales acerca de cómo crear e interpretar documentos basados en el Web. Son un conjunto de tecnologías orientadas a brindar beneficios a la mayor cantidad de usuarios, asegurando la vigencia de todo documento publicado en el Web. El objetivo es crear un Web que trabaje mejor para todos, con sitios accesibles a más personas y que funcionen en cualquier dispositivo de acceso a Internet. En la web se utilizan estadares como el HTML o el CSS, el CSS se usa en el tipo de letra. HTML HTML, siglas de HyperText Markup Language (Lenguaje de Marcado de Hipertexto), es el lenguaje de marcado predominante para la construcción de páginas web. Es usado para describir la estructura y el contenido en forma de texto, así como para complementar el texto con objetos tales como imágenes. HTML se escribe en forma de "etiquetas", rodeadas por corchetes angulares (<,>). HTML también puede describir, hasta un cierto punto, la apariencia de un documento, y puede incluir un script (por ejemplo Javascript), el cual puede afectar el comportamiento de navegadores web y otros procesadores de HTML. HTML también es usado para referirse al contenido del tipo de MIME text/html o todavía más ampliamente como un término genérico para el HTML, ya sea en forma descendida del XML (como XHTML 1.0 y posteriores) o en forma descendida directamente de SGML (como HTML 4.01 y anteriores). Por convención, los archivos de formato HTML usan la extensión .htm o .html. (Origen Wikipedia) 23 Proyecto final de carrera Dino Theo Atlantis MC, S.L CSS Las hojas de estilo en cascada (Cascading Style Sheets, CSS) son un lenguaje formal usado para definir la presentación de un documento estructurado escrito en HTML o XML (y por extensión en XHTML). El W3C (World Wide Web Consortium) es el encargado de formular la especificación de las hojas de estilo que servirán de estándar para los agentes de usuario o navegadores. La idea que se encuentra detrás del desarrollo de CSS es separar la estructura de un documento de su presentación. Por ejemplo, el elemento de HTML <H1> indica que un bloque de texto es un encabezamiento y que es más importante que un bloque etiquetado como <H2>. Versiones más antiguas de HTML permitían atributos extra dentro de la etiqueta abierta para darle formato (como el color o el tamaño de fuente). No obstante, cada etiqueta <H1> debía disponer de la información si se deseaba un diseño consistente para una página, y además, una persona que lea esa página con un navegador pierde totalmente el control sobre la visualización del texto. Cuando se utiliza CSS, la etiqueta <H1> no debería proporcionar información sobre como va a ser visualizado, solamente marca la estructura del documento. La información de estilo separada en una hoja de estilo, especifica cómo se ha de mostrar <H1>: color, fuente, alineación del texto, tamaño, y otras características no visuales como definir el volumen de un sintetizador de voz (véase Sintetización del habla), por ejemplo. La información de estilo puede ser adjuntada tanto como un documento separado o en el mismo documento HTML. En este último caso podrían definirse estilos generales en la cabecera del documento o en cada etiqueta particular mediante el atributo "style". 24 Proyecto final de carrera Dino Theo Atlantis MC, S.L Las ventajas de utilizar CSS (u otro lenguaje de estilo) son: Control centralizado de la presentación de un sitio web completo con lo que se agiliza de forma considerable la actualización del mismo. Los navegadores permiten a los usuarios especificar su propia hoja de estilo local que será aplicada a un sitio web, con lo que aumenta considerablemente la accesibilidad. Por ejemplo, personas con deficiencias visuales pueden configurar su propia hoja de estilo para aumentar el tamaño del texto o remarcar más los enlaces. Una página puede disponer de diferentes hojas de estilo según el dispositivo que la muestre o incluso a elección del usuario. Por ejemplo, para ser impresa, mostrada en un dispositivo móvil, o ser "leída" por un sintetizador de voz. El documento HTML en sí mismo es más claro de entender y se consigue reducir considerablemente su tamaño (siempre y cuando no se utilice estilo en línea) (Origen Wikipedia) 25 Proyecto final de carrera Dino Theo Atlantis MC, S.L Uso del CSS y HTML La página web de Dino Theo Atlantis sigue los anteriores estándares comentados en todas o alguna de sus partes. La página web está realizada de tal forma que la tabla contenedora siempre está centrada. Dentro de ésta tabla, hay diversas tablas para dividir cada uno de los apartados de la web. Aquí puede observarse la tabla contenedora de la página web. <table border="1" width="820px" height="100%" align="center" cellpadding="0" cellspacing="0" background="./imatges/bg2.jpg"> 26 Proyecto final de carrera Dino Theo Atlantis MC, S.L Aquí pueden verse las diferentes tablas que forman la página web, la del título, la barra de registro, la barra de menú, la página central y el menú lateral. Las letras de toda la web están tratadas en modo CSS, así podemos cambiar tamaños, colores y tipos de manera rápida y sencilla. Los estilos css se encuentran en el archivo dta.css, aquí un ejemplo: /* CSS Document */ body { font-family: Verdana, Arial, Helvetica, sans-serif; font-size:12px; 27 Proyecto final de carrera Dino Theo Atlantis MC, S.L } h1 { font-family:Verdana, Arial, Helvetica, sans-serif; font-size:20px; font-weight:bold; } h2 { font-family:Verdana, Arial, Helvetica, sans-serif; font-size:17px; font-weight:bold; } También se hubieran podido realizar más partes de la web en modo CSS en lugar de tablas, pero decidí utilizar este método, por ser más entendible en un principio e igual de efectivo, aunque quizás no tan práctico a 28 la hora de realizar un cambio. Proyecto final de carrera Dino Theo Atlantis MC, S.L Diseño Gráfico La web se ha diseñado a partir de las peticiones realizadas por la empresa y siguiendo un estándar, en este caso HTML, PHP y una base de datos realizada en SQL. Ahora veremos una lista de programas utilizados con su descripción. PHP PHP es un lenguaje de programación interpretado, diseñado originalmente para la creación de páginas web dinámicas. Es usado principalmente en interpretación del lado del servidor (server-side scripting) pero actualmente puede ser utilizado desde una interfaz de línea de comandos o en la creación de otros tipos de programas incluyendo aplicaciones con interfaz gráfica usando las bibliotecas Qt o GTK+. PHP es un acrónimo recursivo que significa PHP Hypertext Pre-processor (inicialmente PHP Tools, o, Personal Home Page Tools). Fue creado originalmente por Rasmus Lerdof en 1994; sin embargo la implementación principal de PHP es producida ahora por The PHP Group y sirve como el estándar de facto para PHP al no haber una especificación formal. Publicado bajo la PHP License, la Free Software Foundation considera esta licencia como software libre. PHP es un lenguaje interpretado de propósito general ampliamente usado y que está diseñado especialmente para desarrollo web y puede ser embebido dentro de código HTML. Generalmente se ejecuta en un servidor web, tomando el código en PHP como su entrada y creando páginas web como salida. Puede ser desplegado en la mayoría de los servidores web y en casi todos los sistemas operativos y plataformas sin costo alguno. PHP se encuentra instalado en más de 20 millones de sitios web y en un millón de servidores, aunque el número de sitios en PHP ha declinado desde agosto de 2005. Es también el módulo Apache más popular entre las computadoras que utilizan Apache como servidor web. La más reciente versión principal del PHP fue la versión 5.2.6 de 1 de mayo de 2008. La versión utilizada en este caso será la 5.2.5, que es la que viene por defecto en la aplicación XAMPP que explicaremos más adelante. 29 Proyecto final de carrera Dino Theo Atlantis MC, S.L A la hora de validar a los usuarios en la página web, se compara el nombre de usuario y su contraseña, que introduce el usuario, y se comparan con los almacenados en la base de datos. Las funciones que se encargan de esto contienen atributos de conexión a la base de datos del servidor web y las funciones para conectarse y hacer las consultas necesarias para la validación, así como otro tipo de consultas, como los productos. Las contraseñas de la página web una vez son introducidas por el usuario son encriptadas, de manera que nadie salvo el usuario sepa su contraseña. Veamos la clase del usuario: <? class UserDTO { var $iduser; var $login; var $name; var $second; var $company; var $nationality; var $password; var $email; var $useradmin; var $status; 30 Proyecto final de carrera Dino Theo Atlantis MC, S.L function UserDTO( $iduser, $login, $password, $name, $second, $company, $nationality, $email, $useradmin, $status) { $this->iduser = $iduser; $this->login = $login; $this->password = $password; $this->name = $name; $this->second = $second; $this->company = $company; $this->nationality = $nationality; $this->email = $email; $this->useradmin = $useradmin; $this->status = $status; 31 Proyecto final de carrera Dino Theo Atlantis MC, S.L } } ?> Otra aplicación que le damos al PHP, sería el limitar el acceso a algunas funciones, según si el usuario es administrador o no, como el añadir productos, si el usuario no es administrador no podrá realizar ninguna de estas tareas gracias a la función del archivo seguridad: <? require_once './includes/config.inc.php'; //Incluir fichero de funciones. require_once './includes/funcions.php'; if (((!isset($_SESSION["autenticat"])) || (!$_SESSION["autenticat"])) || (!(isset($_SESSION["useradmin"]))&&(!$_SESSION["useradmin"]))){ //si no existe, enviamos a la página de autenticación header("Location: index.html?errorusuari"); exit(); } else { $dataGuardada = $_SESSION["ultimacces"]; $ara = date("Y-n-j H:i:s"); $temps = ( strtotime($ara) - strtotime($dataGuardada) ); 32 Proyecto final de carrera Dino Theo Atlantis MC, S.L //comparemos el tiempo transcurrido en segundos (definido en config.inc.php) // 5 minutos = 5 * 60 = 300 //10 minutos = 10 * 60 = 600 //15 minutos = 15 * 60 = 900 //20 minutos = 20 * 60 = 1.200 if ( $temps >= TIMEOUT ) { //si pasa más tiempo del permitido cerramos sesión session_destroy(); header("Location: index.html?caducada"); //enviamos al usuario a la página inicial } else { $_SESSION["ultimacces"] = $ara; } } ?> 33 Proyecto final de carrera Dino Theo Atlantis MC, S.L Base de Datos: MySQL MySQL es un sistema de gestión de base de datos relacional, multihilo y multiusuario con más de seis millones de instalaciones. MySQL AB desarrolla MySQL como software libre en un esquema de licenciamiento dual. En enero de 2008, MySQL AB fue adquirida por Sun Microsystems, y por tanto MySQL. Por un lado se ofrece bajo la GNU GPL para cualquier uso compatible con esta licencia, pero las empresas que quieran incorporarlo en productos privativos pueden comprar a la empresa una licencia específica que les permita este uso. Está desarrollado en su mayor parte en ANSI C. Al contrario que proyectos como Apache, donde el software es desarrollado por una comunidad pública y el copyright del código está en poder del autor individual, MySQL es propiedad y está patrocinado por una empresa privada, que posee el copyright de la mayor parte del código. Existen varias APIs que permiten, a aplicaciones escritas en diversos lenguajes de programación, acceder a las bases de datos MySQL, en este caso usaremos el PHP, y la versión utilizada será la MySQL 5.0.51a, que también viene por defecto en la aplicación XAMPP. La base de datos de la página web contendrá toda la información de los usuarios que sean registrados y toda la información de los productos que sean añadidos. Tanto los productos como los usuarios, podrán ser modificados por algunos usuarios, según el usuario podrá realizar unas funciones u otras. Las funciones también sirven para buscar los identificadores tanto de los productos como los usuarios y también la opción del buscador. 34 Proyecto final de carrera Dino Theo Atlantis MC, S.L Algunas funciones de la base de datos: /**************************************************************** * Obtención de los datos de un usuario a partir de un login y un password ****************************************************************/ function getUser( $login, $password, $db = 0 ) { if ( $db == 0 ) { $dsn = $this->getDSN(); $db = DB::connect( $dsn );if ( DB::isError( $db ) ) die ( $db>getMessage() ); } $retorn = NULL; $sql = sprintf( 'SELECT * FROM user WHERE login = "%s" && password = "%s"', $login, $password ); $result = $db->query($sql);if (DB::isError($db)) die ($db>getMessage()); if ($registre = $result->fetchRow(DB_FETCHMODE_OBJECT)) { $retorn = new UserDTO($registre->iduser, $registre->login, $registre->password, $registre->name, $registre->second, $registre->company, $registre->nationality, $registre->email, $registre->useradmin, $registre->status); //echo $sql."<br />"; } $result->free(); if ( $db == 0 ) $db->disconnect(); return $retorn; } 35 Proyecto final de carrera Dino Theo Atlantis MC, S.L /******************************************************************** * Esta función inserta un nuevo miembro. *********************************************************************/ function insertUser( $dto, $db = 0 ) { if ( $db == 0 ) { $dsn = $this->getDSN(); $db = DB::connect( $dsn );if ( DB::isError( $db ) ) die ( $db>getMessage() ); } $resultat = false; $sql = sprintf('INSERT INTO user (iduser,login,password,name,second,company,nationality,email,useradmin,status) VALUES (%d, "%s", "%s", "%s", "%s", "%s", "%s", "%s", %d, 1)', $dto->iduser, $dto->login, $dto->password, $dto->name, $dto->second, $dto->company, $dto->nationality, $dto->email, $dto->useradmin, $dto->status); //echo $sql; $result = $db->query( $sql );if ( DB::isError( $db ) ) die ( $db>getMessage() ); $affectedRows = $db->affectedRows(); if ($affectedRows > 0) $resultat = true; if ( $db == 0 ) $db->disconnect(); return $resultat; } 36 Proyecto final de carrera Dino Theo Atlantis MC, S.L /*********************************************************************** * Obtener los datos de un producto a partir del id ***********************************************************************/ function getProductID( $idproduct, $db = 0 ) { if ( $db == 0 ) { $dsn = $this->getDSN(); $db = DB::connect( $dsn );if ( DB::isError( $db ) ) die ( $db>getMessage() ); } $retorn = NULL; $sql = sprintf( 'SELECT * FROM product WHERE idproduct = %d', $idproduct ); $result = $db->query($sql);if (DB::isError($db)) die ($db>getMessage()); if ($registre = $result->fetchRow(DB_FETCHMODE_OBJECT)) { $retorn = new ProductDTO( $registre->idproduct, $registre->reference, $registre->name, $registre->description, $registre->picture, $registre->type, $registre->status); //echo $sql."<br />"; } $result->free(); if ( $db == 0 ) $db->disconnect(); return $retorn; } 37 Proyecto final de carrera Dino Theo Atlantis MC, S.L /*********************************************************************** * Esta función inserta un nuevo producto ***********************************************************************/ function insertProduct( $dto, $db = 0 ) { if ( $db == 0 ) { $dsn = $this->getDSN(); $db = DB::connect( $dsn );if ( DB::isError( $db ) ) die ( $db>getMessage() ); } $resultat = false; $sql = sprintf('INSERT INTO product (idproduct, reference, name, description, picture, type, status) VALUES ( %d, %d, "%s", "%s", "%s", "%s", 1)', $dto->idproduct, $dto->reference, $dto->name, $dto->description, $dto->picture, $dto->type, $dto->status); //echo $sql; $result = $db->query( $sql );if ( DB::isError( $db ) ) die ( $db>getMessage() ); $affectedRows = $db->affectedRows(); if ($affectedRows > 0) $resultat = true; if ( $db == 0 ) $db->disconnect(); return $resultat; } 38 Proyecto final de carrera Dino Theo Atlantis MC, S.L Apache El servidor HTTP Apache es un software (libre) servidor HTTP de código abierto para plataformas Unix (BSD, GNU/Linux, etc.), Windows, Macintosh y otras, que implementa el protocolo HTTP/1.1 y la noción de sitio virtual. Cuando comenzó su desarrollo en 1995 se basó inicialmente en código del popular NCSA HTTPd 1.3, pero más tarde fue reescrito por completo. Su nombre se debe a que Behelendorf eligió ese nombre porque quería que tuviese la connotación de algo que es firme y enérgico pero no agresivo, y la tribu Apache fue la última en rendirse al que pronto se convertiría en gobierno de EEUU, y en esos momentos la preocupación de su grupo era que llegasen las empresas y "civilizasen" el paisaje que habían creado los primeros ingenieros de internet. Además Apache consistía solamente en un conjunto de parches a aplicar al servidor de NCSA. Era, en inglés, a patchy server (un servidor "emparchado"). El servidor Apache se desarrolla dentro del proyecto HTTP Server (httpd) de la Apache Software Foundation. Apache presenta entre otras características mensajes de error altamente configurables, bases de datos de autenticación y negociado de contenido, pero fue criticado por la falta de una interfaz gráfica que ayude en su configuración. Apache tiene amplia aceptación en la red: desde 1996, Apache, es el servidor HTTP más usado. Alcanzó su máxima cota de mercado en 2005 siendo el servidor empleado en el 70% de los sitios web en el mundo, sin embargo ha sufrido un descenso en su cuota de mercado en los últimos años. La mayoría de las vulnerabilidades de la seguridad descubiertas y resueltas tan sólo pueden ser aprovechadas por usuarios locales y no remotamente. Sin embargo, algunas se pueden accionar remotamente en ciertas situaciones, o explotar por los usuarios locales malévolos en las disposiciones de recibimiento compartidas que utilizan PHP como módulo de Apache. La versión de Apache utilizado es la HTTPD 2.2.8, que viene incluida en el aplicativo Xampp que veremos a continuación. 39 Proyecto final de carrera Dino Theo Atlantis MC, S.L Xampp El programa Xampp, es el programa que he usado para realizar la página web, XAMPP es un servidor independiente de plataforma, software libre, que consiste principalmente en la base de datos MySQL, el servidor web Apache y los interpretes para lenguajes de script: PHP y Perl. El nombre proviene del acrónimo de X (para cualquiera de los diferentes sistemas operativos), Apache, MySQL, PHP, Perl. El programa esta liberado bajo la licencia GNU y actúa como un servidor web libre, fácil de usar y capaz de interpretar páginas dinámicas. Actualmente XAMPP esta disponible para Microsoft Windows, GNU/Linux, Solaris, y MacOS X. Oficialmente, los diseñadores de XAMPP solo pretendían su uso como una herramienta de desarrollo, para permitir a los diseñadores de sitios webs y programadores testear su trabajo en sus propios ordenadores sin ningún acceso a Internet. En la práctica sin embargo, XAMPP es utilizado actualmente para servidor de sitios webs en WWW, y con algunas modificaciones es generalmente lo suficientemente seguro para serlo. Una herramienta especial es suministrada para proteger fácilmente las partes más importantes del paquete. He usado este paquete porque es mucho más fácil y cómodo que no tener que ir instalando cada aplicación por separado. 40 Proyecto final de carrera Dino Theo Atlantis MC, S.L Crimson Editor El código PHP lo he realizado en el editor Crimson Editor, aunque podría haber usado cualquier otro, lo he elegido por su sencillez y porque distingue las palabras por colores según el tipo de programación que se este realizando, lo que lo hace mucho más entendible. Ejemplo: 41 Proyecto final de carrera Dino Theo Atlantis MC, S.L Gimp GIMP (GNU Image Manipulation Program) es un programa de edición de imágenes, tanto dibujos como fotografías. Es un programa libre y gratuito, englobado en el proyecto GNU y disponible bajo la licencia GNU General Public License. La primera versión de GIMP se desarrolló para sistemas Unix y fue pensada especialmente para GNU/Linux. Existen versiones totalmente funcionales para Windows, para Mac OS X y para otros sistemas operativos, haciéndolo el programa de manipulación de gráficos disponible en más sistemas operativos. Se le puede considerar como la alternativa más firme para Photoshop, aunque posee una interfaz muy diferente. Existe una versión portátil de GIMP que puede ser transportada y usada directamente desde una memoria USB sin necesidad de instalarse en el ordenador, disponible solo para ordenadores bajo Windows y Mac. La biblioteca de controles gráficos GTK, desarrollada para GIMP, dio origen al entorno de escritorio de GNOME. Este programa lo he usado para la creación de los botones de la página web y de la barra dónde se introduce el nombre de usuario y contraseña. Los botones constan de tres capas (el fondo, el marco y la letra), hay dos tipos diferentes de botones por nombre, uno cuando no esta encima el ratón, más oscuro, y otro cuando nos ponemos encima con el ratón, más brillante. No es un programa muy sencillo de utilizar en un principio, pero una vez aprendido no tiene mayor dificultad. 42 Proyecto final de carrera Dino Theo Atlantis MC, S.L Aportaciones del proyecto a los conocimientos del alumno Mis conocimientos a cerca de la programación web hasta el momento de hacer esta página web era la tecnología HTML que había aprendido en una asignatura de la carrera (sistemas abiertos) y algo de programación de webs, con el programa dreamweaver, a título personal. También tenía nociones de la creación de una base de datos en SQL, con lo que esta parte del trabajo no ha sido tan nueva para mí. En este proyecto he aprendido que es la programación a través de una web y cómo hacer políticas de seguridad para que personas no autorizadas no puedan acceder a lugares restringidos. He adquirido conocimientos de un nuevo lenguaje de programación web, como es el PHP, en el que hasta el momento no tenía ningún tipo de experiencia. De la misma manera que he aprendido ha interconectar las bases de datos con este nuevo lenguaje. He adquirido experiencia en este sector, junto al aprendizaje de nuevos programas que antes no sabía utilizar. Me he dado cuenta de la cantidad de tecnologías que hay en el sector. Estoy convencido que en un futuro me serán útiles los conceptos y la práctica que he adquirido. El diseño de la página web me ha llevado tiempo y esfuerzo, ya que no estaba acostumbrado a realizarlo y al mismo tiempo el trabajar para otros siguiendo sus pautas me ha servido para adquirir experiencia en la aplicación de mis conocimientos. 43 Proyecto final de carrera Dino Theo Atlantis MC, S.L Aportaciones del los estudios realizados al proyecto Las principales materias de la carrera universitaria que me han servido de ayuda a la hora de desarrollar el proyecto han sido: Programación 1 y 2, me han ayudado mucho a entender de manera más rápida el funcionamiento del PHP y la manera de enfocar los problemas que iban surgiendo, como el registro de usuarios o la propia seguridad de la página web. Así como los bucles para buscar usuarios o productos y la manera de realizar la búsqueda en los productos. Introducción a base de datos y base de datos, me ha sido muy útil a la hora de realizar las consultas a la base de datos, así como añadir o modificar la información que se encuentra en ella. También me ha servido a la hora de crear los registros de los usuarios y de modificar sus perfiles. Sistemas abiertos, esta asignatura es la que más útil me ha sido, ya que une las bases de datos con la programación, y aunque no era el mismo lenguaje, ha sido muy útil para realizar la página web con una base de datos con la que tenia que interactuar. Gestión de empresa, esta asignatura me ha servido para comprender la imagen de marca y saber que es lo que busca una empresa de cara a los usuarios, y así poder realizar una web que “venda” y sea útil. 44 Proyecto final de carrera Dino Theo Atlantis MC, S.L Conclusiones Después de haber realizado este proyecto me he dado cuenta que trabajar para una empresas tiene más dificultad de la que en un principio pensaba, debido a que has de adaptar tu diseño, tus ideas y tus conocimientos a las exigencias de la empresa. He visto que hay una gran cantidad de formas y tecnologías que hay para crear una página web. En este caso he puesto en práctica algunas, pero hay muchas otras que espero utilizar en otras ocasiones. La próxima vez que tenga que realizar una web de este estilo me será más fácil, ya que he mejorado en el tema de funcionalidad de una web, y en la sencillez visual y facilidad de acceso al usuario. He aprendido ha utilizar programas de diseño, con los cuales anteriormente no había trabajado, como es el caso del Gimp. Lo que más me ha costado después de tenerlo todo diseñado y elaborado, ha sido que en el momento de ponerlo en práctica no ha resultado tan sencillo, ya que para que el diseño web surja tal como quieres hay una gran cantidad de pequeñas cosas que tienes que trabajar para conseguir el objetivo deseado. Si tuviera que realizar otra página web de este estilo o de otro, probablemente usaría las mismas herramientas, pero puede que profundizase más de lleno en el mundo del CSS, ya que me parece muy interesante. En el futuro, aunque no tenga que diseñar ninguna web con carácter profesional, si me gustaría diseñar una web con esta tecnología. Una posible mejora podría ser incorporar un sistema de búsqueda avanzada para el listado de productos, o realizar un e-mail directo a la empresa, para que el usuario no tenga que copiar el e-mail de la empresa y enviar la consulta desde su correo personal. 45