Apache Codeigniter Css

56
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA DE TELECOMUNICACIÓN UNIVERSIDAD POLITÉCNICA DE CARTAGENA Proyecto Fin de Carrera BIBLIOTECA ONLINE AUTOR: Ana Cristina Bernal Pellicer DIRECTOR: Francesc Burrull i Mestres Septiembre / 2011

Transcript of Apache Codeigniter Css

  • ESCUELA TCNICA SUPERIOR DE INGENIERA DE TELECOMUNICACIN

    UNIVERSIDAD POLITCNICA DE CARTAGENA

    Proyecto Fin de Carrera

    BIBLIOTECA ONLINE

    AUTOR: Ana Cristina Bernal Pellicer

    DIRECTOR: Francesc Burrull i Mestres

    Septiembre / 2011

  • 2

    Autor Ana Cristina Bernal Pellicer

    E-mail del autor [email protected]

    Director(es) Francesc Burrull i Mestres

    E-mail del director [email protected]

    Ttulo del proyecto fin de carrera Biblioteca online

    Resumen

    Biblioteca online es un proyecto que consiste en una pgina web (local) editada con los lenguajes de progamacin PHP y HTML mediante el framework Codeigniter (esto es, un programa que

    contiene una serie de libreras para la creacin de pginas web basado en PHP). Se ha usado un

    servidor XAMPP, que consiste en Apache/MySQL/PHP, Apache es el servidor HTTP que se va a

    utilizar, MySQL es la base de datos relacional de la que se dispone para almacenar los libros

    disponibles y el resto de informacin necesaria, como el registro de usuarios, blog, noticas, etc. y PHP,

    como ya hemos dicho, el lenguaje de programacin principalmente utilizado. La presentacin se ha

    realizado mediante hojas de estilo en cascada (CSS) externas, para conseguir una separacin entre la

    estructura de la pgina y su presentacin.

    Titulacin Ingeniera de telemtica

    Departamento Tecnologas de la informacin y las

    comunicaciones

    Fecha de presentacin Septiembre/2011

  • 3

    NDICE

    1. Introduccin..4

    1.1 XAMPP.....................................................................................................4

    1.1.1 Caractersticas y requisitos................................................4

    1.1.2 Uso....................................................................................4

    1.2 Apache..4

    1.2.1 Ventajas....5

    1.2.2 Mdulos....5

    1.2.3 Uso....6

    1.2.4 Configuracin7

    1.2.5 Licencia....7

    1.3 MySQL.7

    1.3.1 Lenguajes de programacin..8

    1.3.2 Aplicaciones.8

    1.3.3 Especificaciones8

    1.3.4 Tipos de compilacin del servidor..10

    1.3.5 Licencia...11

    1.4 PHP.....11

    1.4.1 Uso...11

    1.4.2 Sintxis12

    1.4.3 Tipos de Datos.12

    1.4.4 Funciones.13

    1.4.5 Objetos.14

    1.4.6 Visibilidad.......................................................................15

    1.4.7 Compiladores...................................................................15

    1.5 Codeigniter..16

    1.5.1 Flujo de la aplicacin...16

    1.5.2 Modelo- Vista- Controlador17

    1.6 HTML..18

    1.6.1 Elementos19

    1.6.2 Atributos..19

    1.6.3 Tipos de Datos.20

    1.7 CSS..20

    1.7.1 Tipos de Hojas de Estilo..21

    1.7.2 Ventajas de Usar Hojas de Estilo22

    1.7.3 Sintaxis22

    2 Cdigo...23

    2.1 Controladores...23

    2.2 Vistas...31

    2.3 Hojas de estilo.52

    3 Referencias........56

  • 4

    1. Introduccin

    Biblioteca online es un proyecto que consiste en una pgina web (local)

    editada con los lenguajes PHP y HTML mediante el framework Codeigniter. Se ha

    usado un servidor XAMPP, que consiste en Apache/MySQL/PHP y la presentacin se

    ha realizado mediante hojas de estilo en cascada (CSS). A continuacin se van a

    exponer todas estas herramientas para una mejor comprensin del funcionamiento de la

    pgina.

    1.1 XAMPP

    XAMPP es un servidor independiente de plataforma, software libre, que consiste

    principalmente en la base de datos MySQL, el servidor Web Apache y los intrpretes

    para lenguajes de script: PHP y Perl. El nombre proviene del acrnimo de X (para

    cualquiera de los diferentes sistemas operativos), Apache, MySQL, PHP, Perl. El

    programa est liberado bajo la licencia GNU y acta como un servidor Web libre, fcil

    de usar y capaz de interpretar pginas dinmicas. Actualmente XAMPP est disponible

    para Microsoft Windows, GNU/Linux, Solaris, y MacOS X.

    1.1.1 Caractersticas y requisitos

    XAMPP solamente requiere descargar y ejecutar un archivo zip, tar o exe, con

    unas pequeas configuraciones en alguno de sus componentes que el servidor Web

    necesitar. XAMPP se actualiza regularmente para incorporar las ltimas versiones de

    Apache/MySQL/PHP y Perl. Tambin incluye otros mdulos como OpenSSL y

    phpMyAdmin. Para instalar XAMPP se requiere solamente una pequea fraccin del

    tiempo necesario para descargar y configurar los programas por separado.

    1.1.2 Uso

    Oficialmente, los diseadores de XAMPP slo pretendan su uso como una

    herramienta de desarrollo, para permitir a los diseadores de sitios webs y

    programadores testear su trabajo en sus propios ordenadores sin ningn acceso a

    Internet. En la prctica, sin embargo, XAMPP es utilizado actualmente como servidor

    de sitios Web, ya que, con algunas modificaciones, es generalmente lo suficientemente

    seguro para serlo. Con el paquete se incluye una herramienta especial para proteger

    fcilmente las partes ms importantes.

    1.2 Apache

    El servidor HTTP Apache es un servidor web HTTP de cdigo abierto para

    plataformas Unix (BSD, GNU/Linux, etc.), Microsoft Windows, Macintosh y otras, que

    implementa el protocolo HTTP/1.1 y la nocin de sitio virtual. Cuando comenz su

    desarrollo en 1995 se bas inicialmente en cdigo del popular NCSA HTTP 1.3, pero

    ms tarde fue reescrito por completo. Su nombre se debe a que Behelendorf quera que

    tuviese la connotacin de algo que es firme y enrgico pero no agresivo, y la tribu

  • 5

    Apache fue la ltima en rendirse al que pronto se convertira en gobierno de EEUU, y

    en esos momentos la preocupacin de su grupo era que llegasen las empresas y

    "civilizasen" el paisaje que haban creado los primeros ingenieros de internet. Adems

    Apache consista solamente en un conjunto de parches a aplicar al servidor de NCSA.

    Era, en ingls, a patchy server (un servidor "parcheado").

    El servidor Apache se desarrolla dentro del proyecto HTTP Server (httpd) de

    la Apache Software Foundation.

    Apache presenta entre otras caractersticas altamente configurables, bases de

    datos de autenticacin y negociado de contenido, pero fue criticado por la falta de una

    interfaz grfica que ayude en su configuracin.

    Apache tiene amplia aceptacin en la red: desde 1996, Apache, es el servidor

    HTTP ms usado. Alcanz su mxima cuota 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 aos. (Estadsticas histricas y de uso diario

    proporcionadas por Netcraft [3]).

    La mayora de las vulnerabilidades de la seguridad descubiertas y resueltas tan

    slo 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 malvolos en las disposiciones de recibimiento compartidas que

    utilizan PHP como mdulo de Apache.

    1.2.1 Ventajas

    - Modular

    - Cdigo abierto

    - Multi-plataforma

    - Extensible

    - Popular (fcil de conseguir ayuda/soporte)

    1.2.2 Mdulos

    La arquitectura del servidor Apache es muy modular. El servidor consta de una

    seccin core y diversos mdulos que aportan mucha de la funcionalidad que podra

    considerarse bsica para un servidor web. Algunos de estos mdulos son:

    - mod_ssl - Comunicaciones Seguras va TLS.

    - mod_rewrite - reescritura de direcciones (generalmente utilizado para

    transformar pginas dinmicas como php en pginas estticas html para as

    engaar a los navegantes o a los motores de bsqueda en cuanto a cmo fueron

    desarrolladas estas pginas).

    - mod_dav - Soporte del protocolo WebDAV (RFC 2518).

    - mod_deflate - Compresin transparente con el algoritmo deflate del contenido

    enviado al cliente.

  • 6

    - mod_auth_ldap - Permite autentificar usuarios contra un servidor LDAP.

    - mod_proxy_ajp - Conector para enlazar con el servidor Jakarta Tomcat de

    pginas dinmicas en Java (servlets y JSP).

    El servidor de base puede ser extendido con la inclusin de mdulos externos entre

    los cuales se encuentran:

    - mod_cband - Control de trfico y limitador de ancho de banda.

    - mod_perl - Pginas dinmicas en Perl.

    - mod_php - Pginas dinmicas en PHP.

    - mod_python - Pginas dinmicas en Python.

    - mod_rexx - Pginas dinmicas en REXX y Object REXX.

    - mod_ruby- Pginas dinmicas en Ruby.

    - mod_aspdotnet - Pginas dinmicas en .NET de Microsoft (Mdulo retirado).

    - mod_mono - Pginas dinmicas en Mono

    - mod_security - Filtrado a nivel de aplicacin, para seguridad.

    1.2.3 Uso

    Apache es usado principalmente para enviar pginas web estticas y dinmicas

    en la World Wide Web. Muchas aplicaciones web estn diseadas asumiendo como

    ambiente de implantacin a Apache, o que utilizarn caractersticas propias de este

    servidor web.

    Apache es el componente de servidor web en la popular plataforma de

    aplicaciones LAMP, junto a MySQL y los lenguajes de programacin PHP/Perl/Python

    (y ahora tambin Ruby).

    Este servidor web es redistribuido como parte de varios paquetes propietarios de

    software, incluyendo la base de datos Oracle y el IBM WebSphere application server.

    Mac OS X integra apache como parte de su propio servidor web y como soporte de su

    servidor de aplicaciones WebObjects. Es soportado de alguna manera por Borland en

    las herramientas de desarrollo Kylix y Delphi. Apache es incluido con Novell NetWare

    6.5, donde es el servidor web por defecto, y en muchas distribuciones Linux.

    Apache es usado para muchas otras tareas donde el contenido necesita ser puesto

    a disposicin en una forma segura y confiable. Un ejemplo es al momento de compartir

    archivos desde una computadora personal hacia Internet. Un usuario que tiene Apache

    instalado en su escritorio puede colocar arbitrariamente archivos en la raz de

    documentos de Apache, desde donde pueden ser compartidos.

    Los programadores de aplicaciones web a veces utilizan una versin local de Apache

    con el fin de previsualizar y probar cdigo mientras ste es desarrollado.

    Microsoft Internet Information Services (IIS) es el principal competidor de

    Apache, as como Sun Java System Web Server de Sun Microsystems y un anfitrin de

    otras aplicaciones como Zeus Web Server. Algunos de los ms grandes sitios web del

  • 7

    mundo estn ejecutndose sobre Apache, como la capa frontal (front end) del motor de

    bsqueda Google, que est basado en una versin modificada de Apache, denominada

    Google Web Server (GWS).

    1.2.4 Configuracin

    La mayor parte de la configuracin se realiza en el fichero

    apache2.conf o httpd.conf, segn el sistema donde est corriendo. Cualquier cambio en

    este archivo requiere reiniciar el servidor, o forzar la lectura de los archivos de

    configuracin nuevamente.

    1.2.5 Licencia

    La Licencia Apache permite la distribucin de derivados de cdigo abierto y

    cerrado a partir de su cdigo fuente original. La Free Software Foundation no considera

    a la Licencia Apache como compatible con la versin 2 de la GNU General Public

    License (GPL), en la cual el software licenciado bajo la Apache License no puede ser

    integrado con software distribuido bajo la GPL:

    Este es software libre pero es incompatible con la GPL. La Apache Software License

    es incompatible con la GPL porque tiene un requerimiento especfico que no est

    incluido en la GPL: tiene ciertos casos de terminacin de patentes que la GPL no

    requiere. No consideramos que dichos casos de terminacin de patentes son

    inherentemente una mala idea, pero a pesar de ello son incompatibles con la GNU

    GPL. [4]

    Sin embargo, la versin 3 de la GPL incluye una provisin (Seccin 7e) que le

    permite ser compatible con licencias que tienen clusulas de represalia de patentes,

    incluyendo a la Licencia Apache. El nombre Apache es una marca registrada y puede

    ser slo utilizada con el permiso expreso del dueo de la marca. [5].

    1.3 MySQL

    MySQL es un sistema de gestin de bases de datos relacional, multihilo y multiusuario

    con ms de seis millones de instalaciones. MySQL AB (desde Enero de 2008 una subsidiaria de

    Sun Microsystems y sta a su vez de Oracle Corporation desde Abril de 2009) desarrolla MySQL

    como software libre en un esquema de licenciamiento dual.

    Por un lado se ofrece bajo la GNU GPL para cualquier uso compatible con esta

    licencia, pero para aquellas empresas que quieran incorporarlo en productos

    privativos deben comprar a la empresa una licencia especfica que les permita este uso.

    Est desarrollado en su mayor parte en ANSI C.

    Al contrario de proyectos como Apache, donde el software es desarrollado por

    una comunidad pblica y los derechos de autor del cdigo estn en poder del autor

    individual, MySQL es patrocinado por una empresa privada, que posee el copyright de

    la mayor parte del cdigo.

  • 8

    Esto es lo que posibilita el esquema de licenciamiento anteriormente

    mencionado. Adems de la venta de licencias privativas, la compaa ofrece soporte y

    servicios. Para sus operaciones contratan trabajadores alrededor del mundo que

    colaboran va Internet.

    1.3.1 Lenguajes de Programacin

    Existen varias APIs que permiten, a aplicaciones escritas en diversos lenguajes

    de programacin, acceder a las bases de datos MySQL, incluyendo C, C++, C#, Pascal,

    Delphi, Eiffer, Java, Perl, PHP, Python, REALbasic(Mac y Linux)Cada uno de estos

    utiliza una API especfica. Tambin existe una interfaz ODBC, llamado MyODBC que

    permite a cualquier lenguaje de programacin que soporte ODBC comunicarse con las

    bases de datos MySQL. Tambin se puede acceder desde el sistema SAP,

    lenguaje ABAP.

    1.3.2 Aplicaciones

    MySQL es muy utilizado en aplicaciones web, en plataformas (Linux/Windows-

    Apache-MySQL-PHP/Perl/Python). Su popularidad como aplicacin web est muy

    ligada a PHP, que a menudo aparece en combinacin con MySQL. MySQL es una base

    de datos muy rpida en la lectura cuando utiliza el motor no transaccional MyISAM,

    pero puede provocar problemas en entornos de alta concurrencia en la modificacin. En

    aplicaciones web hay baja concurrencia en modificacin de datos y en cambio el

    entorno es intensivo en lectura, lo que hace a MySQL ideal para estas aplicaciones.

    1.3.3 Especificaciones

    MySQL funciona sobre mltiples plataformas, incluyendo:

    - AIX

    - BSD

    - FreeBSD

    - HP-UX

    - GNU/Linux

    - Mac OS X

    - Net BSD

    - Novell Netware

    - OpenBSD

    - OS/2 Warp

    - QNX

    - SGI IRIX

    - Solaris

    - SunOS

    - SCO OpenServer

    - SCO UnixWare

    - Tru64

    - eBD

    - Windows 95, 98, NT, 2000, XP,

    Vista, 7 y Windows Server

    2000, 2003 y 2008

    - Open VMS

    Caractersticas de la versin 5.0.22:

    - Un amplio subconjunto de ANSI SQL 99, y varias extensiones.

    - Soporte a multiplataforma.

    - Procedimientos almacenados.

    - Disparadores (triggers).

  • 9

    - Vistas actualizables.

    - Soporte a VARCHAR.

    - INFORMATION_SCHEMA.

    - Modo Strict.

    - Soporte X/Open XA de transacciones distribuidas; transaccin en dos fases

    como parte de esto, utilizando el motor InnoDB de Oracle.

    - Motores de almacenamiento independientes (MyISAM para lecturas rpidas,

    InnoDB para transacciones e integridad referencial).

    - Transacciones con los motores de almacenamiento InnoDB, BDB Y Cluster;

    puntos de recuperacin (savepoints) con InnoDB.

    - Soporte para SSL.

    - Query caching.

    - Sub-SELECTs (o SELECTs anidados).

    - Rplica con un maestro por esclavo, varios esclavos por maestro, sin soporte

    automtico para mltiples maestros por esclavo.

    - Indexing y bsqueda de campos de texto completos usando el motor de

    almacenamiento MyISAM.

    - Embedded database library.

    - Soporte completo para Unicode.

    - Conforme a las reglas ACID usando los motores InnoDB, BDB y Cluster.

    - Shared-nothing clustering a travs de MySQL Cluster.

    Caractersticas adicionales:

    - Usa GNU Automake, Autoconf, y Libtool para portabilidad.

    - Uso de multihilos mediante hilos del kernel.

    - Usa tablas en disco b-tree para bsquedas rpidas con compresin de ndice.

    - Tablas hash en memoria temporales.

    - El cdigo MySQL se prueba con Purify (un detector de memoria perdida

    comercial) as como con Valgrind, una herramienta GPL.

    - Completo soporte para operadores y funciones en clusulas select y where.

    - Completo soporte para clusulas group by y order by, soporte de funciones de

    agrupacin.

    - Seguridad: ofrece un sistema de contraseas y privilegios seguro mediante

    verificacin basada en el host y el trfico de contraseas est cifrado al

    conectarse a un servidor.

    - Soporta gran cantidad de datos. MySQL Server tiene bases de datos de hasta 50

    millones de registros.

    - Se permiten hasta 64 ndices por tabla (32 antes de MySQL 4.1.2). Cada ndice

    puede consistir desde 1 hasta 16 columnas o partes de columnas. El mximo

    ancho de lmite son 1000 bytes (500 antes de MySQL 4.1.2).

    - Los clientes se conectan al servidor MySQL usando sockets TCP/IP en cualquier

    plataforma. En sistemas Windows se pueden conectar usando named pipes y en

    sistemas Unix usando ficheros socket Unix.

  • 10

    - En MySQL 5.0, los clientes y servidores Windows se pueden conectar usando

    memoria compartida.

    - MySQL contiene su propio paquete de pruebas de rendimiento proporcionado

    con el cdigo fuente de la distribucin de MySQL.

    Caractersticas (versin 4.0):

    Inicialmente, MySQL careca de elementos considerados esenciales en las bases

    de datos relacionales, tales como integridad referencial y transacciones. A pesar de ello,

    atrajo a los desarrolladores de pginas web con contenido dinmico, justamente por su

    simplicidad. Poco a poco los elementos de los que careca MySQL estn siendo

    incorporados tanto por desarrollos internos, como por desarrolladores de software libre.

    Entre las caractersticas disponibles en las ltimas versiones se puede destacar:

    - Amplio subconjunto del lenguaje SQL. Algunas extensiones son incluidas

    igualmente.

    - Disponibilidad en gran cantidad de plataformas y sistemas.

    - Diferentes opciones de almacenamiento segn si se desea velocidad en las

    operaciones o el mayor nmero de operaciones disponibles.

    - Transacciones y claves forneas.

    - Conectividad segura.

    - Replicacin.

    - Bsqueda e indexacin de campos de texto.

    MySQL es un sistema de administracin relacional de bases de datos. Una base de

    datos relacional archiva datos en tablas separadas en vez de colocar todos los datos en

    un gran archivo. Esto permite velocidad y flexibilidad. Las tablas estn conectadas por

    relaciones definidas que hacen posible combinar datos de diferentes tablas sobre pedido.

    Caractersticas distintivas:

    Las siguientes caractersticas son implementadas nicamente por MySQL:

    - Mltiples motores de almacenamiento (MyISAM, Merge, InnoDB, BDB,

    Memory/heap, MySQL Cluster, Federated, Archive, CSV, Blackhole y Example

    en 5.x), permitiendo al usuario escoger la que sea ms adecuada para cada tabla

    de la base de datos.

    - Agrupacin de transacciones, reuniendo mltiples transacciones de varias

    conexiones para incrementar el nmero de transacciones por segundo.

    1.3.4 Tipos de Compilacin del Servidor

    Hay tres tipos de compilacin del servidor MySQL:

    - Estndar: Los binarios estndar de MySQL son los recomendados para la

    mayora de los usuarios, e incluyen el motor de almacenamiento InnoDB.

  • 11

    - Max (No se trata de MaxDB, que es una cooperacin con SAP): Los binarios

    incluyen caractersticas adicionales que no han sido lo bastante probadas o que

    normalmente no son necesarias.

    - MySQL-Debug: Son binarios que han sido compilados con informacin

    de depuracin extra. No debe ser usada en sistemas en produccin porque el

    cdigo de depuracin puede reducir el rendimiento.

    1.3.5 Licencia

    MySQL es software de fuente abierta. Fuente abierta significa que es posible para

    cualquier persona usarlo y modificarlo. Cualquier persona puede bajar el cdigo fuente

    de MySQL y usarlo sin pagar. Cualquier interesado puede estudiar el cdigo fuente y

    ajustarlo a sus necesidades. MySQL usa el GPL (GNU General Public License) para

    definir qu puede hacer y qu no puede hacer con el software en diferentes situaciones.

    La licencia GNU GPL de MySQL obliga a que la distribucin de cualquier producto

    derivado (aplicacin) se haga bajo esa misma licencia. Si un desarrollador desea

    incorporar MySQL en su producto pero desea distribuirlo bajo otra licencia que no sea

    la GNU GPL, puede adquirir una licencia comercial de MySQL que le permite hacer

    justamente eso.

    1.4 PHP

    PHP (acrnimo de PHP: Hypertext Preprocessor) es un lenguaje de cdigo

    abierto muy popular especialmente adecuado para desarrollo web y que puede ser

    incrustado en HTML.

    1.4.1 Uso

    PHP puede ser desplegado en la mayora de los servidores web y en casi todos

    los sistemas operativos y plataformas sin costo alguno. El lenguaje PHP se encuentra

    instalado en ms de 20 millones de sitios web y en un milln de servidores, el nmero

    de sitios en PHP ha compartido algo de su preponderante sitio con otros nuevos

    lenguajes no tan poderosos desde agosto de 2005. Es tambin el mdulo Apache ms

    popular entre los ordenadores que utilizan Apache como servidor web.

    El gran parecido que posee PHP con los lenguajes ms comunes

    de programacin estructurada, como C y Perl, permiten a la mayora de

    los programadores crear aplicaciones complejas con una curva de aprendizaje muy

    corta. Tambin les permite involucrarse con aplicaciones de contenido dinmico sin

    tener que aprender todo un nuevo grupo de funciones.

    Aunque todo en su diseo est orientado a facilitar la creacin de sitios webs, es

    posible crear aplicaciones con una interfaz grfica para el usuario, utilizando la

    extensin PHP-Qt o PHP-GTK. Tambin puede ser usado desde la lnea de rdenes, de

    la misma manera como Perl o Python pueden hacerlo; a esta versin de PHP se la llama

    PHP-CLI (Command Line Interface).

  • 12

    Cuando el cliente hace una peticin al servidor para que le enve una pgina

    web, el servidor ejecuta el intrprete de PHP. ste procesa el script solicitado que

    generar el contenido de manera dinmica (por ejemplo obteniendo informacin de una

    base de datos). El resultado es enviado por el intrprete al servidor, quien a su vez se lo

    enva al cliente. Mediante extensiones es tambin posible la generacin de

    archivos PDF, Flash, as como imgenes en diferentes formatos.

    Permite la conexin a diferentes tipos de servidores de bases de datos tales

    como MySQL, PostgreSQL, Oracle, ODBC, DB2, Microsoft SQL Server, Firebird y

    SQLite.

    1.4.2 Sintaxis

    El intrprete de PHP slo ejecuta cdigo PHP dentro de sus delimitadores. Nada

    fuera de sus delimitadores es procesado por PHP. Los delimitadores ms comunes son:

    para cerrar las secciones PHP. Tambin se puede usar

    y como delimitadores, o sus formas abreviadas.

    Aunque al usar delimitadores simplificados, hacen que los archivos de script sean

    menos portables, ya que el propsito de todos estos delimitadores es separar el cdigo

    PHP del cdigo no PHP, incluyendo HTML.

    Las variables van precedidas de un smbolo de dlar y los tipos no necesitan ser

    especificados de antemano. A diferencia de los nombres de funciones y de clase, los

    nombres de variables distinguen entre maysculas y minsculas.

    PHP no tiene en cuenta los saltos de lnea y los espacios en blanco (excepto

    cuando van dentro de una cadena), y las declaraciones se terminan con un punto y

    coma. PHP tiene tres tipos de sintaxis para los comentarios: / * * / en este caso el

    comentario ira dentro de las barras; / /, as como #, se utilizan para comentar una

    lnea.

    En trminos de palabras clave y sintaxis del lenguaje, PHP es similar a los

    lenguajes de alto nivel que siguen la sintaxis del lenguaje C: if para condiciones, for y

    while para bucles o la funcin return son similitudes con la sintaxis de los lenguajes

    como C, C + +, Java y Perl.

    1.4.3 Tipos de Datos

    PHP soporta distintos tipos de datos, que no los tiene que impostar el

    programador, sino que son asumidos directamente por el motor, estos datos pueden ser:

    Cuatro tipos escalares:

    - Boolean

    - Integer

    - Float (nmero de punto-flotante, tambin conocido como 'double')

  • 13

    - String

    Dos tipos compuestos:

    - array

    - Object

    Y finalmente dos tipos especiales:

    - Resource

    - NULL

    Tambin algunos pseudo-tipos por razones de legibilidad:

    - mixed

    - Number

    Si quisiera forzar la conversin de una variable a cierto tipo, se puede moldear

    la variable, o usar la funcin settype() sobre ella.

    1.4.4 Funciones

    Una de las herramientas ms importantes en cualquier lenguaje de programacin

    son las funciones. Una funcin consiste en un conjunto de rutinas y acciones que a lo

    largo del script van a ser ejecutadas multitud de veces agrupados en una funcin y desde

    cualquier punto del script puede ser llamada y ejecutada. A su vez, esta funcin puede

    recibir parmetros externos de los cuales dependa el resultado de una funcin.

    Las funciones deben ser colocadas siempre antes de realizar la llamada a esa

    funcin. La sintaxis de una funcin es la siguiente:

    function nombre(parmetros){

    instrucciones de la funcin}

    Cdigo 1. Funcin nombre

    Para llamar a la funcin sera de la siguiente forma: nombre(parmetros). PHP

    no distingue entre maysculas y minsculas al nombrar las funciones. Los parntesis

    permiten pasar valores a las funciones y son siempre necesarios, aunque no vayas a

    pasar valor alguno.

    Un ejemplo para entender el uso de funciones es el siguiente: Crearemos una

    funcin que realice la suma de dos nmeros y muestre el resultado

    function sumar($sumando1,$sumando2){

    $ suma=$sumando1+$sumando2

    echo $sumando1."+".$sumando2."=".$suma;

    }

  • 14

    sumar(5,6)

    Cdigo 2. Funcin sumar

    Un hecho relevante que cabe destacar es que las variables que declaremos dentro

    de la funcin solo existirn o tendrn dicho valor dentro de la funcin.

    PHP consume ms recursos (y por tanto es ligeramente ms lento) llamando y

    ejecutando una funcin que ejecutando cdigo que encuentra en lnea, embebido en el

    script. Por eso no tiene sentido usar funciones salvo que efectivamente se vaya a utilizar

    esa porcin de cdigo varias veces.

    1.4.5 Objetos

    La programacin orientada a objetos (OO) est pensada para construir objetos

    que contienen atributos y operaciones de manera que cubran nuestras necesidades. Los

    atributos son variables que contienen informacin del estado de un objeto. Y las

    operaciones tambin conocidas como mtodos, funciones y acciones realizan

    modificaciones del propio objeto o realizan alguna accin externa a ste.

    Una de las principales ventajas de la programacin OO es el concepto de

    encapsulacin, conocido tambin como proteccin de datos, mediante el cual solo se

    pueden modificar los datos de un objeto accediendo a travs de sus mtodos u

    operaciones (interfaz del objeto). Nunca se pueden modificar directamente desde la

    aplicacin principal.

    Podemos crear clases, atributos y operaciones en PHP, La estructura mnima de

    una clase es la siguiente:

    class NombreClase {

    }

    Cdigo 3. Clase NombreClase

    Podemos crear mtodos declarando funciones dentro de la definicin de la clase,

    el siguiente cdigo crea una clase llamada NombreClase con dos operaciones que no

    hacen nada. A metodo1 no le pasamos ningn parmetro y a metodo2 le pasamos dos

    parmetros.

    class NombreClase {

    function metodo1() {

    }

    function metodo2($param1, $param2) {

    }

    }

    Cdigo 4. Clase NombreClase con mtodos

  • 15

    1.4.6 Visibilidad

    La visibilidad de una propiedad o mtodo se puede definir anteponiendo una de

    las palabras claves public, protected o private en la declaracin. Miembros de clases

    declarados como public pueden ser accedidos de cualquier lado. Miembros declarados

    como protected, slo de la clase misma, por herencia y clases parent. Aquellos definidos

    como private, nicamente de la clase que los defini.

    Visibilidad de Propiedades: Las propiedades de clases deben ser definidas como

    public, private, o protected.

    Visibilidad de Mtodos: Los mtodos de clases pueden ser definidos como

    public, private, o protected. Aquellos declarados sin ninguna palabra clave de

    visibilidad explcita sern definidos como public.

    Visibilidad desde otros Objetos: Los objetos del mismo tipo tendrn acceso a los

    miembros private y protected entre ellos aunque no sean de la misma instancia. Esto es

    porque los detalles especficos de implementacin ya se conocen cuando se encuentra

    dentro de estos objetos.

    1.4.7 Compiladores

    El lenguaje PHP era originalmente implementado usando un intrprete PHP. Ahora

    existen algunos compiladores, que desacoplan el lenguaje PHP del intrprete. Las

    ventajas de la compilacin incluyen no solo una mayor velocidad de ejecucin sino

    tambin una mejora en la interoperabilidad con el cdigo escrito en otros lenguajes.

    Actualmente existen los siguientes compiladores:

    - Phc

    - Roadsend

    - Raven

    - Phalanger

    - Caucho Resin/Quercus

    - HipHop

    - php-to-scala

    - phc-win

    Tambin existen Embebedores, que pueden empaquetar scrips PHP y otros

    archives en un ejecutable de Windows, pero no proporcionan ninguno de los beneficios

    de la compilacin a nivel de lenguaje. Algunos ejemplos pueden ser:

    - Bambalam PHP EXE Compiler/Embedder

    - ExeOutput for PHP

  • 16

    1.5 CODEIGNITER

    Probablemente ya sepamos que un framework es un programa para desarrollar

    otros programas, CodeIgniter, por tanto, es un programa o aplicacin web desarrollada

    en PHP para la creacin de cualquier tipo de aplicacin web bajo PHP. Es un producto

    de cdigo libre, libre de uso para cualquier aplicacin.

    Como cualquier otro framework, Codeigniter contiene una serie de libreras que

    sirven para el desarrollo de aplicaciones web y adems propone una manera de

    desarrollarlas que debemos seguir para obtener provecho de la aplicacin. Esto es,

    marca una manera especfica de codificar las pginas web y clasificar sus diferentes

    scripts, que sirve para que el cdigo est organizado y sea ms fcil de crear y mantener.

    CodeIgniter implementa el proceso de desarrollo llamado Model-View-Controller

    (MVC, modelo-vista-controlador), que es un estndar de programacin de aplicaciones,

    utilizado tanto para hacer sitios web como programas tradicionales. Aunque las clases

    de vista y el controlador son una parte necesaria del desarrollo en CodeIgniter, los

    modelos son totalmente opcionales y se necesitan raramente.

    1.5.1 Flujo de la Aplicacin

    En CodeIgniter existe un procedimiento para atender una solicitud de pgina del

    cliente. Este proceso se realiza internamente por el propio CodeIgniter y de manera

    transparente para nosotros. Durante el proceso participan varios mdulos como el

    enrutamiento de la solicitud, la cach interna, etc.

    Figura 1. Flujo de aplicacin de codeigniter

    En resumen, el flujo de aplicacin que implementa CodeIgniter, sigue los siguientes

    puntos:

    1. Toda solicitud de una pgina a partir de CodeIgniter comienza en un index.php que hay en la raz del framework.

    2. Luego se realiza un filtrado de la URL para saber cul es el elemento que tiene que procesar esta pgina.

    3. Si la pgina se haba generado antes y est en la cach de CodeIgniter, se devuelve el archivo de la cach ya generado, con lo que se ahorra

    procesamientos repetidos. La cach se puede configurar y si lo deseamos,

    incluso deshabilitar.

    4. Antes de continuar con el proceso se realiza un tratamiento de seguridad sobre la entrada que tengamos, tanto de la informacin que haya en la URL como de la

    informacin que haya en un posible POST, si lo hemos configurado as.

  • 17

    5. El controlador adecuado realiza el procesamiento de la solicitud. CodeIgniter decide el controlador que debe procesar la solicitud en funcin de la URL

    solicitada.

    6. El controlador comunica con una serie de mdulos, los que necesite, para producir la pgina.

    7. A travs de las vistas adecuadas, el controlador genera la pgina, tal cual se tiene que enviar al navegador.

    8. Si la pgina no estaba en la cach, se introduce, para que las futuras solicitudes de esta pgina sean ms rpidas.

    Algunos de estos mdulos, como la cach o el enrutamiento, funcionan de manera

    transparente para nosotros. Algunos otros, como los controladores, modelos y vistas, los

    tenemos que programar por nuestra cuenta y localizan cada una de las partes de nuestro

    programa que, al estar separadas nos ayudan a organizar tambin nuestro cdigo.

    Tambin tenemos a nuestra disposicin diversas libreras, ayudantes (helpers) y plugins

    ya escritos en CodeIgniter con numerosas clases y funciones muy tiles para el

    desarrollo de aplicaciones web.

    1.5.2 Modelo - Vista Controlador

    El Modelo, Vista, Controlador es tpicamente utilizado para la creacin de

    aplicaciones web y no slo CodeIgniter lo implementa, sino tambin otra serie de

    frameworks de desarrollo web, en PHP u otros lenguajes. Es interesante porque separa

    en varios grupos las complejidades de las distintas partes que componen una pgina

    web, como la vista y la lgica, as como el acceso a la base de datos.

    Modelo: Todo el cdigo que tiene que ver con el acceso a base de datos. En el

    modelo mantendremos encapsulada la complejidad de nuestra base de datos y

    simplemente crearemos funciones para recibir, insertar, actualizar o borrar informacin

    de nuestras tablas. Al mantenerse todas las llamadas a la base de datos en un mismo

    cdigo, desde otras partes del programa podremos invocar las funciones que

    necesitemos del modelo y ste se encargar de procesarlas. En el modelo nos podrn

    preocupar cosas como el tipo de base de datos con la que trabajamos, o las tablas y sus

    relaciones, pero desde las otras partes del programa simplemente llamaremos a las

    funciones del modelo sin importarnos qu tiene que hacer ste para conseguir realizar

    las acciones invocadas.

    Vista: La vista codifica y mantiene la presentacin final de nuestra aplicacin de

    cara al usuario. Es decir, en la vista colocaremos todo el cdigo HTML, CSS,

    Javascript, etc. que se tiene que generar para producir la pgina tal cual queremos que la

    vea el usuario. En la prctica la vista no slo sirve para producir pginas web, sino

    tambin cualquier otra salida que queramos enviar al usuario, en formatos o lenguajes

    distintos, como pueden ser feeds RSS, archivos JSON, XML, etc.

    Controlador: El controlador podramos decir que es la parte ms importante,

    porque hace de enlace entre el modelo, la vista y cualquier otro recurso que se tenga que

    procesar en el servidor para generar la pgina web. En resumen, en el controlador

    guardamos la lgica de nuestras pginas y realizamos todas las acciones que sean

    necesarias para generarlas, ayudados del modelo o la vista.

  • 18

    Durante el desarrollo con CodeIgniter es recomendable seguir las normas del

    diseo Modelo - Vista - Controlador (MVC), pero realmente el framework es bastante

    flexible y permite que, si lo deseamos, no sigamos el desarrollo atendiendo a dicha

    arquitectura. En este caso, podramos tener simplemente controladores y dentro de ellos

    realizar todas las acciones de acceso a la base de datos directamente, sin hacer llamadas

    al modelo, o escribir texto en la salida sin utilizar las vistas.

    En el caso que no utilicemos los modelos, no ocurrir ningn efecto negativo en

    el desempeo del framework, pero en el caso de las vistas, si no las utilizamos y

    escribimos salida directamente desde el controlador, como por ejemplo con sentencias

    echo de PHP en el cdigo de los controladores, perderemos algunas de las ventajas que

    CodeIgniter realiza por nosotros para procesar la salida antes de enviarla al usuario.

    Figura 2. Concepto de modelo-vista-controlado. La lnea continua representa una asociacin directa, la discontinua

    representa una asociacin indirecta (por ejemplo a travs de un observador.

    1.6 HTML

    HTML, siglas de HyperText Markup Language (lenguaje de marcado de

    hipertexto), es el lenguaje de marcado predominante para la elaboracin de pginas

    web. Es usado para describir la estructura y el contenido en forma de texto, as como

    para complementar el texto con objetos tales como imgenes. HTML se escribe en

    forma de etiquetas, rodeadas por corchetes angulares (). HTML tambin 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 tambin es usado para referirse al contenido del tipo de MIME text/html

    o todava ms ampliamente como un trmino genrico 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).

    1.6.1 Elementos

    Los elementos son la estructura bsica de HTML. Los elementos tienen dos

    propiedades bsicas: atributos y contenido. Cada atributo y contenido tiene ciertas

    restricciones para que se considere vlido al documento HTML. Un elemento

    generalmente tiene una etiqueta de inicio y una etiqueta de cierre, por ejemplo

  • 19

    y . Los atributos del elemento estn contenidos en la etiqueta de

    inicio y el contenido est ubicado entre las dos etiquetas, por ejemplo

    Contenido . Algunos elementos, tales

    como , no tienen contenido ni llevan una etiqueta de cierre.

    El marcado estructural describe el propsito del texto. Por ejemplo,

    Blog establece Blog como un encabezamiento de segundo nivel. El

    marcado estructural no define cmo se ver el elemento, pero la mayora de los

    navegadores web han estandarizado el formato de los elementos. Un formato especfico

    puede ser aplicado al texto por medio de hojas de estilo en cascada, que se explicarn

    ms adelante.

    El marcado presentacional describe la apariencia del texto, sin importar su

    funcin. Por ejemplo, negrita indica que los navegadores web visuales deben

    mostrar el texto en negrita, pero no indica qu deben hacer los navegadores web que

    muestran el contenido de otra manera (por ejemplo, los que leen el texto en voz alta). En

    el caso de negrita e itlica, existen elementos que se ven de la misma

    manera pero tienen una naturaleza ms semntica: nfasis fuerte y

    nfasis. Es fcil ver cmo un lector de pantalla debera interpretar estos

    dos elementos. Sin embargo, son equivalentes a sus correspondientes elementos

    presentacionales: un lector de pantalla no debera decir ms fuerte el nombre de un

    libro, aunque ste est en itlicas en una pantalla. La mayora del marcado

    presentacional ha sido desechada con HTML 4.0, en favor de hojas de estilo en cascada.

    El marcado hipertextual se utiliza para enlazar partes del documento con otros

    documentos o con otras partes del mismo documento. Para crear un enlace es necesario

    utilizar la etiqueta de ancla junto con el atributo href, que establecer la direccin

    URL a la que apunta el enlace. Por ejemplo, un enlace a la Wikipedia sera de la

    forma Wikipedia. Tambin se pueden crear enlaces

    sobre otros objetos, tales como imgenes

    .

    1.6.2 Atributos

    La mayora de los atributos de un elemento son pares nombre-valor, separados

    por un signo de igual = y escritos en la etiqueta de comienzo de un elemento, despus

    del nombre de ste. El valor puede estar rodeado por comillas dobles o simples, aunque

    ciertos tipos de valores pueden estar sin comillas en HTML (pero no en XHTML). De

    todas maneras, dejar los valores sin comillas es considerado poco seguro. En contraste

    con los pares nombre-elemento, hay algunos atributos que afectan al elemento

    simplemente por su presencia (tal como el atributo ismap para el elemento img).

    1.6.3 Tipos de datos

    HTML dispone de distintos tipos bsicos de datos que pueden aparecer como

    contenido de un elemento o valor de un atributo, como: cadenas de texto, URLs,

  • 20

    colores, nmeros, longitudes, tipos de contenido, cdigos de idioma, fechas y horas,

    hojas de estilo

    1.7 CSS

    El nombre hojas de estilo en cascada viene del ingls Cascading Style Sheets,

    del que toma sus siglas. CSS es un lenguaje usado para definir la presentacin de un

    documento estructurado escrito en HTML o XML (y por extensin en XHTML).

    El W3C (World Wide Web Consortium) es el encargado de formular la especificacin

    de las hojas de estilo que servirn de estndar para los agentes de usuario o

    navegadores.

    La idea que se encuentra detrs del desarrollo de CSS es separar la estructura de

    un documento de su presentacin.

    Por ejemplo, el elemento de HTML indica que un bloque de texto es un

    encabezamiento y que es ms importante que un bloque etiquetado como .

    Versiones ms antiguas de HTML permitan atributos extra dentro de la etiqueta abierta

    para darle formato (como el color o el tamao de fuente). No obstante, cada

    etiqueta deba disponer de la informacin si se deseaba un diseo consistente para

    una pgina y, adems, una persona que lea esa pgina con un navegador perda

    totalmente el control sobre la visualizacin del texto.

    Cuando se utiliza CSS, la etiqueta no debera proporcionar informacin

    sobre cmo ser visualizado, solamente marca la estructura del documento. La

    informacin de estilo, separada en una hoja de estilo, especfica cmo se ha de

    mostrar : color, fuente, alineacin del texto, tamao y otras caractersticas no

    visuales, como definir el volumen de un sintetizador de voz, por ejemplo.

    La informacin de estilo puede ser adjuntada como un documento separado o en

    el mismo documento HTML. En este ltimo caso podran definirse estilos generales en

    la cabecera del documento o en cada etiqueta particular mediante el atributo "style".

    1.7.1 Tipos de Hojas de Estilo

    CSS proporciona tres caminos diferentes para aplicar las reglas de estilo a una

    pgina Web:

    - Una hoja de estilo externa, es una hoja de estilo que est almacenada en un

    archivo diferente al archivo donde se almacena el cdigo HTML de la pgina Web. sta

    es la manera de programar ms potente, porque separa completamente las reglas de

    formateo para la pgina HTML de la estructura bsica de la pgina.

    - Una hoja de estilo interna, que es una hoja de estilo que est incrustada dentro

    de un documento HTML. (Va a la derecha dentro del elemento .) De esta

    manera se obtiene el beneficio de separar la informacin del estilo del cdigo HTML

    propiamente dicho. Se puede optar por copiar la hoja de estilo incrustada de una pgina

  • 21

    a otra (esta posibilidad es difcil de ejecutar si se desea para guardar las copias

    sincronizadas). En general, la nica vez que se usa una hoja de estilo interna, es cuando

    se quiere proporcionar alguna caracterstica a una pgina Web en un simple fichero, por

    ejemplo, si se est enviando algo a la pgina Web.

    - Un estilo en lnea (inline) es un mtodo para insertar el lenguaje de estilo de

    pgina directamente dentro de una etiqueta HTML. Esta manera de proceder no es

    totalmente adecuada. El incrustar la descripcin del formateo dentro del documento de

    la pgina Web, a nivel de cdigo, se convierte en una manera larga, tediosa y poco

    elegante de resolver el problema de la programacin de la pgina. Este modo de trabajo

    se podra usar de manera ocasional si se pretende aplicar un formateo con prisa, al

    vuelo. No es todo lo claro o estructurado que debera ser, pero funciona. ste es el

    mtodo recomendado para maquetar correos electrnicos en HTML.

    1.7.2 Ventajas de Usar las Hojas de Estilo

    Las ventajas de utilizar CSS (u otro lenguaje de estilo) son:

    - Control centralizado de la presentacin de un sitio web completo con lo que se

    agiliza de forma considerable la actualizacin 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 tamao del texto o remarcar ms

    los enlaces.

    - Una pgina puede disponer de diferentes hojas de estilo segn el dispositivo que

    la muestre o, incluso, a eleccin del usuario. Por ejemplo, para ser impresa,

    mostrada en un dispositivo mvil o ser "leda" por un sintetizador de voz.

    - El documento HTML en s mismo es ms claro de entender y se consigue

    reducir considerablemente su tamao (siempre y cuando no se utilice estilo en

    lnea).

    1.7.3 Sintaxis

    Una hoja de estilo se compone de reglas de visualizacin (reglas de estilo).

    Cada regla consta de un selector, que es el que indica a que elemento o parte de

    la pgina se aplica el estilo; normalmente los selectores son etiquetas HTML (por

    ejemplo, h1 sera un selector que permitira aplicar estilos a las cabeceras ). A cada

    selector debe seguirle una declaracin del estilo que ha de serle aplicado (por ejemplo,

    color: blue). Toda declaracin tiene dos partes: propiedad (por ejemplo, color)

    y valor (por ejemplo, blue).

    El enunciado de reglas constituye la forma usual de declarar estilos, y deben

    ajustarse a la sintaxis definida por la especificacin CSS; si el navegador encuentra un

    selector que no entiende, ignorar la entera declaracin. Si encuentra dentro de la

  • 22

    declaracin una propiedad o valor que no comprende ignorar esta parte de la

    declaracin, pero deber procesar el resto.

    Los selectores disponibles son, como queda dicho, todas las etiquetas HTML. A

    cualquier etiqueta HTML se le puede asignar un estilo. Las propiedades disponibles son

    las enunciadas como tales en el standard CSS; y los valores son asimismo los asignados

    en dicho standard. Luego solo pueden utilizarse propiedades y valores contemplados en

    el standard, no siendo posible crear tus propias propiedades y valores.

    Los estilos, entonces, se definen as:

    selector {

    propiedad:valor }

    Cdigo 5. Ejemplo selector

    Los selectores se escriben omitiendo las llaves < y >, es decir, simplemente h1,

    h2, etc. La declaracin {propiedad : valor} ha de ir encerrada en llaves { }. Pueden

    asignarse varias propiedades a un mismo selector, separadas por punto y coma:

    Selector {

    propiedad1: valor1;

    propiedad2: valor2 }

    Cdigo 6. Ejemplo Selector

    Tambin se pueden asignar propiedades de forma conjunta a varios selectores:

    Selector1, Selector2, {

    propiedad1:valor1;

    propiedad2:valor2}

    Cdigo 7. Ejemplo Selector

  • 23

    2. Cdigo

    2.1 Controladores

    Cdigo 1. Controlador principal

    class Main_page extends CI_Controller {

    function _Construct() {

    parent::Construct();

    require_once 'classes/Membership.php';

    $membership = New Membership();

    $membership->confirm_Member();

    }

    function index() {

    ?>

  • 24

    Cdigo 2. Controlador pgina principal (logeado)

    Cdigo 3. Controlador pgina principal (Blog, logeado)

  • 25

    $this->load->view('main_logged/main_newsview', $data);

    }

    }

    ?>

    Cdigo 4. Controlador pgina principal (Noticias, logeado)

    Cdigo 5. Controlador pgina principal (No logeado)

    class Main_Blog extends CI_Controller {

    function _Construct() {

    parent::Construct();

    }

    function index() {

    ?>

  • 26

    $data['h2'] = "BLOG:";

    $data['message'] = 'Temas disponibles: ';

    $data['query'] = $this->db->get('entries');

    $this->load->view('main_views/main_blogview', $data);

    }

    }

    ?>

    Cdigo 6. Controlador pgina principal (Blog, no logeado)

    class Main_News extends CI_Controller {

    function _Construct() {

    parent::Construct();

    }

    function index() {

    ?>

    Cdigo 7. Controlador pgina principal (Noticias, no logeado)

  • 27

    $data['message'] = '';

    $this->load->view('create_user', $data);

    }

    function create_user_good() {

    $data['title'] = "Nuevo usuario";

    $data['heading'] = "Crear nuevo usuario";

    $data['message'] = 'Rellene todos los campos';

    $this->load->view('create_user', $data);

    }

    function invalid_user() {

    $data['title'] = "Nuevo usuario";

    $data['heading'] = "Crear nuevo usuario";

    $data['message'] = 'El nombre de usuario ya esta en uso';

    $this->load->view('create_user', $data);

    }

    function invalid_email() {

    $data['title'] = "Nuevo usuario";

    $data['heading'] = "Crear nuevo usuario";

    $data['message'] = 'El correo electronico ya esta en uso';

    $this->load->view('create_user', $data);

    }

    function user_insert() {

    if ($_POST && !empty($_POST['username']) &&

    !empty($_POST['email'])

    && !empty($_POST['nombre']) &&

    !empty($_POST['password'])) {

    $this->db->where('username', $this->input-

    >post('username'));

    $date = $this->db->get('users');

    if ($date->num_rows() > 0) {

    redirect('login/invalid_user');

    } else {

    $this->db->where('email', $this->input-

    >post('email'));

    $date = $this->db->get('users');

    if ($date->num_rows() > 0) {

    redirect('login/invalid_email');

    } else {

    $new_member_insert_data = array(

    'nombre' => $this->input->post('nombre'),

    'username' => $this->input->post('username'),

    'email' => $this->input->post('email'),

    'password' => md5(($this->input-

    >post('password'))));

    $this->db->insert('users',

    $new_member_insert_data);

  • 28

    redirect('not_logged/main_page/created_user');

    }

    }

    } else {

    redirect('login/create_user_good');

    }

    }

    }

    ?>

    Cdigo 8. Controlador login

    Cdigo 9. Controlador validar login

  • 29

    }

    function index() {

    $send['into'] = $this->input->post('find');

    $send['tabla'] = $this->input->post('table');

    if ($send['tabla'] === 'book') {

    $this->load->view('results_view/view_book', $send);

    } elseif ($send['tabla'] === 'editorial') {

    $this->load->view('results_view/view_editorial', $send);

    } elseif ($send['tabla'] === 'author') {

    $this->load->view('results_view/view_author', $send);

    }

    }

    }

    ?>

    Cdigo 10. Controlador buscador

    Cdigo 11. Controlador noticias

  • 30

    function index() {

    $data['title'] = "Blog";

    $data['heading'] = "BLOG";

    $data['message'] = 'Introduce un comentario o ';

    $data['query'] = $this->db->get('entries');

    $this->load->view('blogview', $data);

    }

    function comments() {

    $data['title'] = "Comentarios";

    $data['heading'] = "COMENTARIOS";

    $this->db->where('entry_id', $this->uri->segment(3));

    $data['query'] = $this->db->get('comments');

    $this->load->view('comment_view', $data);

    }

    function topic() {

    $data['title'] = "Temas";

    $data['heading'] = "Listado de temas:";

    $this->db->where('id', $this->uri->segment(3));

    $data['query'] = $this->db->get('entries');

    $this->load->view('topic_view', $data);

    }

    function comment_insert() {

    $new_comment = array(

    'body' => $this->input->post('body'),

    'entry_id' => $this->input->post('entry_id'),

    'author' => $this->session->userdata('user'),

    );

    $this->db->insert('comments', $new_comment);

    redirect('blog/comments/' . $_POST['entry_id']);

    }

    function topic_insert() {

    $new_topic = array(

    'body' => $this->input->post('body'),

    'author' => $this->session->userdata('user'),

    );

    $this->db->insert('entries', $new_topic);

    redirect('blog/topic/' . $_POST['id']);

    }

    }

    ?>

  • 31

    Cdigo 12. Controlador blog

    Cdigo 13. Controlador lista de libros

    2.1 Vistas

    Bienvenido/a, !

    T&iacutetulo

    Autor

    Editorial

  • 32

    -

    Cdigo 14. Vista principal (logeado)

    Bienvenido/a, !

  • 33

    T&iacutetulo

    Autor

    Editorial

    -

    Cdigo 15. Vista principal (Noticias, logeado)

  • 34

    Bienvenido/a, !

    T&iacutetulo

    Autor

    Editorial

    -

  • 35

    Cdigo 16. Vista principal (Blog, logeado)

    T&iacutetulo

    Autor

    Editorial

  • 36

    -

    No estas logeado, entra o

    Cdigo 17. Vista principal (No logeado)

  • 37

    T&iacutetulo

    Autor

    Editorial

    -

    No estas logeado, entra o

  • 38

    Cdigo 18. Vista principal (Blog, no logeado)

    T&iacutetulo

    Autor

    Editorial

  • 39

    -

    No estas logeado, entra o

    Cdigo 19. Vista principal (Noticias, no logeado)

    Nombre:

    Email:

    Usuario:

    Contrase&ntildea:

  • 40

    Cdigo 20. Vista crear un usuario

    -

    Cdigo 21. Vista noticias

  • 41

    ?>

    T&IacuteTULO:

    AUTOR:

    EDITORIAL:

    TEMA:

    PUNTUACI&OacuteN:

  • 42

    Cdigo 22. Vista listado de libros

    :

    Cdigo 23. Vista principal del Blog

  • 43

    Tema:

    Este tema a&uacuten no tiene comentarios,

    s&eacute el primero!

  • 44

    Cdigo 24. Vista blog (comentarios)

  • 45

    Cdigo 25. Vista blog (temas)

    Search results

    Resultados de la b&uacutesqueda:

    T&IacuteTULO:

    EDITORIAL:

    AUTOR:

  • 46

    echo $row->name;

    $this->db->where('id', $id_them);

    $date = $this->db->get('thematic');

    $row = $date->row();

    ?>

    TEMA:

    PUNTUACI&OacuteN: estrellas

    No estas logeado, entra o

  • 47

    ?>

    Cdigo 26. Vista resultados de la bsqueda por libro

    Search results

    Resultados de la b&uacutesqueda:

  • 48

    $this->db->where('id_author', $mi_id);

    $date = $this->db->get('book');

    ?>

    T&IacuteTULO:

    AUTOR:

    EDITORIAL:

    TEMA:

    PUNTUACI&OacuteN:

    estrellas

  • 49

    echo '' . anchor($row-

    >link, 'Descargar') . '';

    } else {

    ?> No estas logeado, entra o

    Cdigo 27. Vista resultados de la bsqueda por autor

  • 50

    Search results

    Resultados de la b&uacutesqueda:

    T&IacuteTULO:

  • 51

    $row = $date->row();

    ?>

    AUTOR:

    EDITORIAL:

    TEMA:

    PUNTUACI&OacuteN:

    estrellas

  • 52

    if (($this->session->userdata('status')) == 'authorized') {

    ?>

    Cdigo 28. Vista resultados de la bsqueda por editorial

    2.2 Hojas de estilo

    h1 {

    text-align:center;

    font-size:30pt;

    }

    buscador{

    position:fixed;

    top:200px;

    left:10px;

    }

    login{

    position:fixed;

    top:380px;

    }

    table, th, tr{

    border: 1px solid black;

    }

    table{

    position:fixed;

    left:260px;

    top:175px;

    }

    dl{

    height:350px;

    width:900;

    vertical-align:bottom;

    }

    table{

    border-width: thick;

    border-spacing: 2px;

    border-style: outset;

  • 53

    border-color: gray;

    border-collapse: separate;

    background-color: white;

    }

    body{

    background-

    image:url('http://dl.dropbox.com/u/12003965/fondo.png');

    }

    a,b,c {

    color:black;

    }

    d{

    vertical-align:auto;

    left:100px;

    }

    input.boton{

    padding: 10px;

    font-size:20px

    }

    create{

    font-size:22px

    }

    main{

    font-size:20px;

    }

    message{

    font-size:15px;

    }

    div.scroll{

    width:895px;

    height:450px;

    overflow:scroll;

    }

    Cdigo 29. Hoja de estilo

    body{

    background-

    image:url('http://dl.dropbox.com/u/12003965/fondo.png');

    }

  • 54

    p{

    background-

    image:url('http://dl.dropbox.com/u/12003965/cuadro.png');

    }

    table{

    background:#fff;

    position:fixed;

    left:300px;

    top:175px;

    border-width: 0px;

    }

    login{

    position:fixed;

    top:280px;

    }

    tabla{

    position:fixed;

    left:300px;

    top:175px;

    border-width: 0px;

    }

    div.scroll{

    width:900px;

    height:450px;

    overflow:scroll;

    }

    td{

    width:900px;

    height:100px;

    vertical-align: top;

    }

    back{

    position:fixed;

    top:200px;

    left:10px;

    }

    cabecera{

    position:fixed;

    text-align:center;

    left:570px;

    }

    topic{

    font-size:30px

    }

    f{

    font-size:30px

  • 55

    }

    input.boton{

    padding: 10px;

    font-size:20px

    }

    create{

    font-size:22px

    }

    m{

    color:blue;

    }

    Cdigo 30. Hoja de estilo

  • 56

    3. Referencias

    [1] http://es.wikipedia.org/wiki/Interfaz_de_entrada_com%C3%BAn

    [2] http://es.wikipedia.org/wiki/MySQL

    [3] http://news.netcraft.com/

    [4] http://www.gnu.org/licenses/license-list.html

    [5] http://www.apache.org/foundation/license-faq.html#Marks

    [6] http://fabianperez.blogspot.com/2008/02/tipos-de-datos-en-php.html

    [7] http://www.manualdephp.com/manualphp/funciones-php.html

    [8] http://www.cs.tut.fi/~jkorpela/qattr.html

    [9] http://html.conclase.net/w3c/html401-es/types.html

    [10] http://dev.mysql.com/doc/refman/5.5/en/history.html

    [11] http://httpd.apache.org/ABOUT_APACHE.html

    [12] http://www.ignside.net/man/css/sintaxis.php

    [13] http://codeigniter.com/

    [14] http://www.desarrolloweb.com/articulos/modelo-vista-controlador-

    codeigniter.html

    [15] http://www.w3.org

    [16] http://www.faqs.org/rfcs/

    [17] http://httpd.apache.org/docs/2.0/mod/worker.html

    [18] http://journals.tdl.org/jodi/article/viewArticle/90/89

    [19] http://www.google.com

    [20] http://en.wikipedia.org

    [21] http://php.net

    [22] http://mysql.com

    [23] http://dessarrolloweb.com