Apache Codeigniter Css
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ítulo
Autor
Editorial
-
32
-
Cdigo 14. Vista principal (logeado)
Bienvenido/a, !
-
33
Título
Autor
Editorial
-
Cdigo 15. Vista principal (Noticias, logeado)
-
34
Bienvenido/a, !
Título
Autor
Editorial
-
-
35
Cdigo 16. Vista principal (Blog, logeado)
Título
Autor
Editorial
-
36
-
No estas logeado, entra o
Cdigo 17. Vista principal (No logeado)
-
37
Título
Autor
Editorial
-
No estas logeado, entra o
-
38
Cdigo 18. Vista principal (Blog, no logeado)
Título
Autor
Editorial
-
39
-
No estas logeado, entra o
Cdigo 19. Vista principal (Noticias, no logeado)
Nombre:
Email:
Usuario:
Contraseña:
-
40
Cdigo 20. Vista crear un usuario
-
Cdigo 21. Vista noticias
-
41
?>
TÍTULO:
AUTOR:
EDITORIAL:
TEMA:
PUNTUACIÓN:
-
42
Cdigo 22. Vista listado de libros
:
Cdigo 23. Vista principal del Blog
-
43
Tema:
Este tema aún no tiene comentarios,
sé el primero!
-
44
Cdigo 24. Vista blog (comentarios)
-
45
Cdigo 25. Vista blog (temas)
Search results
Resultados de la búsqueda:
TÍTULO:
EDITORIAL:
AUTOR:
-
46
echo $row->name;
$this->db->where('id', $id_them);
$date = $this->db->get('thematic');
$row = $date->row();
?>
TEMA:
PUNTUACIÓN: estrellas
No estas logeado, entra o
-
47
?>
Cdigo 26. Vista resultados de la bsqueda por libro
Search results
Resultados de la búsqueda:
-
48
$this->db->where('id_author', $mi_id);
$date = $this->db->get('book');
?>
TÍTULO:
AUTOR:
EDITORIAL:
TEMA:
PUNTUACIÓN:
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úsqueda:
TÍTULO:
-
51
$row = $date->row();
?>
AUTOR:
EDITORIAL:
TEMA:
PUNTUACIÓN:
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