Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Implantación de Aplicaciones Web - Garceta
Implantación de Aplicaciones Web - Garceta
Implantación de Aplicaciones
Web
Jorge Sánchez Asenjo
Implantación de Aplicaciones
Web
Im planta ció n de Ap lica ciones Web
Edición : 1. '
Impresión : 1. '
N.' de páginas : 476
Forma t o : 20 x 26 cm
Reservados los derechos para t odos los países de leng ua españo la . De conform idad con lo dispuesto en el artículo 27 0 y sig uient es del
código penal v ige nt e, podrán ser cast igados con penas de mul t a y pri vac ión de lib erta d quienes reproduj eren o plagiare n, en todo o en
parte , una ob ra lit erari a, artísti ca o cient ífica fij ada en cualq uier t ipo de soporte sin la pr ecepti va auto rización. Ninguna part e de esta
publicac ión, incluid o el diseño de la cubierta , puede ser repro duci da, alma cenada o t rasmi t ida de ning una form a, ni por ningún medio,
sea éste electrón ico, quím ico, mecánic o, elect ro -ópt ico, grabac ión , fot ocopi a o cualquier otro, sin la prev ia aut or ización escrita por part e
de la editorial.
Diríja se a CEDRO (Cent ro Espa ñol de Derechos Reprográ fi cos), www .cedro.org, si necesita fot ocopiar o escanea r algú n fragme nt o de esta
obra.
Im pres ión:
PRINT HOUSE, marca registrada de Copiar, S. A.
Nota sobre enlaces a pág inas web ajenas : Est e li bro pued e incl uir refer encias a sit ios we b gestionad os por t ercer os y ajenos a I BERGAR-
CETA PUBLICACIONES, S.L., que se incluy en sólo con fina lidad info rm at iva. IBERGARCETA PUBLICACIONES, S.L., no asum e ningún t ipo
de responsabilidad por los dañ os y perjui cios der ivados del uso de los datos per sonales que pueda hacer un t ercero encargado del man-
ten im iento de las pág inas web ajenas a IBERGARCETA PUBLICACIONES , S.L., y del funcionam iento, accesibi lidad y mante nimiento de
los sit ios web no gestionados por IBERGARCETA PUBLICACIONES, S.L., directamente . Las ref eren cias se pro por cionan en el est ado en
que se encuentran en el momento de pub licac ión sin garantías, exp resas o implícit as, sobre la información que se prop orcione en ellas.
PRÓLOGO
Este libro está escrito con la vocación de ser utili zado como libro de texto del módulo de
Implantación de Aplicaciones Web del ciclo de Grado Superior de Formación Profesion al de
Administración de Sistemas Informáticos en Red (AS IR, como es conocido por alumnos y
profesores) .
Por ello se ha pu esto especial ate nción en ayudar a cumplir los resultados de aprendizaje y
conte nidos expresa dos en el R.D. r629/ 200 9 de 30 de octubre en el qu e se establece el títul o de
Técnico Sup erior en Adm inist ración de Sistemas Informáticos en Red.
Soy profesor del mó dulo de Implantación de Aplicaciones Web des de el a ño 20n (el prime r a ño
en el que se pu do impartir esta materia) . He sido profesor de muchos otros módulos. Tamb ién
he sido profesor de Forma ción Ocupacional, Formación Continua y Educación Secundaria. He
tenido mu y en mente el problema que tenemos los pro fesores al impartir una nu eva materia.
Por ello, mi pretensión principal ha sido escribir el libro que yo mi smo , como doc ente, me
gustaría utilizar.
Creo tamb ién que este libro puede ser de gra n utilidad para aquellas personas y pro fesionales
que, sin ser alumnos o docentes de este módulo , quieran empezar a formarse o profundizar en
esta interesante mat eria.
La dispo sición de los capítulos y contenidos se han escr ito en un ord en en el qu e los conoci-
mientos qu e se van ad quiriendo ayudan a asim ilar los siguie ntes . Pero es perfecta mente posible
alterar este orden o centrarse en temas que coincidan más con los intereses del lector.
A este respecto quiero señalar que los contenidos del libro se pueden dividir en cinco bloques:
[1] Teoria sobre las aplicaciones web , unidad 1. Se trata de una unidad eminentemente teórica,
en la que se explica qué son las aplicaciones web y cuá l es su relación y evolució n con la web
jj IMPLANTACiÓN DE APLICACIONES WEB
actual. Se profundiza más allá de los contenidos mínimos , para dar un sentido histó rico y
de contexto a la materia, aborda ndo los prin cipales conce ptos y eleme ntos que intervienen
en la crea ción de aplicacio nes web y lo que aporta n a los usuarios qu e las utilizan .
[2] Preparación del ent orno de trabajo, unidad 2 . Este bloque estudia cómo implementar la
tecnología central del libro , Apache, PHP y MySQL, que sigue siendo la dominan te hoy en
día. Se trabaj a, de manera práctica, su insta lación en siste mas tanto Windows como Linux,
y, además , apre ndiendo las diferen tes forma s de hacerlo : totalmente manual, a travé s de
instaladores, mediante paq uetes com pleto s integrados, etc.
Esto permite disponer de un ento rno totalmente ada ptado a nu estros intereses e inclu so
armar varios siste mas qu e simulen las diferentes fases pro fesiona les de trabajo.
[4] Sistemas de gestión de contenidos, unidades 7 a ro . Tras una pr ime ra unidad que explica la
utilidad y ventajas del uso de CMS (Sistemas de Gestión de Contenidos), las tres siguientes
unid ades recorren las acciones fundamentales de trabajo con estas herramientas. Se utiliza
para ello a WordPress y Drupal como mo delo explicativo, ya qu e ambas son los ejemplos
más interesantes de CMS por sus capaci dade s y gra do de implan tación .
[5] Implant ación de aplicaciones de ofimática web , unidad Ir. Se estudian las venta jas y des-
ventajas de este servicio. Tras comparar los servicios más utilizad os hoy en día, se estudia el
funcionamiento completo de Goog le Docs .
Teni endo en cuenta los blo ques, se pu ede leer en otro orden los contenidos o focalizar la ate n-
ción en aquellos que se acomoden a las neces idades del lector.
Apache, PHP, MySQL, WordPress y Drupal, bajo los siste mas Win dows y Linux, son las tecn o-
logías sobre las que camina este texto. La idea no es ta nto domin ar estas tecnologías concretas,
sino explicarlas con una profundidad suficiente como para trabajar profesionalmente con ellas
o migrar a otras tecnologías sin grandes dificu ltades ; ya que espero qu e las bases del funciona-
miento de este tipo de herramientas se hayan cubierto tras la lectura de este libro.
Desde la URL http: //www.jorge sanchez.net llibroiaw. se puede encontrar material ext ra rela-
cionado con el libro. En esa misma dirección se pueden encontrar formas de contacto conmigo,
así como otros textos , ejercicios y presentaciones de otras ma terias.
Siempre recibo con gratitud vuestras aportaciones ya que gracias a ellas creo seguir mejo -
rando los contenidos que escribo.
CO NCEPTOS SOBRE
APLICACIONES WEB
OBJETIVOS CONTENIDOS
1.1 EVO LUC iÓ N DE LA WEB E INT ERN ET
- Reconocer la diferencia entre una 1.1.1 PERSPECT IVA HI STÓRI CA . EL ÉXIT O DE
aplicación web y una aplicación de LAS AP LICAC IONES W EB
escritorio 1.1.2 H ISTO RIA D E LA WEB
1.1.3 MOMENTO ACTUAL
- Valorar los cambios que han sufrido 1.2 APLICACION ES W EB
las aplicaciones web a lo largo de la 1.2.1 ¿QUÉ ES UNA APLICACiÓN WEB ?
1.2.2 VENTAJAS DE LAS APLICACIONES WEB
historia
1.2.3 DESVENTAJAS DE LAS APLICACIONES
WEB
Identificar el estado actual de
1.3 LA WEB 1.0, LA W EB 2.0 y LA W EB 3.0
implantación y funcionamiento de 1.3.1 LA W EB 2.0
las aplicaciones web 1.3.2 LA W EB 3.0
1.4 FUN CIONAMIENTO DE UNA
Distinguir los elementos que forman APLICACiÓN WEB
parte de la arquitectura de una 1.4.1 FU N CI O N A MIE NTO EN EL LA DO DEL
aplicación web moderna C LI ENTE
1.4. 2 FU N CI O N A M IENTO EN EL LA D O D EL
- Asimilar la idea, implicaciones y SERVIDOR
Esto no ha sido así siempre. lnicialmente en Internet no había página s web. Tenía servicios
como el correo electrónico, la tr ansmisión de ficheros o los grupos de noticias, qu e permitían
realizar muchas de las tareas que se siguen realizando act ualmente. Pero no había World Wide
Web. Los diferentes servicios se realizaban a tra vés de software cliente especiali zado en la tarea
con creta, lo qu e hacía qu e un usuario de Internet tuviera toda una pila de aplicaciones para acce-
der a los diferentes servicios, y esas aplica ciones no eran precisamente fáciles de manejar ; solo los
profesionales de la informática se sentían cómodos con ellos.
Así para leer el correo electrónico hacía falta un cliente de correo, la transmisión de ficheros
se realizaba mediante un software cliente FTP, los foros de debate se leían a través de gestores de
news, para el chat hacía falta también una aplicación especial y así ocurría con cada servicio que
ofrecía Internet.
Esos servicios se siguen pudiendo utilizar de esa form a hoy en día ; por ejemplo, se puede uti-
lizar software como ThunderBird u Outlook para leer el correo en lugar de hacerlo a través de
un navegador web. Pero ya no es lo habitual; los usua rios actuales reali zan todas las tareas rela-
cionadas con Internet a través de un único servicio: la web.
• Su manejo es sencillo. Unos simples clics de ratón nos permiten navegar por los diferen-
tes contenidos y servicios. Los usuarios entienden rápidamente esa forma de trabajar.
• Es muy visual. La web fue el primer servicio que permitió mostrar contenidos con imá -
genes, sonidos y vídeos . Ant es de ella, los contenidos que ofrecía Internet eran solo tex-
to s. Actualmente una simple página web es capaz de mostrar cualquier elemento visible
desde una pantalla, y proporcionar tanta interactividad a los contenidos como la pericia
y la imaginación del creador de la página permitan.
Inicialmente las págin as web esta ban comp ues tas de tex to y en laces (a otras págin as), pero en
poco tiempo, los u suarios de las págin as web dem andaron qu e estas ofrecieran más servicios: no
solo m ostrar está ticame nte un tex to fijo, sin o qu e la informa ción también incluyera im ágen es,
vídeos , anima cion es,... y poco a poco: acceso a servi dores de bases de da tos, man ejo del correo
elect ró nico, tra ns mi sión de fichero s, com pra y venta de productos, etc.
Ho y en día desde la Web se pu ed e hacer cua lquier ta rea, editar documentos, leer el correo
electrónico, enviar m en sajes, ret ocar foto s, ver películas, escuchar radio o incluso ad min istrar un
servidor remoto.
La web par ece el servicio definitivo, pero también tiene sus pegas. A m edida qu e las páginas se
hacen más complejas, se requiere en el nave gado r más comp one n te s (plugins) para poder verlas
bien .
En todo caso el probl ema de los plugin s ha pasad o a ser un problema m en or, ya que los nave-
gadores ya sue len traer hoy en día los plugins m ínimos n ecesari os y los cread ores de aplicaciones
web se ada ptan a esos mínimos. Incluso los contenidos hech os en Flash , qu e era la tec no logía más
habitual para crear aplicaciones web enriquecidas, se van retirando de las aplic aciones web para
sustituirse por tecnologías equivalentes com patibles con HTMLS.
En la actualidad solo el mundo de las apps en los dispositivos móviles parece arr ojar algun a
com pete n cia al éxito de las aplicacion es web.
• 1989
Tim Bemes Lee', científico británico qu e trabajab a en el CERN>, el centro de desa-
rrollo nuclear ub icado en Suiza, in tenta trasladar el hipertexto a los doc umentos
cien tíficos, m edi ante el cual es po sible avanzar de un documento a ot ro m ed iante
en laces existen tes en el pro pio t exto. Teori zó la forma de transportar este tipo de
documentos (el actual protocolo http) y sobre el lenguaje de m ar cas a utilizar.
• 199 0
• Apare ce el primer navegador web , llamad o WorldWideWeb (más tarde Nex us) para
realizar pruebas, se cre ó para un orden ador Next.
Premi o Prín cipe de Astur ias 2002 jun to a Lawrence Roberts, Robert Kahn y
Vinton Cerf: con siderados los padres de Inte rne t
2 ~u b lic.web. c ern . ch /public /
4 IM PLA NTACiÓ N DE APLICAC IONES W EB
199 1
Tim Bernes Lee acude a un grup o de discusión en Internet para discutir sobre cómo
impleme ntar el hip ertexto de forma más conve niente. Con ello no pretende privati-
zar su inven to, sino hacerlo pú blico desde el primer momento.
199 2
Pei-Yuan Wei crea ViolaWWW , con siderado el verdadero primer navegador, era
capaz de interpretar un lenguaj e de script adem ás del propio HTML ; era un producto
muy innovador.
1993
El CERN an uncia que la web será libre para todo el mundo. Renuncia a sus posibles
pat entes.
La NCSA3se interesa por la, ya llamada, web y crea el primer navegado r realmente
exitoso: Mosaic. Entre sus creadores está Eric Bina y Marc Adreessen y participó la
universidad de Ur bana-Champaign.
• Lou Montulli desarrolla Lynx para los sistemas Unix, el primer navegado r de texto
en la web. Será ampliamente utilizado en los años siguientes, aunque luego quedará
rápidamente superado por las capacidades de los navegadores gráficos.
Se empieza a hacer popular la etiqueta img (gracias a Mosaic), las imágenes empiezan
a poblar la web.
• Aparece el primer borrador de HTML gracias a Tim Bernes-Lee y Dan Conely.
1994
Conferencia global sobre la web.
• La lETf4 asigna un gru po de trabajo para estan darizar HTML.
El len guaje HTML empieza a ser caótico porque aparecen numerosas etiquetas
inventadas por cada entidad privada. Dan ConnolIy recopila las etiquetas HT ML
más utilizadas de la época y se crea el borrador de HTML 2.
Marc Adreessen y [irn Clark abandona la NCSA y fundan Mosaic Com mu nicat ions
(futura Netscape). Dejan también los estándares y crean elementos nuevos en el len -
guaje HTML para permitir la creación de páginas más vistosas para su navegador.
• Guido Van Rossum crea Python, considerado uno de los lenguajes más cómodos y
fáciles de entender. Se ha utilizado y se utiliza extensamente para programar aplica-
ciones web en los servidores.
A finales del año se crea la World Wide Con sor t ium ' (W3C) fichando a algunos de
los principales impulsores de la web (incluido Tim Bernes Lee). Se convertirá en el
3 Nat ional Center for Supercomputing Applications, Centro Nacional de Est ado s Unidos de Supercom-
putación, crea dor de las prim eras grandes redes de cálculo y su percomputadoras.
4 Internet Engineering Task Force , gru po que esta ndariza diferentes aspecto s de Int ernet
5 http: //\V\vw.w3·org y en español http: //www.\V3c.es/
UN IDAD 1. CO NCE PTOS SO BRE A PLICACI ON ES W EB 5
• 1995
Aparece CGI, Common Gateway Interface , Interfaz de Pasarel a Común que permite
incorporar código pro gramado en lenguajes avan zado s (C , Perl...) y conseg uir comu-
nicar esos programas con las páginas web a fin de dotarlas de servicios más avanzados.
Aparece Win dows 95. Con él, la informática de consumo llega a casi todos los hoga-
res del mundo desarr ollado.
Siguen aparecien do n uevo s elementos en HTML que imp ulsan las posibilidades
de las páginas web. Se crea el borrador HTML 3, que incluye tipos de letra y ot ras
mejoras.
Microsoft crea Internet Explorer y lo incorpora rápidamente como parte del sis-
tema operativo Windows 95. Comienza la primera guerr a de los navegadores entre el
propio Explorer y Netscape Navigator.
El grupo de trabajo de la LETF para HTML se desm antela por su escasa influ encia.
El World Wide Consortium queda como principal organism o de estandarización de
HTML.
Hakom Wum Líe de la empresa noruega Telenor, crea el navegador Opera. Nunca
ha alcanzado una gran cuota de púb lico, pero sigue presente después de tantos a ños.
A fina les de afio apa rec en los primeros elementos de creación de hoja s de estilo, raíz
del lenguaje CSS que permite dar formato avan zado a las páginas web y qu e sigue
siendo un a de las tecnologías impresci ndibles en la actua lidad para crear página s
web.
Sun Microsystems crea el lenguaj e Java, que tendrá una eno rme influ enci a en el
desarrollo de las aplicaciones web.
• Se lanza el servidor http de código abierto Apache. Todavía hoy en día sigue siendo el
software más ut ilizado para implementar servidores web.
Los herm anos Allaire, crean ColdFusion, un lenguaje de scr ipt sobre HTML que
se ejecuta en el servidor qu e aloja las páginas web (servidores compatibles con esta
tecnología) de modo qu e el cliente no necesita ten er un software especial qu e reco -
no zca esta tecn ología. Al cliente le llegan páginas web normales qu e ha preparad o el
servidor tras traducir este lenguaje.
Será el primero de los len guajes de script en el lado del servidor.
Netscape desarrolla [avaScript, un len guaje basado en C y Java qu e se incrusta dentro
del cód igo HT ML de las páginas para dar les una mayor pote ncia. Hoy en día sigue
6 IM PLANTACi Ó N DE APLICACIONES WEB
• 199 6
Se crea el HTML ERB (Editorial Review Board), en el qu e participan empresas com o
lBM, Micros oft , Netsc ape , Novell... y el propio W3C. Es una reunión trimestral para
ayudar en el estándar.
Se crea Yahoo! la primera página exitosa que permite organizar la web para facilitar
la búsqueda de otras páginas. Rápidamente se convertirá en el sitio web más popular
de Internet yen el primer índice de la Web. La empresa será una de las de mayor valor
en bolsa durante varios años.
Rasmus Lerdorf crea el lenguaje script del lado del servidor PH P. Todavía sigue
siendo la tecnología más popular para crear aplicaciones web en el lado del servidor.
La empresa Macro m edia lan za el software Flash (creado inicialmen te por la empresa
FutureWave). Se trata de una tecnología del lado del cliente (requiere un plugin en el
navegador) que permite crear contenidos multimedia muy avan zado s. Así las página s
con Flash incluían todo tipo de elementos visuales e intera ctivos que enriquecían
enormemente la experien cia de usuario. En los siguientes a110s se convertiría en la
tecnología más influyente para crear aplicaciones web enriquecidas.
• La W3C estandariza CSS1 su popularidad aumenta rápidamente.
• Se lanza Hotmail el sitio web que permite utilizar correo electrónico desde la web.
Se convierte en el correo electrónico más popular y acaba siendo comprado por
Microsoft.
• 1997
Escándalo Lewinsky. Los informes oficiales y detalles sobre el escándalo aparecen
antes en la web que en los medios tradicionales de información. El públi co se acos-
tumbra a leer noticias en la web, lo que poco a poco iniciará una crisis en los medios
tradicionales que ven muy reducido su mercado.
UN IDAD 1. CO NCE PTOS SOB RE A PLICACION ES W EB 7
Aparece la especificación está ndar HTML 3.2, la primera en ser ampliame nte acep-
tada. Incluye tablas, app lets (pensa das para a ñadir eleme ntos Java a las páginas) y
otros formatos avan zado s de dis e ño.
Sun Microsystems crea Java Servlets y Microsoft crea el lengu aje ASP. Son do s tec -
no logías del lado del servidor que tendrá n una gran influencia en los a ños siguientes.
Versión 4 de Internet Explorer y Netscape Navigator. Se recrudece la guerra entre
estos navegadores.
• 1998
La W3C pub lica los está ndares HTML 4. 0 Y CSS 2. Los está ndares de la W 3C cada vez
se tie nen más en cue nta y am bos alcanzan un gran éxito rápid amente.
La combinación HTML+JavaScript+CSS se conoce desde este a ño como DHTML
(HTML dinámico). Alcanzará un a enorme no toriedad y será la combinación habitua l
para hacer páginas web atrac tivas sin ut ilizar plugin s de terceros.
Aparece XML L O por parte de la W3C. En en palabras del propio Tim Bernes Lee,
"XML es e/ lenguaje que debió ser HTML". No ha llegado a suplantar a HTML, pero
sigue teni endo un a enorme influ en cia en todo tipo de tecnologías.
• Netscape crea la fundaci ón Mozilla para mejor ar el código del navegador Netscape
Navigat or que pasará a ser un software de código abierto. Se crea el motor Gecko
núcleo futuro de varios navegado res (especialme nte de Firefox).
Se funda la Web Standards Project fundación encargada de pro mover el uso de los
está ndares HTML. Es famosa por la creación de los tes t Acid qu e validan el res peto
de los está ndares por parte de los navega dores.
• 1999
Sun crea JSP (páginas de servidor en lenguaje Java) y la plataforma de trabajo J2EE
(Java Enterprise) con lo qu e pretend e crear un ento rn o pod ero so de tr abajo par a
crear aplicaciones y servicios de Intern et .
El navegador Internet Explorer de Micr osoft em pieza a do minar el mercado.
Se crea el test Acid 1 (CSS Acid Test ) para testear el funcionam iento de HTML 4 Y
CSS 1.
Aparece RSS un formato de contenido basa do en XML qu e permite la sindicación de
contenidos y así obtener información sobre tem as deseado s de forma veloz.
• La W3C presenta HTML 4. 01, indicando que será la última versión estándar del len -
guaje HTML.
Micr osoft crea para Internet Explorer 5 un nuevo elemento XML llamad o
XMLHttpReques t qu e será copiado en los demás naveg adores en los a ños sucesi-
vos. El acceso a este eleme nto desde JavaScript permite crear páginas muy dinám icas
y potentes, ya que pu eden mostrar en un elemento HT ML respu estas a peticiones
http. A este forma de pro gram ar se le llamará (ha cia el afio 2005) AJAX, acrónim o de
Asy nchronous ]avaScript and XML
8 IMPLANTACiÓN DE APLICACIONES WEB
11 2 0 0 0
El sitio web Napster utilizado para descargar mú sica, pierde juicio s contra las leyes
de autor y es obligada a cerrar.
2002
La fundación Mozilla reco ge el código liberado por Netscape y crea su propio nave-
gador Fireb ird (futuro Firefox),
Microsoft crea la plataforma de ap licaciones .NET con vocación de competir con la
plataforma Java Empresarial, J2EE.
• Apple crea un a bifur cación del proye cto KHTML y lo llama Webkit. Este será el
motor del futuro Safari y de Google Chrome.
Aparece MySpace popular web social de éxito espectacular en esos a ños.
• 20 03
• 20 0 4
• Se comercializa el navega dor Firefox, comienza la segu nda guerra de navegadores.
Se form a el WHATWG par a conseguir un HTML versión 5 qu e se con vierta en nu evo
estándar. Lo imp ulsan Opera y Mozilla, principalmente, y es rápidamente apoy ado
por Apple y Goo gle para contrarr estar el dominio de Microsoft.
• Aparece Facebook, verdadera re d social digital cuyo éxito desborda en los siguientes
a ños hasta llegar a cientos de millones de usuarios.
Aparece Gmail servicio de corre o web de Google, qu e poco a poco, se populariza por
el ta ma ño de su bu zón y por sus gran des prestaciones y experiencia de usuari o. El
resto de servicios de correo web van m ejorando también sus pr estaciones.
• 20 0 5
AJAX, tecnología que combina JavaScript, HTML , CSS y XML se pop ulariza pasando
a ser un a de las tecnologías fun da mentales para crear páginas web diná micas. Gracias
a esta tecno logía comienza la llamada tercera era de la web.
10 IMPLANTACiÓN DE APLICACION ES W EB
• 20 0 6
loe Hewitt lanza Firebug (bajo la idea de la Web Developer Bar), la extensión para
Firefox que perm it e dep urar el código de cua lquier sitio web. Su forma de trabajar es
copiada, en los año s siguientes, por to das las herramien tas para desarrolladores web
en el resto de navegadores.
]ohn Resig crea jQuer y, framework que facilita el uso de JavaSeript y le dota de mayo-
res capacidades. Es una de las te cno logías más influyentes de estos últimos a ños.
Tras muc hos a ños sin sacar una nueva versión, y tra s el éxito de Mozilla Fire fox,
Microsoft lanza Internet Explorer 7.
Aparece el sitio de microbl ogging, twitter . En poco tiempo se convierte en uno de los
más populares por su velocidad para transmitir información.
• Google com pra el popular sitio de alojamien to de vídeos Youtube.
• 200 7
Goog le lanza Street View como complemento a Google Maps desde el que se ven fot o-
grafías de todas las calles de varias ciudades est adounidenses . En los a ños siguientes,
conseguirá fotografiar la mayoría de las carre teras y calles de diversos países, entre
ellos Espa ña,
Se crea la red social Tumblr.
• Se crea Soun dCloud, plataforma de distribución de mú sica online para nuevos
artistas.
U N IDAD 1. CONCEPTOS SOBRE APLICAC IONES WEB 11
Apple comercializa el primer iPhone. Comienza el éxito de los smart pho nes qu e
pasarán a com petir con los ordenad ores personales como los dispositi vos habitu ales
para utilizar aplicaciones web.
Google pr esenta el siste ma Android. En poco tiempo estará presente en numeroso s
smart phones .
• 20 0 8
La guerra de los navegadores se recru dece con la llegada de Google Chrome. En solo
5 años se convier te en el navegador más popular. Chro me aparece con el motor V8
que in terpreta JavaScript a gran velocidad.
Aparece el primer bo rr ador de HTML 5.
Aparece el te st Acidj con el qu e se verifica el cum plimiento de los está n dares CSS 2. 1 ,
DOM y JavaScript está n dar (ECMAScript). Los primero s en pasarle al IOO % son los
navegadores webkit (Safari y Chrome) y Opera.
Aparece Spotify, un servicio para la reproducción de música en streaming que consi-
gue acue rdos con la mayoría de discográficas para te ne r un enorme catá logo.
Se crea Dropbox, servicio de sincronizació n de archivos en la nube
El modelo de comp utación en la nube (cloud computing) comien za a imperar.
• La empresa Nitobi (comprada por Adobe) desarrolla Ph oneGap basa do en el código
abierto Apache Cordova. Permite realizar aplicaciones para móviles utilizando los
lenguajes habituales par a hacer aplicaciones web: HTML, CSS y JavaScript.
• 2 0 °9
Satoshi Nakamoto crea la criptodivisa digital Bitcoin que pasa a ser cons iderada una
mon eda virtua l. Es capaz de cotizar en los mer cados y ser utili zada como moneda
indepen dien te para rea lizar transacciones financieras en Internet.
Se funda el sitio de crowdfundinq Kickstarter, qu e permite qu e pro yectos presenta-
dos po r usuarios cuenten con la finan ciación obtenida de otros usuarios.
Ryan Da h l crea Node. js, un software servidor de JavaScript basado en el motor V8
del navegador Google Chrome. Permite crear aplicaciones en JavaScript fuera del
navegador, dotan do a este len guaje de m uchas m ás capacidades. Permite incorpo-
rar numero sas exte nsiones qu e, entre otras much as cosas, permiten utilizar No de.js
como servido r web. Su éxito ha perm itido a JavaScript disfrutar de una edad de oro
en la actua lida d.
Aparece MongoDB, sistema gestor de bases de datos NoSQL de código abierto. En
poco tiempo se convierte en el siste ma NoSQ L de base de datos más popular. Las
bases de datos NoSQ L comienzan su in fluen cia, su peran do a las clásicas bases de
datos relacionales cuando los sitios web requieren una en orme can tidad de transac-
ciones por minuto.
Goog le lanza Angular.js, fra mework para crear aplicaciones web utilizan do un
patrón MVC. La combinación MongoDB (gestor de bases de dat os) junto a No de .js y
12 IM PLAN TACi Ó N DE APLICAC IONES W EB
Express. js como serv idor de aplicaciones junto a Ang ular.js se conoce como MEAN y
en los siguie ntes a ños se convertirá en un a de las tecn ología s dominantes para crear
aplicacione s web.
• 2 01 0
Explosión móvil. El crecimiento desorbitado del uso de sm art phones hac e que cada
vez más gente acceda a la web desde dispositi vos móviles.
Apple lanza el iPad, con él comienzan a proliferar las tablet as, com pitien do con los
orden adores portátiles tradicionales.
China tien e 460 millones de usuarios en Internet. Es el país con mayor número de
usuario s desban cando por primera vez a Estados Un ido s,
Myanmar se qu eda sin acce so a Internet debido a un ataque de denegación de servi -
cio (DoS).
Netflix empie za a dominar el mercado del vídeo en st reaming a través de Internet .
Act ualme n te tiene cerca de 40 millones de usuarios suscritos en todo el mundo.
• 2 0n
La W3C pr esenta la norma CSS 2. 1, que arregla fallos de CSS2. Es in suficiente por lo
aceptado qu e está ya el no oficial CSS3.
HTML 5 comienza a adoptarse por la mayoría de desarrolladores web y Flash empieza
a dejar de utilizarse (aunque sigu e sien do muy utili zado) , La W3C también acepta
HTMLS y acuerda con la WHATWG el futuro est ándar.
En China ya se navega más desde dispo sitivos móviles qu e desde ordenadores de
sobr em esa o portátiles.
Las revueltas de la pr im avera árabe hac en un uso in ten so de twi tter y facebook como
medio de com unicaci ón , expresión y convocación ciudadan a,
2 0 12
Los usuarios de Internet consiguen paralizar las leyes antipiratería en EEUU (cono -
cidas como SO PA y PIPA).
Micro soft lanza Windows 8 con la pretensión de que sea el sistema imperante en
ordenadores de escri t ori o, tabletas y móviles al permitir usar todos estos aparatos
con el mismo sistema.
11 2 0 13
• Yah oo! compra la red social Tumblr que es la qu e más estaba creciendo en ese
momento, siendo la red social con mayor número de blogs alojados.
• Mo zilla lanza el sistema operativo mó vil Fire foxOS orientado a aplicaciones en la
nube y al códi go abi erto.
Goo gle lan za las Google Glasses gafas permanen temente conectadas. Con este y
otros peque ños aparatos con ectados, se dice qu e comienza la Internet ofThings (el
UN IDAD 1. CO NCEPTOS SOBRE APLICAC IONES WEB 13
Internet de las cosas) la revo lución digital siguien te a la de los dispo sitivos móviles y
que permite que todo tip o de aparatos electró nicos se conec te n a In tern et.
Las te cnologías relacionadas con el Big Data, consist entes en el an álisis de enormes
volúmenes de información comie n zan a proliferar.
2 0 14
Facebook compra Whassap, el servicio de men sajería entre móviles más popular.
• Apple presenta el reloj Apple Watch con lo que entra ta mbién en la era de los weara-
bles (dispos itivos inteligentes que se ponen como un accesorio de moda).
• Ali baba la tienda on lin e má s fuerte de China bate el record de ven ta de acciones en
Wall Street ; las aplicaciones china s compite n con cada vez más fuer za.
La red empresarial de Sony es at acada y pen etrada. La empresa se ve obligada a retra-
sar el estreno de la película The Interview (La Entrevista) debid o al sup uesto chantaje
de hackers norcoreanos. Las cuestiones sobre la segur idad y la libertad en las redes
son sometidas a debate global. Queda pat ente qu e las tecnologías en caminadas a la
pro tección son críticas en el Intern et actua l.
La adaptabilidad (cono cida con el término Responsive Web) de las págin as web ha pasado a ser
una cues tió n cruc ial, ya que el dispositivo con el que los usu arios acce den a Intern et cada vez es
más variado.
Tecnológicamente en la creación de aplicaciones triunfan los patrones MVC y los len guajes
sen cillos (Ruby, Python, JavaScript.. .) En el lado del cliente, HTML 5 está eliminan do a Flash
como tecnología ma yoritaria para crear aplicaciones visua lmente atractivas y dinámicas.
Se espe ra un cambio todavía más espectacular debido a la aparición de peque ños dispositi -
vos conectados (gafas, relojes, pulseras, sensores...), lo que se conoce como el Interne t de las
Cosas, qu e pese a su tama ño, envían ingentes cantidades de información a Internet. Por ello, las
florecientes tecnologías encaminadas al análisis de enormes cantidades de datos (Big Data) aún
tendrán más importancia. La adaptabilidad de las aplicaciones llega al ext remo en los nuevos
dispositivos de acceso a la web cuya pantalla pue de ser incluso redonda.
La virtualización y la comp uta ción en la nube (cloud computing) hace que el hardware deje de
ser tan importante y que todo se delegue en servidores en Intern et que virtualizan servicios que ,
tradicionalm ente, se instalaban en el ordenador del usuario (alma cenaje de archivos, agendas,
contactos, ento rnos de trabajo, el propio código de las aplicaciones ,...) Las aplicaciones de todo
tipo se crean exclusivam ente para que el usuario acceda a servicios disponibles a través de la web .
14 IM PLANTACi ÓN D E APLICAC IO NES W EB
El usuario ha pasado a ser el centro absoluto de las aplicaciones, dejando de ser un eleme nto
pasivo para ser enormeme nte activo ; hasta el punto de ser el prin cipal creador de contenido,
Finalme nte , el cúmulo de posibilidades para los desarro lladores hace que la form a de crear
aplicaciones nunca haya sido tan variada, con tanta cantidad de plat aformas y herramientas para
producirlas. El ritmo de aparición de nu evas herramientas, lenguajes, marco s de trabajo y compo-
nentes para la depuración y el testado de aplicacion es, es, simpleme nte, abrumador.
Lejos de disminuir su influ en cia, las aplicación y servicios en Intern et sigue n aumentando
cada día. Pero sobre todo, siguen aumentando en calidad y pr estaciones.
Una aplicación web, simplemente, es una aplicación creada para ser ejecutada por un nave-
gador. El hardware que da oculto al programador, que solo ve la capa de trabajo qu e le cede el
navegador.
Hoy en día las aplicaciones web son las aplicaciones más populares porque todos los usua-
rios actua les posee n y man ejan navegadores (Google Chrome , Internet Explorer, Mo zilla Firefox. ,,)
para recorrer Internet y están muy acostumbrados a tr abajar con ellos.
Una aplicación web, en princip io, es m en os potente qu e una aplicación clásica (a las aplica-
ciones clásicas se las llama ahora aplicación de escritorio) al no poder optimizar su código para
la máquina en la qu e se está ejecutando. Las aplicaciones de escritorio pueden acceder a todo el
hardware de la comp utadora y, por ello, optimizar su rapi dez y prestaciones. Las aplicaciones web
depen den de la habilid ad del navega dor para man ejar el hardwar e de la máquina en la que reside,
Las aplicaciones we b se crean en HTML y sus tecnologías asociadas (CSS, )avaScript...). Aunqu e
los navegad ores no tienen capacidad para compilar código de lenguajes clásicos (C, C++, Pascal...)
sí contienen intérpretes muy potentes para lenguajes incrustados en las aplicaciones web (espe-
cialmente )avaScript), como es el caso del motor V8 del navegador Chrome.
UNI DA D 1. CO NCEPTO S SOBRE APLICAC IONES W EB 15
Gra n com pa t ibilidad. Funcionan en todo tipo de sistemas, tanto de escritorio como sis-
tema s mó viles. Lo úni co que requi eren es la presen cia de un navegador, requi sito fácil de
cumplir ya qu e los navegadores se incluyen en cua lquie r dispositivo, sea del tipo qu e sea.
En las aplicaciones de escritorio existe el problem a de que, por ejemplo, un a aplicación
creada para Windows, no rm almente no funci on ar á en un entorno Linux. Aunque hay
solucion es de virtualización de aplicaciones para solucionar este problema, lo cierto es
que siem pre es más fácil ut ilizar aplicaciones web.
• Fáciles de manejar por los usuarios. El entorno de trabajo (es decir, el navegador) es
conocido po r los usua rios, por lo que les es más fácil mane jar una aplicación web, ya qu e
cualquier usuario actua l está acostumbrad o a recorrer página s web con su navegador.
Las aplicaciones web tambi én se actualizan , pero solo en el servidor en el que se alojan.
En cuanto se actualiza allí, todos los usuario s verán la última versión la próxima vez que
accedan a ella, sin ten er que insta lar nada en su máquina.
Por otro lado , tendremos la segur idad de saber qu é versión de la aplicación poseen los
usuarios. En las aplicaciones de escritorio de pen de m os de si el usuario instala o no la
última versión .
En las aplicacio nes clásicas, si hay fallos, por ejemplo, de segur idad que se detectan en
un a versión , el correspondiente parche a aplicar depende de que los usuarios lo in sta-
len ; fácilm ente habría versiones inseguras de la aplicación, ya qu e no todo s los usuario s
habr ían in stalad o ese parche. En una aplicació n web, el parche se in stalaría e ins ta ntá-
neam ente todo s los usuarios accederían a la versión segur a de la aplicación .
• Datos centralizados. Los dato s que maneja una aplicación web se enc uentran en un
único almacén o base de datos. Lo que facilita su m antenimiento y admi nistración. El
usuario además se despr eocupa de estas tareas.
16 IM PLAN TACiÓN D E A PLICACION ES W EB
No ha y in stalación. El proc eso de instalar algunas aplicaciones de escrito rio es, a veces,
largo, tedio so y difícil. Además de postergar la experiencia de usuario, en el senti do
de que sin instalación , no pod remo s disfrutar de la aplicación. Una aplicación web no
requi ere instalación , es simpleme nte un servicio accesible desde Intern et a través del
navegad or.
• Accesibles desd e diferentes máquinas y ubic aciones. De cara al usuario es la gra n ven-
taja. Las aplicacio ne s de escritorio cuentan con un a gran tara, el hecho de que si cambio
de máquina tengo que insta lar en ella la aplicación de escritorio, lo que implica ad emás
tener perm isos de usuario para realizar esta labor, además de qu e las licen cias de uso
suelen estar restringidas a un nú mero concreto de máquinas. Cada vez es más habitual
que los usuario s utilicen máquina s diversas para trabajar: la del puesto de trabajo, el
portátil per sonal, su ta bleta , smartpho ne...
Las aplicaciones web son accesibles desde cua lquier compu tadora y desde cualquier
parte del mundo. La idea es muy diferen te: si es una aplicación de pago, se paga por el
uso (pagará cada usuario ) y no por el número de máquin as desde las que se accede a ellas.
• Se permite el uso de Th in Clients. Los Thin Clients son los llam ado s clientes ligeros,
software y hardware de baja poten cia. Las aplicaciones web son capaces de fun cion ar
incluso en ord enadores ya obsoleto s, porque solo requieren un navegador (ejemplo claro
de Thin Client) yeso permite seguir aprov echando hardware que , de otro modo, no val-
dría para el tr abajo.
Por ejemp lo, este manual está crea do con la aplicación Adobe InDesign, que es un sof-
tware de maquet ación de documentos. De este software se requi ere qu e manipule, colo-
que y edite con rapidez, texto s, imágenes, formas... Para ello exprime la po ten cia del
ordenad or en el qu e se instala: es más, una aplicación de este tipo no se pu ede instalar
en cualqui er ordena dor, tiene requisitos m uy altos.
Lo mismo ocur re con un juego de última generación , qu e requ erirá renderizar escena-
rios y música de gran calidad a tiempo rea l; est o no está al alcance (al meno s por ahora)
de los navegad or es.
Sin ir tan lejos, es fácil perci bir que es más grata la experiencia de escribir un documen to
en un proc esador de texto s instalado en el ord ena dor (como Microsoft Word , por ejern -
U N IDA D 1. CO NCEPTOS SOBRE APLICACIO NES W EB 17
plo) que hacer la misma tarea en un procesador de textos online (como Office 365 por
ejemp lo).
Aprovechan peor el hardware. Tiene clara relación con la desventaja anterior. El hecho
de tener un mejor o peor ord enador no influ ye apenas en el rendimiento de un a aplica-
ción web ; evidenteme nte, esto es una ventaja para los usuarios de ordenadores menos
potentes, pero significa que no se está aprovechando debidame nte el rendimiento que
pueden pro porcion ar los orde na dores más veloces y se infrau tiliza la inversión que el
usuario hizo en la compra de su máquina.
• Las ap licaciones web son más difíciles de crear. No es difícil crear un a simple página
web con HTML y CSS; pero un a aplicación de escritorio en gene ral es más fácil de crear
que un a aplicación web, por el hecho de qu e en un a aplicación web hay mu chos más
elementos din ámicos. La depuración es compleja en el caso de las aplicaciones web ya
que debemos esperar respu estas a peticion es del servidor, las cua les se consig uen tras
realizar nu merosos pro cesos en diversos lengua jes.
Se agrava esta circunstancia por el hecho de que crece las exigencias de los usuarios
hacia las aplicacio nes web, lo qu e fuerza al desarrollador de la aplicación a in cor porar
cada vez más eleme ntos dificultando el mantenimiento.
No obstante también aparecen contin uame nte nu evas herramientas que facilitan este
tra bajo, disponi endo actualm en te de un a miríad a de herr ami en tas para producir, man-
tener, codificar, tes tar, simular, etc.
• Delegación del cont rol de nuestra información, Probablem en te sea la cues tión más
ignorada por los usuarios de las aplicaciones web, y sin embargo, la qu e tien e imp li-
caciones más importantes. Cua ndo un a person a ma neja una aplicació n de escr itorio
para escribir un do cumen to, este (por lo gene ral) se almace na en nu estra máquina y la
cuestión sobre dónde lo almace namos, hac er copias de segur idad del mismo , qui én tiene
acceso... recaen sobre n osotro s mismo s, es nuestra responsabilidad.
En una aplicación web, normalmente, los dato s se almacenan en Internet y los gest iona
la empresa cread ora de la aplicación. Eso supone qu e no n ecesitam os preocuparnos por
las cuestiones anteriores sobre nuestros datos; pero , a la vez, significa qu e dependemos
de las bu enas prácticas que la empresa propietaria de la aplicación realice sobre nuestros
datos.
El hecho de qu e, ade más, estos esté n centralizados, hace qu e una persona qu e obte nga
acceso a los mism os de form a indebid a, ten ga la posibilidad de man ejar información
18 IMPLANTACIÓN DE APLICACION ES WEB
Realmente no solo las aplica ciones web pro vocan delegar el uso de nu estra información
a terceros, es muy habitual usar aplic aciones de escritorio y que los datos se almacenen
en lo qu e llam am os la nub e, qu e n o es más que un servicio en Internet que centraliza
el almace namiento de los dat os y por lo ta nto, ado lecerá de esta s mismas ventajas e
inconvenien tes.
Poco a poco , se pretendió integrar contenidos más variados: animaciones, vídeo, sonido, jue-
gos, aplicaciones ofimáticas... Este tipo de páginas empezaron a proliferar tr as el estallido de la
burbuja punto com (ocurrida en el afio 2 0 0 r debido a que muchos de los servicios en Int ern et
eran especulativos) y es en el a ño 2004 cuando }effB ezos, de la empresa O'Reilly Media, utiliza el
te rmi no Web 2 . 0 en una conferencia (incluso llega a registrarlo) y lo hace popular. Hoy en día la
mayor ía de las aplicacio nes web perten ecen a esta web 2 .0, o bien a la nueva web 3 .0.
1.3.1 LA W EB 2.0
Pod emo s decir que hay tres pilares qu e confo rma n las páginas web 2.0: Aplicaciones Ricas de
Internet, SOA y Web social. Se desglosan a continuación estos conce ptos .
Las aplicaciones web iniciales no permitían ape nas interacción usuario/máquina. No era posi-
ble siquiera en pensar en crear servicios como los actuales Goo gle Maps, Facebook u Office 365,
por nombrar algunos .
Sin embargo, los navegadores han mejorado sus prestaciones hasta el punto (como se ha
comentado anteriormente) de ser un verdadero software comp ilador de aplicaciones, capaces de
traducir lenguajes (como }avaScript) que permiten la interactividad, así como incorporar medios
mucho más atractivos. Esto ha permiti do que las ap licaciones web compitan con las ap licacion es
de escr itorio en experiencia de usuario.
Así hay aplicacion es web con unas capacidades sor pre ndentes, como es el caso de Goog le
Docs qu e desde hace a ños es un competidor del paqu ete üffice de Microsoft (la propia em presa
Micros oft con sciente del éxito de estas aplicaciones on fine, pose e su propio software de Of1-
U N IDAD 1. CO NCEPTO S SO BRE APLI CACION ES W EB 19
mática en línea, Office 365) y otras herrami entas empiezan a sustituir a mu chas aplicaciones de
escritorio, así como a aplicacio ne s que permiten el uso de servicios espectaculares qu e jamás han
existido en la informáti ca de escrit orio como Goog le Maps.
Fr E
.... .- ,- -- --
+-=- -+=-
] 0o -- • :, __ ... _ _
Figura 1 .1 : Ejemp lo de creac ión de un nuevo document o de trabajo con la Aplicació n Web de Micros oft, Office
365. Casi es indistinguible respecto de la aplicación Offi ce de escritorio.
Por ello realmente la creación de aplicaciones web está dejando atrás la creació n de aplicacio -
nes de escritorio, ya que los usuarios cada vez perciben men os ven tajas en instalar un a aplicación
en su ord enado r (aunque no hay qu e olvidar sus inconvenientes).
Se rvicio
1Mapa 1
par a de la
tuitear t ienda Servicio de
Consul t a de
Art ículos
/
!
Se rvicio de
Co mpra ~
Seg ura Pa y Pa J
SOA es una arquitectura donde cualquier com ponente software se dise ña para ser utilizado
como un servicio en la red. Un servicio en la red es un simple componente que recibe peticio-
ne s y entrega los resu ltados correspondientes a la misma. Es la forma habitual de traba jar en un
entorno en red , pero ahora ligado a resolver una funcionalidad de alto nivel. El lenguaje o tecno-
logía concreta en el que se haya programado el servicio , es irrelevante. Un servicio se puede usar
de la misma man era in dep endientem ente de como fue crea do.
Así, una aplicación web se puede modelar como si fuera un conjunto de piezas que se comuni-
can en tre sí. Esa orientació n al servicio ha supuesto una au té ntica revo lución en lntern et, ya que
si creamos un servicio , po r ejem plo, que nos perm ita conocer las opinion es de los usuarios sobre
los ar tículos de una tien da, este servicio pu ede ser reutilizado , tan to por el de venta de artícu los
de la propi a tienda, como por otro, incluso , fabricado por otra empresa que muestre información
al cons umidor sobre artíc ulos en general, de nuestra tienda u otras.
Un caso muy evidente son las nume rosas páginas en Internet de em pre sas y entidades que
muestran en un recuadro la dirección de la empre sa ut ilizando los servicios de Google Maps.
Esto ha dado lugar a un nuevo mo delo de programación que produce el llamado Softw are
as a Service (software como servicio o SaaS) y que varía absoluta me nte la form a clásica de crear
aplicaciones . La idea final es que las aplicaciones no está n pen sadas para ser instaladas en el orde -
nador del cliente (como ocurría y ocurre en la program ación tradicional de aplicaciones) , sino
que se coloca en un servidor en Internet al que acceden los clientes. De este modo , la aplicación
se convierte en un servicio qu e está disponible desde cualquier punto del plan eta y que pue de ser
invocado por otras aplicaciones.
1.3.1.3 WE B SOCIA L
Es la part e más evidente y ente ndible de la web 2.0. El términ o se refiere a que el usuario pasa a
ser el centro de las aplicaciones web 2.0. El usuario conec ta con otros usuario s a través de la apli-
cación, participa de los conte ni dos creándoles, como ocurre en Twitter, Facebook o lnstagram,
u opinando sobre ellos, com o ocurre ho y en día en las not icias de cua lquier periódico en Intern et.
El usua rio ha dejado de ser pasivo para ser enorme me nte activ o, los contenidos ya no pertene..
cen solo a la entidad propietario del sitio web, sino a los propios usuarios.
Esto, unido al hecho de que los usu arios son los autores de la mayoría de los contenidos dispo-
nibles en la web (en la web LO , unas pocas per sonas creaban contenidos y la mayoría eran simples
visualizadoras de ese conte nido) y a la brutal compete ncia por el número ingente de páginas web
en Intern et, ha provocado el crecimiento los llamados pilares de la web 3.0 :
Web semántica. Se trata de que los contenidos en la web dispongan de etique tado o
meta datos que permitan darles significado . Cuanto mejor es ese significado, m ejor
podremos analizar esos datos. El lenguaje XML y especialm ente los sublenguajes RDF
y OWL son los má s empleados para dar este sentido sem ántico a los datos de las apli-
cacio nes web. Para muchos analistas web 3.0 y web semá ntica son términos sinónimos.
APLICACION WEB
A la hora de crear aplicaciones web se pu eden utili zar diversos len guajes y te cnologías . Hay
dos estrategias:
• Lenguajes y tecnologías en el lado del cliente. Se trata de los elementos que se in corpo-
ran junto al código HTML de una aplicació n web y que necesitan ser interpre ta dos en
el navegad or del usuario.
• CSS. El len guaje de las hojas de esti los. Perm it e mod ificar la apariencia de una página web.
Está en continua mejora, ayud ando a conseg uir res ultados cada vez más espectaculares .
• JavaScript. Lenguaje de programació n senc illo pero poten te, cuyo código se pued e
incluir dir ectam ente den tr o de un a página web. Su éxito está haciendo que sea un
len guaje im presci ndible para los desarrollado res. Aporta interactividad a las páginas y
un número en constante creci miento de ut ilidad es. Además , para este lenguaje se han
crea do en los últimos afias un a can tidad innume rable de herramientas y marcos de tr a-
bajo, como jQuery (sin dud a el más exitos o), MooTools, Modernizr o Knockout.
....
1) El usuario introduce la
dirección a un recurso web
'l-....A
)
4) Tras t raducir to dos los conte nidos
se muest ra el resulta do al usua rio
USUAR IO ~(---------------
NAVEGA DO R
2) El navegador hace una (t iene que tener instalados
petición http a un los plugins necesarios )
servidor web
solicita ndo un
recu rso
SERVIDO R
W EB
PÁGIN A W EB
(cont iene elem entos a
inte rpreta r por el navegad or)
Figura 1.3: Funcio namiento de las aplicaciones web en el lado del cliente
Flas h. Componente que se suele in crustar m ediante una et iqu et a I:-lTML de tipo object:
qu e hace re fere ncia a un archi vo de tipo SWF que es el que contiene el código Flash. El
navegador requiere un plugin para poder mo strar el contenido del archivo SWF. Los
compone ntes de tipo Flash se crean con el pro grama homónimo de la empresa Adobe .
U N IDA D 1. CO NCEPTOS SOBRE A PLICAC IO NES W EB 23
Applets de Java. Se trata de un componente que se incru sta median te una etiqueta
HTML de nombre, precisame nte, applet y que hace referencia a un archivo que con-
tiene código Java. Requiere de un plu gins llamado m áquina virtual de Java (JVM) en el
navegador.
En gen eral, las aplicaciones que utili zan tecnologías del lado del cliente requiere n qu e el nave-
gador del usuario tenga instalado s los plugins que le permitan interpretar dichas te cnologías
y que aporte la potencia necesaria para ejecutar esos compone ntes de forma eficiente. Así, un
navegado r se convierte en un a especie de máquina virtual capaz de procesar aplicacio nes creadas
en todo tipo de lenguajes y tecno logías.
Todo el esfuerzo, usando esta técnica, lo realiza el navegador. De modo qu e se hab la de tec-
nología we b de cliente pesado para referirse a una aplicación web que hace un uso intensivo de
com ponentes del lado del cliente.
Esta form a de tr abajo parecía que se iba qu edando obsoleta, por la dificultad de tener un nave-
gador con todos los com pon ente s req ueridos por las distintas aplicac iones. Adem ás se obliga al
usuario , en muchas ocasiones , a descargar los compone ntes y plugins que faltan para pod er uti-
lizar adecuadamente un a aplicación web.
Esas descargas ,en mu chos casos, son muy pesadas . Por ejem plo, el plu gin para poder ver
applets en lenguaje Java ocupa en torno a 12 ME. Además, los usuarios no entienden el por qué de
estas descargas que resultan ser muy incómodas para ellos. Tanto que , en muc has ocasione s, las
acababan can celando y abandonando la aplicació n que las requiere .
En la actualidad (gracias al triunfo de HTMLS) est án en desuso las tecn ologías avanzadas del
lado del cliente (como Flash), pero sí triunfan las que pertenece n al nu evo estándar HTMLS. En
especial JavaScript que se usa inten sivam en te y que , cada vez, es más potente . Lo que ha obli-
gado a los navegadores a ser un auténtico software de proceso de aplicacio nes avan zadas en ese
lenguaje. Para el usuario es un proce so tran sparente, ya qu e funcio nan simplem ente con tener
el navegad or al día. Ten er la última versión al día del navegador es, ciertam ente, más ente ndible
para el usuario que descargar un plugin.
Hoy en día todos los desarrolladores dan por hech o qu e los usuarios tie ne n nav egadores con
capacidad de traducir CSS y JavaScript , pero sin embargo no dan por hecho que te ngan instalado
ning ún otro plugin para las otras tecnologías del lado del cliente.
Cua ndo un usuario o usuaria hace una peti ción a un recur so web, el servidor qu e contiene
dicho recurso se da cuenta de que contiene eleme ntos a interpret ar en el lado del servidor y pid e
al ser vidor de aplicaciones adecuado qu e traduzca esos elementos antes de enviar el resultado al
navegad or.
El servidor de aplicaciones, que suele ser realmente un módulo software, enviará el resultado
al servidor web en un formato traducible en el lado del cliente; es decir, un documento HTML. El
servidor web finalmente enviará al usuar io este resultado.
La ventaja de este modo de trabajo es que el navegado r puede ser más ligero (se la llama tecno -
logía de clie nte ligero) y la part e dura o pesada se la lleva el servidor we b.
D~L>
N AV EGADOR
U SUARI A 6) El navegado r interpre ta
el código y se lo
muestra a la usuaria SERVIDO R WEB
SERVID O R DE
A PLICAC IO N ES
PHP
Figura 1.4: Funcionamie nto de las aplicaciones crea das para ser int erpretadas en el lado del servidor
Ho y en día ambos métodos se me zclan , de modo qu e los desarrolladores web crean aplica-
ciones qu e contienen eleme ntos en el lado del servidor (back -end) y en el de l cliente ifront-end).
Por ejemp lo, se pueden crear páginas PHP que in cluyen código ]avaScript; lo que imp lica proceso
en el lado del servidor (traducir el PHP) Yen el del cliente (tra ducir ]avaScript), La idea es crear
aplicaciones web más ricas, funcio nales e interactivas.
UNIDAD 1. CONCEPTOS SOBRE APLICAC IONES W EB 25
Normalmente es el navegad or el que pide al servidor web el recurso que desea el usuario, así
como de recibir el mismo , o bien una notificación de erro r si dicho recurso no existe. La mayoría
de peticiones http resultan en la entrega de un documento HT ML.
Los servidores de aplicaciones trabajan en conjunto con los servidores web para qu e el proceso
se haga de forma tr an sparente al usuario; es decir, el usuario pide el servicio a tr avés, normal-
mente, de su navegador y el servidor web atiende la petición, y pide al servidor de aplicaciones
la tra ducción de la aplicación contenida, a fin de mo strar al usuario el resultado de forma ente n-
dible por su navegador (es decir, en formato HTML). El pro ceso está detallado en la Figura I+
NAVEGADO R
1 Petición http
t
I
Se recibe el result a do y se tr adu ce a
fo rma to ente nd ible por e l usu ar io
CA PA D E
PRESENTAC iÓN
SERVIDOR
WEB
tJo o
HTML
i
CSS JAVASCRIPT
CA PA
LÓG ICA
CONTROLADORES
1 Petición de
se rVIC IO
se envía n a l se rvidor de ap licac iones
CA PA D E
NEGOC IO
BASES D E DATOS
SERVIDOR DE
BAS E DE DATOS
Figura 1.5: Esquema general de funcio namiento de una aplicación web moderna siguiendo un patrón de
arquitectura en tres niveles
Habitualmente la pro gramación en esta capa divide el código en tres partes : el modelo,
el controlador y la vista, utilizando el exitoso modelo MVC, del qu e hablaremos más
UNIDAD 1. CO NC EPTO S SO BRE APLICAC IONES WEB 27
adelante. Cada parte se encarga de una acción concreta de la aplicación y así se facilita
el mantenimiento de la mism a.
Capa de negocio. Es la que contiene la info rm ación empresarial. Esta información siem-
pre tiene como req uerimiento que qu ede oculta a cua lquier persona sin auto rización. En
esta capa, fundamentalme nte, se encuentra el sistema gestor de bases de dato s (SGBD)
de la empresa, además de otros servidores que proporcion an otros recursos empresa ria-
les (como serv idores de vídeo, audio, certificados ...)
El servidor de aplicaciones hace peticiones a estos servidores para obtener los recursos
de la em presa que se requieren para cumplir la petición http original. De modo que el
proceso de acceso a estos recur sos queda oculto tot alm ente al navegad or, lo qu e a ñade
una mayo r seguridad al proceso. Los servidores de esta capa entregarán los recursos soli-
cita dos, y el servidor de aplicaciones será el enca rgado de situarle de form a adecuada en
el resultado qu e viajará hasta el navegador del usuario.
Todo este mecanismo de tr abajo es el que involucra la creación de aplicaciones web. En genera l,
los servidores web act ua les actúan de servidores de aplicaciones, una vez que se les instala el sof-
tware pertinente. Por ello cua ndo se habla de servidores web, en realidad tambié n hablam os de
servidores de aplicacio nes web.
También forman parte del front-end las per sonas encargadas del HTML y CSS de la
página , así como del JavaScript. Es decir del funcio namiento de la capa de presentación.
Lo que el front-end intenta con seguir es una buena experiencia de usuario.
Los objetivos del back-end son : un acceso rápido a los dat os, un a comunicación eficiente
con el navegador, control de la segur idad, estructurar el código para un fácilmanteni -
miento, gest ión de err ores, etc. Es una zona má s técnica, pero no más importante, es
fundame nta l qu e el fro nt-e nd y el back-end se compleme nte n .
28 IM PLANTACi Ó N DE APLICAC IONES W EB
La apari ción de Node. js (servidor javaScript muy utilizado como servidor de aplicaciones web)
junto con la aparición de cier tas bases de dato s NoSQL6 (como MongoDB) está prop iciando un
nu evo paradigma en el qu e el mismo len guaje, concretamen te JavaScri pt, se utiliza en todas las
capas. A eso se le conoce como pro gram ación Full Stack, ya qu e un solo lenguaje sirve para toda
la pila de trabajo.
FRüNT-END BACK-E ND
NAVEGADOR
SERVIDOR SERVIDOR SERVIDOR DE
DE APLI CACIO NES DE APLI CACIONES BASE DE DATOS
FULL
STACK HTML,CSS,JavaScript JavaScript JavaScript
Figura 1.6: Ubicación conce ptual del front-e nd y el back-end, En la parte inferior fun cionamiento de un
model o Full Stack típ ico, por encima ejemp los de pilas de lenguajes en un modelo que no es Full Stack
El modelo FullStack está resu ltando exito so, porque la especialización de tareas puede aumen-
tar la desmotivación de l programador al verse relegado siem pre a la misma tarea. El modelo de
pila completa permite a los desarrolladores una facilidad de cambio en la capa de desarrollo, ya
que el lenguaje es el mismo y por lo tanto, un expert o en ese lenguaje podrá cambiar de área o
nivel sin demasiados problemas.
Los detractores de est e modelo argumentan que los lenguajes especializados, como SQL, está n
más adaptados a la tarea que realizan y, por lo tanto, la realizan mejor.
6 Las bases de datos NoSQ L, se diferencian de las clásicas bases de dato s relacion ales en que no utili zan
SQ L como len guaje de trab ajo. De hecho, tamp oco contemplan el u so de tabla s y relacion es como mod elo
lógico de dato s.
UN IDAD 1. CO NCEPTOS SOB RE AP LICAC IO NES W EB 29
A este respecto, el modelo MVC de crea ción de aplicaciones (ysus diversas variantes) ha tenido
un a espectacular aceptació n en este campo. Puesto que la capa de trabajo de la aplicación web es
la capa lógica, que es donde reside la gene ración del código final, es en esta capa donde se aplica
el paradi gma MVC.
Lo que hace esta téc nica es separar la program ación de la capa lógica en otras tr es capas : el
modelo, la vista y el controlador.
Modelo. Contiene el cód igo que se encarga de asociar la información que procede la
capa de negocio a su form ato ente ndible por el lenguaje y te cn ología utilizado para pro-
grama r la aplicación web.
• Vista. Gen era la presentación de cara al usuario. Es la enca rgada de definir la interfaz de
usua rio.
• Controlador. Capa enc argada de manejar las peticiones del usuario y de comunicar las
capas anteriores para qu e obtengan lo necesario de dich a petición. Básicam ente lo que
hace es determinar la petición, requ erir al modelo los datos n ecesarios y enviarles a la
vista para qu e gene re el resultado final que llega al usuario . La petición de usuari o se
lanza por una acción qu e realiza el usuario (un clic de rat ón , desplazarse por la página...)
'"
Petición
DATOS
CO NTRO LAD O R
MODELO VISTA
El esquema de funcionamiento más hab itual, ya qu e hay varias concreciones sobre este
modelo. El más habitual es el qu e se muestra en la Figura 1.7. En ella se observa cómo el cliente, a
través del navegador en el caso de una aplicación web, genera una petición, y ésta llega a la capa
Controlador que se en carga de contacta r con el Modelo, a fin de acceder y modificar, si la petición
30 IM PLANTACiÓ N DE APLICACIONES W EB
lo re quiere, los datos. El Controlador recibe los dat os y con ellos pide a la capa Vista que modifi-
qu e la pre sentación que ve el usuario .
La ventaja de este modelo de tra bajo está en qu e te ne mos una división que facilita la abstrac-
ción para poderse conce ntra r en tar eas más conc retas, además de facilitar el trabajo en equipo y
el m antenimien to.
1.6.1 CG I
El llamado Inter faz de Pasarela Común (Com m on Interfa ce Gateway ) fue la primera tecnolo-
gía qu e permitía crear aplicacion es en el lad o del servidor.
La idea es crear una aplicación en un servidor (en principio utilizando cualquier lenguaje de
programación) en base a un for mato especial qu e permita comunicar dicha apli cación con el
servidor web. La com un icación entre aplicación y servidor se realiza mediante la interfaz CGl.
Cuando a un servido r web le llega una petici ón http que contiene implícita una llamada a un a
interfa z CGl, el servidor web pide a la aplicación corres pondiente que resuelva dicha petición,
qu e desde su origen con tendrá los parámetros necesario s para su correcta finalización, y le envíe
el resultado, qu e será una respuesta compatible para ser enviada directamente por el servidor
web .
[1] El cliente realiza una petición que provocará una solicitud CGl. Lo más habitual es el envío
de datos de un for mulario par a su proceso ; eso suele provocar una petición http de tipo
GET o POST a [a que se le envían como parám etros del mensaje (en el caso de POST) o
como cadena de consulta (caso de GET) los datos del formulario.
[2] El servidor we b recibe la petición y det ecta la necesidad de lan zar un a aplicación CGl a la
que se pasa como parámetros [os datos recibidos por GET o POST.
[3 ] A travé s de CGl el servidor de aplicaciones accede a los parám et ros necesarios y se ejecuta
la aplicación con esos datos.
Hay lenguajes qu e tien en una especial facilidad para crear aplicaciones web, casi siempre ayu-
dado s de fram eworks (marcos/plantillas) de tr abajo. Comparado s con los len guaje s de script (que
se comentan en el apartado siguiente) son más po te ntes, pero también más difíciles de aprender.
Perl. Es el lenguaje clásico para crear ap licaciones de tipo CGl. Es muy poderoso para
ma ne jar fiche ros y expresiones regulares, de ahí su éxito .
• Pyt h on. Es un lenguaje fácil y potente qu e además dispone de nume rosas facilidades
par a crea r aplicaciones de red y aplicaciones gráficas. Es el lenguaje qu e más crece actual-
m ente para crear aplicaciones en el lado del servidor.
111 Ruby . Es también un lenguaje fácil de aprender y que tiene bastante potencia. Es similar
a Python. Se hizo muy popular gracias al marco de trabajo Ruby on Rails que facilita la
creación completa de un a aplica ción web usando un patrón MVC.
• Java. Desde su nacimi ento se convirtió en el lenguaj e más popular para crear aplicacio-
nes re laciona das con la red. Es mu y pot en te y versátil, pero más difícil qu e los ante riores
de aprende r. Sus posibilidades para pro gramar en el lado del servidor son mu y exte ns as.
Durante mu cho tiempo ha sido el rey indiscutible de los lenguajes para pro gramar apli-
cacio nes web; ahora tiene mucha más competencia.
• C#. Ideado por Microsoft par a desbancar el éxito de java, es muy popular par a pro gra-
mar aplicaciones utili zando servidores .NET (se com entan má s adelante).
• JavaSeript. El lenguaje clásico del lado del cliente está tomando mucha fuerza para pro-
gramar en el lado del servidor, gracias a la aparición del servidor de javaScript node.js, y
a los numeros ísimos marcos de trabajo especializados como Angular.js o backbone.js.
Además la págin a en sí tendrá un a exte nsió n especial, gracias a la cual el servi dor web det ecta
que el archivo es de un tipo que requi ere la interven ción de un servidor de aplicaciones . Por ejem-
plo .php parta el len guaje PHP o .jsp para el len guaje JSP.
32 IMPLANTACiÓN DE APLICAC IONES WEB
PHP (Personal Hom e Pages). Es el más utilizado y de hecho es la tecnología del lado del
servidor (en gene ral) más utili zada. El código PHP se basa en el len guaje C y en Per!. Es
un lenguaje fácil de aprender, pero poco valora do por los pro gram adores más formales
por su falta de rigidez en las normas de escritur a y poca potencia para hacer aplicacione s
mu y com plejas.
11 ASP (Active Server Pages). Tecn ología de Microsoft similar a la anterior. Está pensa da
para utilizar en servidores web de Microsoft (concretamente en servidores lIS, Internet
Information Server) . Actualmente se conoce como ASP.net, ya qu e se utiliza en la pla-
taforma .NET de Microsoft.
• JSP (Java Server Pages). Lenguaje de script del lado del servidor basado en java. Es la
forma de script utili zada cuando una aplicación web se ha pro gramado en java.
• ColdFusion. Otro lenguaje de scripts, esta vez propiedad de Adobe. Es el más sencillo de
todos, pero requ iere servidores especiales (servidores ColdFusion, que son caros). Está
en claro desu so.
• Una estructura de directorios rígida en la que guardar cada tipo de archivo (prog ramas ,
páginas de serv idor, páginas HTML, archivos de configurac ión...)
• Componentes reutilizables por los elementos anteriores (como los Enterprise Java Bean ,
por ejemplo, de java).
• Librerías diversas (de acceso a bases de datos, de uso de módulos espec iales para los
programas...)
!I J2EE (Java 2 Enterprise Editioni . Nombre que se da a la plataforma de crea ción de apli-
caciones web empresariales de Java. Está formada funda me nta lmente por el propio
lenguaje Java, EJB (Enterprise Java Beans , componentes reutilizables empresariales), ser-
vlets y JSP además de otros compone ntes.
.NET. Plataforma de Microsoft que permite (entre otras mucha s posibilidades) crear apli-
caciones y servicios web, ha ciendo especial énfasis en el transporte de dato s mediante
XML.
Todo s los frameworks (al igual qu e las plataformas de desarrollo) imponen, o almena s reco-
miendan, una estructura concreta de tr abajo que separa los diferentes elem entos de la aplicación;
no solo el modelo, la vista y el controlador, sino los archivos de configuración, elementos estáti-
cos, desvío o enr uta miento de las peticiones http...
• Ruby on Rails . Se trata de un marco de trabaj o mu y exito so por la facilidad que tiene de
programar y sus bu enos resultados visuale s. Se puede ejecutar en casi cualquier servidor
web, basta con instalar el componente correspondiente. El len guaje en el que se basa es
Ruby.
• Apache Struts. El marco de tr abajo más famo so para la creación de aplicaciones J2EE.
Muy preparado para utilizar con servidores web Apache.
• Spring. Otro marco para tr abajar en Java J2EE que tiene bastante éxito. Tiene incluso
una versión para las aplicaciones .NET.
Django. Escrita en Pyt h on y pen sada para utilizar en ese len guaje, dice de sí mism a no
ser MVC, pero permite perfectame nte programar en ese paradigma.
• ZendoFram ework escrito para PHP. El más popular para este lenguaje .
• Angular.js. Marco de trabajo para JavaScript creado por Goog le que cada vez tiene más
adep tos. Es el más utilizado para la creació n de aplicaciones web SPA de página única
(SPA, Single Page Applications) qu e permiten que la página vaya mutando para ir car-
gando solo los elem entos de la misma que se requieren. Realmente su paradigma es un a
variante de MVC conocida como MWM (Modelo-Vista-Vista Modelo ). Es el marco que
más crece actualmente.
De esta forma el usuario puede conectarse desde cualquier parte del planeta y recibir servicio
de una forma eficiente, haciendo que no necesite in stalar aplicaciones en su ordenador. Lo que
subyace en este modelo, es la idea de que cualquier nece sidad informática se convierta en un
servicio al que se accede a través de la red.
Empre sas como Google, Facebook o Amazon fueron las primeras que tuvieron que atender a
gran velocidad a las peticiones de millones de usuarios; Amazon, concretamente, fue la primera
en permitir a los desarrolladores de aplicaciones alquilar su propia nube para qu e pudieran dispo -
ner de una infraestructura virtual en la nube y así desarrollar sus aplicaciones distribuidas.
En la práctica, esta idea permite que se utilic e Internet como la base de trabajo, sustituyendo
así al propio ordenador per sonal, el cual pu ede ser un equipo de menor potencia al delegar en la
nube el proceso de las tareas y el almacenamiento de la información.
UNIDA D 1. CO NC EPTOS SO BRE APLI CACION ES W EB 35
11 Co pias de seguri da d en lín ea. Al estilo del disco virtual, pero pen sad o para qu e las
empresas tenga n un res paldo en caso de pérdid a de inform aci ón. En este caso la seguri-
dad es crítica, así como dispon er de to das las versione s prev ias de copia. Los servicios de
copia de seguridad má s conocidos son Carbonite, Backblaze y CrashPlan.
Calen darios. Permiten disponibilidad permanen te de los datos de agenda personal. Los
calen darios de Google, Micros oft y Apple son los más popular es.
• Sistem as operat ivos we b. Permiten utili zan un ordena do r virtua l disponible a tr avés de
Internet utili zando un siste ma opera tivo virtua l. El más con ocido es EyeO S pero incluso
el sistema ChromeOS de Google se le considera siste ma en la nube, al instalar un sis-
tema ligero y utilizar aplicaciones web en lugar de aplicac iones de escritorio instaladas
en la propia máquina.
• Bibliotecas multimedi a. Como You t ube o Flickr que permiten una eno rme cantidad de
vídeos o fotos qu e los usuarios pued en consultar.
• Marcadores en línea. Como deLicio.u s o Digg, ha ciendo que , aunque estem os en otra
máquina distinta a la nuestra habitual, tengamos acceso a nuestros marcadores.
Existen detr actor es de este tipo de serv icios, puesto que al fina l la info rmación perso nal o
empresarial queda en ma nos de empresas pr ivadas. E incluso hay quien afirma (especialme nte
algunos movimie ntos a favor del software libr e) que supone un retroceso en los derechos de
los usuarios, ya que se asemeja el fun cionamiento de los siste mas de los a ños 70 en los que los
36 IM PLA NTACiÓ N DE APLICAC IONES W EB
tra bajadores utilizaban un te rmina l mu y ligero qu e se conec taba a un ord en ador central de cuya
poten cia y software dependían ; sin poder el usuari o mejorar esa poten cia por su cuenta .
SaaS , acrónim o de Software as a Service (Softwar e como Servicio) que hac e referencia
a las aplicaciones creadas, de form a qu e se accede a ellas como un servicio en la red.
Se trata en definitiva de una aplicación que no requi ere su in stalación en el equipo del
usuario, sino que accede a ella m ediante el protocolo http.
Por ejemplo, Google Calen dar es un ejemp lo de SaaS ya qu e es un software que permit e
almacena r nu estro s con tactos en la nube de Goo gle. Podemos acceder desde la página
web https:!!www.google.es!contacts. desde una aplicación de contactos de n ues t ro
móvi l (especialmente de Android) o incluso m ediante aplicaciones de correo de escrito -
rio, como por ejemplo Mozilla Th underbird.
El ejemplo más conoc ido de IaaS es Amazon Web Services (AWS) que nos permi te ins-
talar y gestionar servidores virtuales en la red de Amaz on (adem ás de ot ro tipo de servi-
cios). Otros ejemplos son Google Com pute Eng ine o Microsoft Azure.
A veces esta división se realiza para te ner en cuenta las necesi dades de una organización. Un
serv icio cloud com pu ting de tipo SaaS soluciona una neces idad mu y con creta. Un PaaS perm ite
solucionar problemas más complejos, porque la propi a organi zación pu ede crear sus propias apli-
caciones. Finalmente IaaS es un a solución aun más completa (y compleja) ya qu e pu ede ate nder
y personalizar to das las necesidades com putaci onales de una organización.
• Nubes públicas. Son nubes ofrecidas por empresas extern as. Ofrec en alguno de los
servicios comentados en el Apartado 1.7.5.1 "Modelos de Cloud Computinq", en la página
36 . Ofr ecen facilidad para implementarlos ya que toda la gestión es externa; el pro -
blema es que se delega, en tercero s, información qu e puede ser crítica; ade más de que
la personalización es muy limitada, al depender de las posibilidades que nos otorga los
propietarios de la nube.
El éxito de estas aplicaciones ha sido tal qu e ha hech o palid ecer a las aplicaciones web, de
tal forma que si el modelo, antes comentado , de funci onamiento de las aplicaciones web era la
instalación de un único software (el navegador) para acceder a todos los servicios, el mo delo de
38 IM PLANTACiÓN DE APLICACION ES W EB
las aplicacione s m óviles es el contrario: la ins talación de una aplicación (app en la term in ología
móvil).
Hay cierta similitud entre aplicaciones móviles y aplicaciones web. Es más, las aplicaciones
qu e un smartphone (o una tableta) puede ejecuta r, pueden ser de dos tipo s:
111 Web apps. Son aplicaciones web (se ejecutan en el navegador), pensadas para ser uti li-
zadas en un dispositivo móvil ; con sideran el tam a ño, resolución y ori entación habitual
de un móvil, así como la facilidad de estos dispositivos para cambiar la orientación (de
vertical y horizontal) para con struir la aplicación.
Hoy en día cualquier aplicación web debería con siderar tener al menos una versión de
tipo web app, porque empieza a ser m ás habitual navegar desde un dispo sitivo móvil que
desde un ord en ador.
Las web apps se crean fundamentalm ente en HT ML5, CSS y JavaScriptjjQuery; es decir,
las técni cas actuales habituales para crea r aplicaciones web.
11 Apps na tivas. No son aplicacione s web, son aplicaciones programadas en los lenguajes
nativos de los dispo sitivos móviles: Java, C#, CH, Objective C o Swift, dependiendo de
la plataforma. Si queremos que n uestra app nativa sea compatible con todas las platafor-
mas disponibles para los dispositivos móvil es, habrá que programarla en cada lenguaje
de cada plataforma; lo que es más costoso, ya que nos obliga a hacer varias versiones de
la misma aplicación.
Tienen como principal ventaja que el hardware de la máq uina está a nuestra disposición ,
ya qu e el lenguaje con el que se crean las apps nativas permite acceder al GPS, la luz LED
del móvil, la cámara,et c.
Las apps nativas triunfan más qu e las web app s, porque les resulta incl uso más fácil de
manejar a los usuarios; a cambio los desarrolladores se tienen que esfor zar más, al ser
más compleja su programación.
Las empresas que proporcionan servicios suelen uti lizar como modelo habitual, crear
una aplicación web para acceder a ese servicio y crear además aplicacione s móviles (apps
nativas) acceder desde un smartphone o tab leta .
También han aparecido frameworks de trabajo que permiten crear apps nativas compatibles
con todas las plataformas. Las aplicaciones se crea n al esti lo de las aplicaciones web mediante los
típicos lenguajes HTML , CSS y javaScript . Pero utilizan librerías (PhoneGapjCordoba es la más
popular) especiales que permiten acced er al hardware de un mó vil, incluidos el GPS, aceleróme-
tro , teléfono, cámara de foto s, barómetro, etc. El cód igo resultante se traduce mediante un intér-
prete y el resultado es una serie de app s, cada una de ellas orientada a una plataforma: Android,
iOS, Windows, etc.
UNI DAD 1. CO NCEPTOS SOBRE APLICAC IO NES W EB 39
• Las aplicaciones web ofrecen venta jas sobre las tradicionales apli caciones de escritorio
qu e han provoca do que cada vez se utilicen más y por lo ta nto, los navegado res sean la
herr am ienta de trabajo fun damental de los usuarios actuales.
• Las aplicacion es web tien en ta mbién ciertas desventajas sobre las aplicaciones de escri-
torio qu e hay qu e te ner en cue n ta.
• Las aplicaciones enriquecidas (RIA), la web social y la orientación a servicio son las bases
de la web 2 .0 y por lo ta n t o, la base de l éxito de la creació n de ap licaciones web. A esto
hay que sum ar la web semántica y la web inteligente, componentes de la llam ada web
3.0 .
• La creación de aplicac iones web actua les sigue un m ode lo de tres capas : pr esentación ,
lógica y n egoc io. Est o permite dividir la programación de aplic aciones en est os tres
aspectos, incluso utilizando lenguajes difer entes en cada capa, salvo en los llam ado s
modelos Full Stack en los que se utili za el mismo lenguaje en todas las capas.
• Cada vez hay m ás aplicaci ones y servicios en la nube cuyo m od elo (cloud computing )
se basa en que ta n to la aplicación com o la información qu e m aneja se en cuentra n en
Internet y no en el ordenador del usuario.
SaaS, PaaS e laaS son los tr es modelos de cloud co mputing disp onibles tanto para los
usuarios com o pa ra los desarrolladores de aplicaciones web, qu e se distingu en por el
tipo de serv icio que ofr ecen.
Un programador se plantea desarrollar ¿Cu ál de las sigu ien tes id eas refleja m ejo r
una aplicación web y como va a trabajar la sit uación de la web act ual?
en vari os dispositivos quiere un ent orno Ning ún usuario de la web crea
listo para codificar y probar la aplicación con te nido
que sea accesible a través de un servicio de
Pocos usuarios de la web crean conte -
red. El tipo de cloud computing a utilizar
nidos para ella
es:
El número de usuarios qu e crean con -
SaaS
teni do y el número de los que no crean
PaaS contenido es equiparable
IaaS Práct icam en te todos los usuario s de la
Ninguno de los an teriores web son creadores de conte nidos
PREPARACiÓN DEL
ENTORNO DE TRABAJO
OBJETIVOS
- Reconocer los elementos necesarios - Conectar t odo s los eleme ntos de una
para crear ap licaciones web instalación
- Ana lizar las fases de desarrollo de una - Instalar soluciones co mpactas de
aplicación implemen tación de ap licaciones web
para entornos de prueba y desarrollo
- Reconocer las o pcio nes de
implementación de apl icaciones web - Establecer par ámetros de configuración
en la instalació n
- Instala r se rvidor es de ap licaciones web
e n diferentes sistemas - Est a blecer la seguridad de la instalació n
- Inst ala r se rvidores de bases de dato s en
diferentes sistemas
CONTENIDOS
2.1 ELEME NTOS N ECESARIO S PARA 2.5.2 INSTA LACi Ó N DE PHP
CREAR APLICAC IONES WEB 2.5.3 CONF IGURAC iÓN D E PHP
2.5.4 MODIFICACiÓN DE PHP.INI
2.2 CREACiÓ N PROFESIONAL DE
APLI CACIONES WEB. MOD ELO DE 2.6 IN STALACiÓN Y CO N FIGURAC iÓ N DE
TRES ESTADO S MY SQL
2.6.1 INTR O DU CCi ÓN
2.3 INSTA LACiÓ N DEL SISTEMA 2.6.2 DOCUM ENTAC iÓN
OP ERATIVO 2.6 .3 INSTALACiÓN D E MYSQL
2.4 INSTALAC iÓN Y CONF IGURACiÓN 2.6.4 M YSQL y MARIA DB
DEL SERVIDOR WEB 2.6.5 CON FIGURAC iÓN D E MYSQ L
2.4.1 ELECCiÓN DEL SERVIDOR W EB 2.6.6 ESTA BLECIM IENT O DE LA
2.4.2 INSTA LAC iÓN DE A PACHE SEGUR IDA D EN MY SQL
2.4.3 IN ICIA R Y PARAR LA EJ ECUCi Ó N DEL 2.7 INSTALAC iÓN DE SOLUCIO NES
SERVIDOR W EB A PACHE APACHE,PHP y MYSQL INTEGRADAS
2.4.4 FUNCIONAMI ENTO D E LAS RUTAS 2.7.1 IN TRO DUCC iÓN
EN UN SERVIDO R W EB A PACHE 2.7.2 XAM PP
2.4.5 FUN C ION AM IENTO DE LA 2.7.3 INSTA LAC iÓN DE XA M PP EN
CO N FIGURAC iÓN DEL SERVIDOR WIN DO WS
APACHE 2.7.4 INSTALACiÓN DE XAMPP EN LINUX
2.4.6 PRINCIPAL ES DIRECTIVAS DE 2.7.5 MANEJO D E XAMPP
APACHE
2.4.7 TAREAS HA BIT UA LES D E
2.8 PRÁCT ICA S RESUELTAS
CO N FIGURAC iÓ N DE APACHE 2.9 PRÁCT ICA S PROPUE STAS
2.5 IN STALACiÓN Y CO N FIG URAC iÓ N DE 2.10 RESUM EN DE LA UNIDA D
PHP PARA APACH E 2.11 T EST D E REPASO
2.5.1 ¿QUÉ ES PHP?
44 IMPLANTACiÓN DE APLICACION ES W EB
Para el apr endizaje basta con equipar a nue stro equipo local. Los elem entos que nec esitare-
mo s configurar son:
• Servidor web . Encargado de recibir las peticiones http relacionadas con nuestra aplica-
ción . Más ade lante veremos las opcio ne s disponibles en el mercado . A la hora de selec-
cionar el elegido, hay que pensar en nuestras necesidades; si qu eremos que sea gratuito
o no, cuál es el Sistema Operativo (por ejemplo, el servidor web lIS solo funciona para
Windows), el número y tipo de peticiones que deb e atender, cuá l va a ser el lenguaje
elegido (casi todos los programadores en PHP instalan Apache por su facilidad de confi-
gurac ión) si deseam os soporte o no, etc.
• Instalar un servidor de aplicaciones web. Hoy en día bastará con a ñadir módulos al
servido r web. Por ejemp lo, para programar en PHP , basta activar e in stalar el módulo
PHP en el caso del servidor web Apache, o instalar extensione s FastCGI para PHP en el
caso de otros servidores.
Hay soluciones compactas de servidores web que son además de aplicaciones, como es
el caso de Apache Tom cat, servidor web con capac idad para imp lementar aplicaciones
Java Ente rprise.
El sistema gestor de base de datos habitual para program ar en PHP es MySQL; pero se
puede instalar el que deseem os (siempre que dispon gam os de la forma de comunicar con
él desde nuestra aplicación web).
• Instalar/configurar conectores de base de datos. Todos los comp one ntes deben estar
conec tados. En el caso de la base de datos puede im plicar instalar conectores en el ser-
vidor, de modo que nuestra lógica conecte con el negocio . Los conectores es lo que
per mitirá que podam os invocar al servi dor de bases de dato s desde el código de las apli-
caciones web.
Por ejemp lo, en las aplicaciones Java se necesita in stalar un conector JDBC y en las apli-
caciones de Microsoft conectores de tipo ODBC u OLE DB. En el caso de PH P n ecesi-
UNI DA D 2. PREPARACIÓN D EL ENTO RNO D E TRA BAJO 45
taremos instalar el módu lo PHP n ecesari o para conec tar con la base de datos y, a veces,
una librería exte rna.
Entorno de desarrollo. La creación de aplicaciones web imp lica escrib ir muchas líneas
de código . El código se crea en archivos de texto, con lo que cua lquier editor de texto
valdría para hacerlo . Pero hay software de edición de código qu e aporta mejoras al escri-
bir código como:
• Coloreado de sintaxis. Que permita diferenciar las palabra s clave del lenguaje.
Autocorrección. Que perm ita det ect ar los err ores de código a la vez que vamos
escribiendo.
• Depuración de código. Que facilit a la rea lización de pru ebas con el código.
Facilidades pa ra la navegación. Búsqu eda rápida de apartados en el código, ventanas
con acceso rápido a las diferentes secciones del código, lista de archivos en uso...
Cr eación de snippets. Son abreviat uras que facilitan la escritura de código habitual.
Tod as estas, y muchas más, ventajas hacen que estas herramientas sean in dispensables
para trabajar. En unidad es posteriores comentaremos las herram ientas más recomenda-
bles para tra bajar con PHP.
• Software de máquina virtual. No es obligatorio instalar una máqu ina virt ua l pero sí es
interesante, ya que si instalamos dire ctamente el software servidor en nuestra máquina
de trabajo, har á que su ejecución sea más lenta, además de que los fallos en in stalaciones
y pruebas pueden afectar al func ionamiento. Una máquina virtual permite hac er prue-
bas sin la preocupación que resulta de manipular la máquina de la que dependemos para
trabajar a diario.
Sin duda el soft ware gestor de máquinas virtuales más popular hoy en día es VMWare,
el problema es que es un a solució n de pago (aunque hay disponibles licenci as educativas
muy in teresantes). Otra solución muy pop ular es Oracle Virtual Box, que tiene la ven -
taja de que es gratuita.
Hay soluciones como Vagrant o Docker, que permiten configurar un entorno virtual de
trabajo mediante un archivo de configuración en formato texto. A travé s de esa configu-
ración estos sistemas generan una máq uina virtual preparada para el desarrollo de apli -
caciones. De modo que podremos trabajar fácilmente desde distintas ubicaciones ya que
la configuración se dup lica fácilmente (basta con copiar el archivo de texto) y con ella se
genera un a máquina optimizada para el n uev o entorno . La máquina que resu lta es exac-
ta mente la misma , incluso podremos utilizar ese archivo de configuración para generar
la má quina final real en el entorno de producció n ; lo que implica que podremos utilizar
exactamente el mismo entorno tanto en la fase de desarrollo como en la de producción .
• Sistema de control de versiones. Una situación que suele ocur rir a men udo a los progra-
ma dores' es la siguiente: tenemos una aplicación cuyo código funcio na perfectam en te
y al hacer una mejor en la misma , el código deja de funcionar o no percib imo s me jora
alguna , y deseamos volver a la versión anterior del código.
Volver a una versión anterior de n uestro código es muy fácil utilizando un siste ma de
control de versiones. Hoy en día el más pop ular es Git, creado por Linus Torvalds (crea-
dor, a su vez, del siste ma Lin ux), pero tamb ién se utilizan Mercurial, Subversial o SVN.
La mayoría de siste mas incluso admite n trabajo por ram as, en las qu e desde un pu nto
concreto qu e hem os salvado pod emo s hacer varias pruebas diferentes (ramas) qu e den
lugar a diferentes resulta dos. Eso mejora el trabajo en equipo, ya que podrem os unir el
traba jo de varias ramas, cada un a de ellas realizada por un a person a o equipo disti nto, y
compactar el tra bajo completo.
El éxito actua l de estos siste mas pro cede de los repositorio s de versiones en la nube. El
más popular es GitHub, pero hay otros muy populares como por ejemp lo BitBucket. En
am bos casos hay disponible un uso gratuito del siste ma, aunque pagando disponem os
de más po sibilid ades. Su idea es simpleme nte centralizar nu estras version es de códi go
en la nube a través de un siste ma de contro l de versiones. Tanto GitHub com o Bitbu cket
admite n Git como siste ma de control de version es (Bitbucket además admite Mercur ial).
De mo do qu e si cam biamos de ubicación , podremos sincronizar nuestro trabajo en la
nube y así siem pre disponer de to das las vers iones rea lizadas desde cualquier ubicación .
• Software de test. En las aplicaciones web, la fase de pruebas resulta compleja po rqu e
re quiere de la interacción de diversos eleme ntos. Por ello se han crea do herram ien -
tas qu e permite n a uto matizar esta fase. Las más conocidas, para el len guaje PHP, son
PHPUnit y Selenium (ésta se usa en otras plataformas). Hay incluso una corrie nte de
la ingeni ería del software que se basa en crear aplicaciones, empeza ndo prim ero por las
pru ebas de test : es el modelo llam ado Test Driven Development (TDD).
UN IDAD 2. PREPARACiÓN DEL ENTORNO DE TRABAJO 47
Cuando se trabaja en equipo, habrá varios entornos locales, por lo que las opciones
comentadas anteriormente de expo rtación de entornos virtuales de trabajo (como
Docker o Vagrant) y, sobre todo, los sistemas de control de vers iones de código centra-
lizados en la n ube (como GitHub o BitBucket) son muy interesan tes, ya que en cuanto
los miemb ros del equi po modi fiqu en e! código y lo sincronicen en la nube, esta rá a dis-
posición de! resto del equ ipo.
• Staging, ent orno de sim ulación real. Staqinq es un té rmino que podríam os tr aducir
como puesta en escena . Los entornos locales tien en el problema de qu e no pu eden simu-
lar completam ente el entorn o en e! que se ejecuta rá realmente la aplicación, cuando esté
finalizada . Por ello, se trabaja en un segundo entorn o (este sí es e! mi smo para todos los
miembros del equipo) qu e residirá en Intern et, simulando lo me jor posible el funciona-
miento real de la aplicación.
Otra opci ón es utilizar servicios de tipo PaaS, como Heroku o Google App Engine,
ambos con opcion es gratuitas , que en lugar de ofrecernos un serv idor compl et o virt ua-
lizado, no s ofrece un a plataforma preparada de trabajo a la qu e simplemente subiremos
el código y nu estr a aplicació n ya funcionará sin te ner que ins ta lar na da. Es una opción
más cómoda, pero con m eno s posibilidades de person alización.
En este entorno se implem entan aplicaciones prácticam ente terminadas, pero qu e nece-
sita n ser probadas en las con diciones má s parecidas posibles a las finales, y así pasar a la
fase de pro ducción con más tranquilidad.
48 IM PLA NTACi ÓN DE APLICAC IONES W EB
-
~~ ~
Rep ositorio de ~ Aplicac ión en Internet
códi go I ~ dando un servicio real
(con con t r ol La implementación
de ver sione s) ' 1' , pued e ser corno la del
1, ent orno de desarrollo
Aplicación final
"'~ Servidor Virtual (production)
1, Wil l :' . en la nube o bien
~" I ¡ Plataform a de
. ~=/l desarrollo en la nube
.F.~ 1
Se rvidor Local Entorno de simulación
(development) (staging)
Nues tra propia maquina en
la que hemos instalado el
software nece sario
Figura 2.1: Modelo de tres estados para implem entar una aplicación web ; es la forma habitu al de crear aplica-
cion es web profe sionales.
• Linux. Indudablem ente en el mundo de los or dena dores personales Linux no deja de ser
un a rareza, ya qu e su cuo ta de mercado es mu y pequ eña en com paración al dominante
Windows. Pero esto no ocurre en el caso de los servidores web, la cuota de servidores
Linux/ Unix alcan za un 70%. Lo qu e significa que en el mundo de las aplicaciones web,
Linux es el siste ma domina nte.
Solo esta razón podría ser suficiente para elegir Linux como Siste ma O perativo en nues-
tro entorn o local de trabajo; si lo hac em os, la migración a un servi dor real de Internet
será menos probl em áti ca.
UNI DAD 2. PREPARACiÓN DEL ENTO RNO DE T RA BAJO 49
Otra razón es el hecho de que la mayoría de distribucion es Linux son gratuitas y tam -
bién es más barato contratar un servidor real en Internet en este siste ma.
Finalmente hay qu e te ne r en cuenta que mu chos servido res web (entre ellos Apache), se
crearon pensando en ser instalados en un sistem a Linu x; lo mismo pasa con nu m erosas
herramientas de trabajo. Linux posee un ecosistema de aplicaciones para los desarrolla-
dores muy rico , ad em ás de un a comunidad muy dinámica de desarrolladores.
La clara desventaja es qu e no es fácil utilizar un sistema Linu x y que hay muchas ver-
sion es y distribucion es, lo que pu ede dar lugar a problema s de compatibilidad y de
aprendizaje.
Las distribuciones Linux mas utili zadas son : Debian (m uy robusta pero difícil de man e-
jar), Ubuntu (basada en Debian pero con más facilidad de manejo) y CentOS (basa da
en Red Hat Enterprise). Todas ellas son grat uitas, pero Red Hat Enterprise y Suse
Enterprise son vers iones de pago muy utili zadas por su robustez y sopor te para in stalar
servidores reales en Intern et.
• Windows. Leído el punto anterior parece que es un error instalar Windows para pro gra-
mar aplicaciones web . Pero no es así. Sabedo res de la cantidad de equipos con Windows,
la mayor parte del software relacionado con el desarrollo de aplicaciones web posee
versiones para est e sistema . Además hay servidores web propios solo de los siste mas
Windows, com o es el caso de Internet Information Server, conocido como llS , de
Microsoft.
Lógicamente para impleme ntar un servidor , lo ideal es in stalar alguna versión Win dows
Server. Pero podemos imp lementar servidores de aplicaciones web, prácticamente, en
todas las versiones de Windows.
Realmente las razones de in stalar Windows en nu estro siste ma local para crear aplica-
cione s web, pasa n por el hecho de ser nuestro sistema habitu al de tra bajo y, por lo tanto,
te ner much o más conoc imiento sobre su gestión.
• OSX. El sistema op erativo de los Ma d ntosh de Apple, es otra opció n muy valora da por
los desarroll adores de aplicacione s. Para ello debem os disponer de un equipo de esa
marca. A pesar de su precio más elevado, es un entorn o muy utili zado por los desarro-
lladores de aplicaciones porque para mu cho s aúna lo mejor de ambos mundos (Linux y
Windows): facilida d de uso y de gestió n, bue n funci ona miento y un gran ecosiste ma de
aplicaciones .
No hay qu e olvidar qu e los Mac, al igual que los sistemas Linu x, están basad os en Unix,
por lo que la con figur ación desde la línea de coma n dos es muy parecida a la de los siste -
mas Linux yeso facilita la migración a un servidor Linu x típico en Internet.
La elección del sistema op era tivo puede est ar determ in ada po r la elección del rest o de ele-
mentos. Por ejemplo, en el caso de PH P (que es el leng ua je elegido en este manua l para progra-
mar aplicaciones web), siem pre ha habido un a mu y buen a relación con Linux. De hecho, lo que
se conoce como LAMP (Lin ux+Apache+MySQL+PHP), sigue sien do la tecn ología to davía domi-
nante en el mundo de las apli caciones web.
50 IM PLANTACi Ó N DE AP LICACIO NES W EB
Bien es verdad , sin embargo, qu e la tend en cia actual es qu e el siste ma opera tivo sea poco
determ inan te, gracias a las facilidad es que te nemos actualme nte para conver tir nu estro entorno
de un a máquina a otr a. Por ello, la elección del sistema operativo tendrá que ver con nuestras
preferencias personales o bien con el rendimien to que nos ofrece.
nginx. En realidad es el acrónimo de: engine X (que suena en espa ñol como eny ainex),
es un servidor en alza que ofrece me jores prestaciones cuando hay que atender a nume-
rosas con exiones. Es también gratuito y de código abierto. En solo 5 afias ha pasado a
in sta larse en el 2 1% de servidores web de Int ern et.
• Node.js. Servidor JavaScript con capa cidad para crear servidores web especialmente con
el módulo Expre ss.js.
Para programar en PHP lo habitual es utilizar el servidor Apache debido a su ya larga tradición,
estabilidad y gran número de usuarios. Actua lmente hay servidores más rápidos y qu e suponen
menos coste. Especialmente populares en este aspecto son nginx y Node.js, ambos se compor-
tan mucho mejor que Apache cu ando hay que atender a muchísimas conexiones y peticiones.
UNIDAD 2. PREPARAC iÓN D EL ENT O RN O D E TR ABAJO 51
Mien tras que node.js funciona como servidor ]avaScript, nginx es un servidor web de estilo más
clásico, muy ut ilizado para crear aplicaciones PHP.
Otr os
3% A pac he
58%
Lite Sp eed
2%
Ngi nx _
24%
Figura 2.2: Cuota de uso de servidores web según la web w3techs.coll1 (abr il 201S)
Ot ros
9 ,9 0 % __
Ngi nx
43 ,9 0 %
LiteSpeed
0,40%
IIS __
9,2 0 %
Figur a 2,3: Cuota de uso de servidores web en sitios pertenecientes al top 1000 (1000 sitios más populares de
Internet) según la web w3tech s.com (abriI 20 IS)
Las imágenes ante riores muestran el uso actual de servidores en los que destacan Apache y
nginx. Se observa qu e nginx se va imp oniendo en los servidores qu e ti enen más popularidad (y
por lo tan to, más visitas).
La última imagen (Figura 2.4 ) muestra el difere nte uso de los servidores web. En hori zontal se
mu estra el uso gene ral de los servidores, siendo Apache el servidor más utilizado. En vert ical se
mu estra el uso en servidores diferenciando por volume n de tráfi co; aquí se observa que Node.js se
usa mucho en los sitios con gran cantidad de tr áfico, aunque su cuota general sea mu y peque ña ,
La elección final dependerá de las necesidades del servicio qu e ofr ezcamo s, ad emás de con-
siderar otras cuestiones : como por ejemplo el soporte. Los servidores qu e aparecen en todas las
gráficas que hemos utilizado , son gratuitos y por ello muy utilizados . Pero n o significa qu e sean
los mejores, los servicios críticos está n dominados por ot ros servidores web, como los de las
52 IM PLAN TACi ÓN DE APLICACION ES W EB
empresas Microsoft, Google, IBM u Oracle que ofrecen un soporte mucho más grande y una
mayor ro bustez.
Posición en el mercado de lo s servidores w eb más populares
~-1.ás
tra n c e
• Node.j s
• Goo gle Servers
• Ng inx
• Mic ro soft - HS
Tráfico en • Apac he
el sitio we b • Lit eSpeed
Teniendo en cue nta que al final nu estro len guaje para implem entar aplicaciones web será
PHP por seguir siendo el más utili zado y uno de los más senc illos de aprender, parec e claro qu e la
mejor op ción es utilizar Apache .
La descarga más reco me ndada es la que se realiza a través de la fun dació n Apac he Lounge,
asociac ión (avalada por Apac he) en cargada de crear archivos pr eparado s para una instalación de
Apache en Windows. La página http://ww\V. apachelou nge.com /d ov-mload / (véase Figura 2.5) es
la que posee tanto los archivos de instalación, como la información necesaria sobre cómo reali zar
el proceso.
La instalación con siste simplemente en descargar el de tipo ZlP correspondie nte a nu est ro
siste ma Win dows. Ese arc hivo contiene la aplicación Apache ya pr eparada para funcionar. El
código binario se ha conseguido compilando el código fuente orig ina l en lenguaje C utilizando
el entorn o Visual Studio de Microsoft; la versión concreta del compilador dependerá , a su vez,
de la versión de Apache descargada; las últimas versiones utilizan la compilación llamada Ven ,
acrónimo de Visual Studio 2012. El componente Visual CH Redistributable para Visual Studio,
se consigue en la dirección http:/ /www.microsoft.com /en-us/d ownl oad/details.aspx?id=30679.
54 IM PLANTACIÓ N DE APLI CACIONES WEB
_ Cl
H
O"' / Apache 2.4 VC11 Bincrles and Modules Win32 3nd Win64
cr ecbe Lc·ún;lt he s crcvrcec uo-to -ca re '.';,.,!ic.",, ! b '''~r ¡ e~ enc ;J c,p"i~r tnru- r art-, mo c ute s íor n-c-e ti1 ~ n : c t t ~ r$ . "; 'i:: neve ocnc-eds cf th <; :.J ~ a n c !
G ve ro \',' i 1l64
o( s ensfte c L. ~t"r ~ ; ~'"l'a' , e oo b ; r or- p eme s es v.el¡ es p erc ona ! u~ e rs . ':'1W.;,5 burle ' -'Itt>.J¡: te- dere dep er-denc.es IH'd n te st corr,p l :l!'r~- a od teste e
thoro u ph. TI'e b l"a " 'e~ u e re terence c b, t he ':"S". r':;:ro~ofL p;ir etc . and rno-e e no mor e cc mrr.e roe ! softwe re 15 p¡,c;"aQtC ,',:,)' o...r b¡'1U, t~ e ne
'1'"
,OC":("5.
The ,' ; ,ndo o',S 3: a"c' 6~ b.ts ~ ..: b.nar.e s t-e:c..., lil e bu' 'e w¡th U1t s cu-ce r Irorr, :'S.F e t httpc . ~p1!,ht . or>l . ccntams tbe I H e ~ t pa tcne s !Orld;3 te s t
cep encencree ," e c'ib, cpens s t e tc . ,·.h,ch roet. ec me dc wnloecs h~re meet!\" roc-e ~ ,tucj f~ r e >.H,-,p ie then do ....ntce ds horro the '::':;. F and otber pla ce s,
5 u' d ...·th t ,~ i~ t es~ '.'l!-:..I a! St'.lc :o!. 20: 2 a" 3 ·.'e: 1. ,'C : :' be s 'i'T'prc . oement: fo. e s i1nó opt;~"Z<!tons o,oer ·.'C1C-In ar ea: l.ke Perf c rrna nce ,
·.le .....o n·;·la nIl9l':1"'; l':"ltano SUt>·j,t... ser e ) "lI''''pi~ c ode ¡;Ull ! ~t', ~u n ll1 ; 3nd ir-rpro ve n -e nts eon e acrcs ; dufer e nt code ceneret.cn e ree s ter "sce ec". ;'na
A d dilJOll al ~ VC9 - vaj-e s m or e o-e 01 modtr" pnces:·ors ~nd ,~ , ., 7 , vil:"B, 2 C G O !n ~ !'er.- er 2C:
,. ,,"C: : OINl r,- to e ds ",(1: , V( l G and ....( 9 rneou'e s . "Im"-um s vs terr re c.nre
Enlace para descargar Visual Studio VCn
2~O~ P.: <;~ : . ',';; n::O\"lS serve- ;;0: ':: .' 1',2, tt ;(· t~ 1,:;,' r un 0'1 ~p anc ::003
.:.fto:' vc u ha't c o--nca oec an e' betcr e vc c ett empt to r- creu u VOl' s hould mek e s ute t' tet ¡t 15Inte: '
Kt'Cp scevee onhne .8.Q!l ~tIlI!' e ec . or the ~·Ht. Ch e e"~um~ te .' en f" the rote en!;', ,
Figura 2.5: Página de descarga de los archivos binario s para Windows en Apache Loung e
A CTIVI DA D 2.1:
• Realiza la Práctica 2. 1 "Instalación binaria de Apache en Windows", en la página 90.
• Intenta realizar la mism a prácti ca para un siste ma de 32 bits.
La instalación por código fuente requiere leer la documentación oficial de Apache sobre la
in stalación disponible en la dir ección http://httpd.apache.or g/docs/ en la que se explica la forma
de in stalar y los problema s habituales que no s podemos enc ontrar. Aunque hay documentación
en espa ñol e inglés, la versión en inglés siempre está más al día y es la qu e, si es posible, debería-
mo s leer.
Para instalar Apache mediante su código fuente, los pasos principales son :
[3] Instalar librerías y utilidad es necesarias. Se requieren las librerías de compilac ión en len -
guaje C y CH , la librería APR (y APR-util) y la libr ería PCRE
[5] Hacer que el directorio bin de Apache forme parte del PATH del siste ma
También podemos instalar el paqu ete desde el entorno gráfico del sistema.
En cualquier caso , tras la insta lación todo estará configurado directamente para utilizar ya
Apache. Los comandos para lanzar y det ener Apache son los mismos (httpd -k start y httpd -k
stop), la instalación varía en cuanto a los directorios de instalación. Así:
• La raíz de instalación de Apache es jet cjhttpd. Dentro de ese directorio se encue ntran
los dir ect orios: conf, logs, modules y r uno
• En el director io jvarjwww se encuentran los directori os cgi- bin , error, icons y especial-
mente el dir ectorio html que es la raíz por defect o de los documentos web. Es decir, cuando
escribimos en el navegad or http://localh ost se intentará mos trar el con tenido del ar chivo
jvarjwwjhtmljindex.html.
• j usrjsbin contiene los ejecutables. Esa carpeta forma parte del PATH del sistema.
56 IMPLANTACiÓN DE APLICACIONES WEB
Eso mism o se puede hacer desde el gestor gráfico de paq uetes (por ejemplo Synaptic). En este
caso los directorios involu crad os son:
• jusrjshin contiene los ejecutables, esa carpeta forma parte del PATH del sistema.
• No hay archivo httpd, en su lugar se gest iona Apache con el comando apachectl, que
equivale nte a httpd -k.
Desde el símbolo de siste ma de Windows se pueden también hac er estas tareas m ediante
el pro grama qu e controla al servidor Apache, que se sue le llam ar httpd. Si hemos configur ado
correctamente la variable PATH del siste ma, tendremos acceso a httpd desde el terminal de
coma ndos de Win dows. Abr iendo el terminal con privilegios administrativos podremo s:
Arra nca r el servidor Apache: http d - k start o con ne t s tart a pac he2. 4 , si apa -
chez .a es el nombre qu e Windows asigna al servicio de Apache
UN IDAD 2. PREPARACi ÓN DEL ENTO RNO D E TRABAJO 57
2.4.3.2 LIN UX
Los comandos son los mismo s que en Windows, salvo qu e en Linu x no hace falta instalar
Apache como servicio, aunq ue se puede hacer. Los comand os relacionado s con la ejecución son
(en algunas distribuciones Linu x, en lugar de httpd -k , se ut iliza apachectl ):
OPCiÓN SIGNIFICADO ., -,
Así, por ejemplo, si n uestra raí z de documentos es /var/wwwjhtml, en esta tabla se expresa la
relación entre la dirección qu e el usuario escr ibiría en el n avegad or y su ruta en disco:
Los cambios en la configuración de apache no estarán disponibles hasta que reiniciemos e.l
propio apac he (por ejemplo con httpd - k restart).
UNIDAD 2. PREPARAC iÓN D EL ENTO RN O D E TRA BAJ O 59
Para in dicar un archivo de con figura ción person al, distinto del archivo por defecto, se ejecuta
el comando:
• "- • _ . _. - -- _. -- , _ _O __ - __ ........ _ •• • - - - - . _ .. _ _ , ,. ••
.
,
,
~
~
~
httpd -f rutaAINuevoArchivo .
Los archivos de configura ción están compues tos de los siguientes eleme ntos:
La lista completa de directivas se pu ede m ostrar desde la línea de coma ndos con el
comando httpd - L
• Secciones o conte ne dores . Permiten dividir el documen to y, así, conseguir que las direc..
tivas solo se apliquen a un a parte del doc um ento. Las secciones se configuran mediante
etiquetas al estilo del lenguaje XML (aunque no son realmente XML). Por ejemplo:
En este caso se nos indica que el director io jusrjlocaljapachejhtdocsjdír2 est ará prote-
gido ante cualquier acceso salvo a las conexiones desde la dirección IP I92.I68+21.
• Come ntarios. Se trata de un texto qu e comie nza con el signo #. Sirven para document ar
el archivo de configura ción.
Por defecto , Apache no tien e en cuenta el conte nido de los archivos .htaccess. Para que sí se
ten ga en cuenta, se debe utilizar la directi va AllowOverri de , por ejemplo, con el valor all. Esta
directiva se explica más adelante.
60 IM PLANTACIÓN DE APLICACION ES W EB
Por ejemplo, en un conten edor de directorio, las dir ectivas dentro de ese contene dor, servirán
para mo dificar el funcionam iento de dicho directorio.
<Directory "C:\www2">
Option s Ind exes Foll owSymLin ks
AllowOve r ride None
Order a l low,de ny
Allow from a ll
</Directory >
Files. Esta blece directivas para los archivos con un nombre concre to. Ejemplo:
DirectoryMatch. Aplica una con figuración a varios dir ectorios a la vez mediante un a
expresión regular.
• FilesMatch. Permite establecer una expres ión regular para que la sección se refiera a un
grupo de archivos.
11 Loc ation. Las dir ectivas de esta sección se referirán a una URL. Ejemplo:
• LocationMatch. Igua l que la anterior, pero permite especificar varias URL m ediante una
expresión regular.
UNI DAD 2. PREPARAC iÓN D EL ENTORNO D E T RABAJO 61
VirtualHost. Permite configura r un servidor virt ual, de m odo que parezca que dispone-
mos de varios servidores web en un a única insta lación . Para ello, se indica en la sección
como argume ntos, un nomb re de servidor (o su direcció n IP) y el puerto por el que
at en der á. Ejemplo:
<VirtualHost l ocalhos t :12000 >
DocumentRoot "c : \ www2"
Dir ectorylnde x index.html
</Vi rtu alHost>
Mediante la dirección Iocalhost .rzooo con seguir emos te ner un segundo servidor Para
ello tendremo s qu e hacer que Apache escuche por el pu erto 1200 0 y ade más perm itir el
acceso a ese directorio con una directiva Directory. Más adelante se explica en de talle la
creación de servidores virtuales.
• ServerAlias . Solo funcio na den tro de directivas VirtualHos t y permiten establecer nom -
bres alternativos (alias) al servidor virtua l.
11 ServerRoot. Indica la raíz de la in sta lación de Apache . La raíz, al menos, debe contener
las carpetas conf y log .
• Listen . Permite modi ficar el puerto por el qu e se comunica el ser vidor. Podemos incluso
escuchar por más de un puerto, lo cual se consigue de esta form a:
Li s t en 80
Listen 8080
• DirectoryIndex. Indic a el nombre del archivo índice del dir ectorio. Normalmen te es
ind ex.html, pero se puede camb iar y, adem ás, indicar más de un archivo. Por ejemplo:
Se pu eden esta blecer diferentes nomb res de archivos de índice para cada directorio si
utilizamo s esta dir ectiva dentro de un a sección Directory.
• ErrorDocument. Permite ind icar qué mostrar cuando ocurra un error. A esta directiva
le sigue el número de error http y luego el texto o documen to a mostr ar en caso de error.
Por ejemplo, pod em os esta blecer que se muestre un a página en caso de error por archivo
no enco ntrado:
ErrorDoc ume nt 404 /error404 . html
ServerAdmin. Esta blece el email del administrador del sistema, qu e se utilizará para que
el propi o servidor web envíe un mensaje en caso de pro blemas . Debere mos ten er confi-
gurado en el sistema un servidor SMTP para qu e el envío de me nsajes funcione.
• LogLevel. Permite indicar qué eventos se almace nan en el arc hivo LOG de erro res. Se
basa en un siste ma de niveles, de modo que cuanto más alto sea el nivel, men os eventos
se almace ne n en los lag.
La lista de niveles, en orde n de más a menos nivel, es:
emerg. Solo almace na eventos qu e impiden el desarrollo del servidor.
alert oEventos qu e requieren tomar acciones inmediatam ente.
crit. Eventos de fallos crít icos.
error. Condiciones de err or.
• warn. Avisos, no significan errores, solo advertencias de posibles errores.
no tice. Cua lqui er evento que tenga cierta significancia. Si se elige este nivel, se alma-
cena cualquier evento de los anteriores.
2.4. 6.3 DIR ECT IVA S PARA REN OMBRAR Y RED IRECCI ONAR
RECUR SO S
Alias. Permite esta blecer un alias para una dirección de modo qu e, por ejemplo, si hemo s
escrito en el navegador la dir ección : http://localhost/dep artamentoVentas podam os con-
seguir qu e en lugar de entrar en el dir ectorio departamentoVentas den tro de la raíz de
U NID AD 2. PREPARAC iÓN DEL ENTORNO DE TRABAJO 63
• Redirect. Parecida a la anterior, pero en lugar de asociar un directorio a una ruta URL,
se cambia automáticamente un a ruta por otra. Ejemplo:
Redirect / us uar i os/ j or ge http: / /www.jorgesanchez.net
I All OW fr omhost I
El host es un ser ie de nombres de dominio (o partes de dicho nombre) o de direcciones
IP (sean V4 o v6) o especificaciones CIDR de red (como por ejemp lo IO .IO .o.ojr6) con las
que se especifica el servidor, servidores o rutas de red a las que perm itimos el acceso al
directorio.
Si se in dica como host la palabra al! entonces se permite el uso a cua lquier host.
• Deny. Funciona como la anterior, pero ahora especifica a qué máquinas prohibimos el
acceso al directorio.
En el ejemplo primero se aplica la directiva Deny y luego Allow (que es la que tendrá
prioridad).
• Requ ire. Permite especificar qué usuarios o gru pos de usua rios pu eden acceder a un
director io. Admite como valores:
user. Permite indicar una lista de usuarios. Será a los usuarios de esa lista a los que se
permita el acceso .
valid-user. Permite el acceso a cua lquier usu ario válido.
64 IM PLANTACi Ó N DE APLICAC IONES WEB
group . Permite indicar una lista de gru pos. Será a los usuarios qu e perten ezcan a uno
de esos gru pos a los qu e se per mitirá el acceso .
all denied. Ningún usuario podrá acceder al directorio.
all granted. Todos los usuarios tend rá permitido el acceso.
111 Sati sfy. Especifica el fun cionamiento de las dire ctivas Allow y Require anteriores. Sus
posibles valores son:
AH. Valor por defecto , indica que el cliente qu e ha hecho la petición tiene qu e cumplir
tanto la directiva Allow como la Require para acceder al directorio.
Any. Al cliente le basta con cumplir cualquiera de las dos directivas
AuthType. Indica la form a de aute ntificar a los usuario s, en el caso de restringir el acceso
a un dir ectorio en base a usuarios o gru pos. Se suele usar la opción Basic, autentificación
simple, pero es posible indi car Digest (aut entificación avanzada).
• Aut hBasicPr ovider. Indica la form a de autentificar el usuario. El valor por defecto es
file, es decir, m ediante un arch ivo de contrase ñas, Sin embargo, se puede autentificar
mediante otros métodos (una base de datos, un directorio LDAP...), lo cua l requerirá
in stalar los módulos adecuados.
• Aut hUserFile . Indica la ruta al archivo de contrase ñas, encargado de autorizar los acce-
sos a un dire ctorio.
Además como los dire ctorios heredan las propiedades de su dire ctorio padre, se pueden
indicar signos + o - en las opciones para que se a ñadan o eliminen las opciones. Por
ejemplo:
Options -Indexe s
U N IDA D 2. PREPARAC iÓN DEL ENTOR NO DE TRABA JO 65
Hace que se acepte n las op cion es heredada s, pero no func ione la de listar el directorio
en caso de que no haya índi ce.
• AHow Override . Solo se pu ede usar en secciones Director y indica qu é aspectos del
archivo .hta ccess qu e se indique en el directorio serán respetad os. Posibilidades (se
puede indicar más de una, excepto si se indica el valor AH) :
• AH. Tod o el conten ido del archivo .htaccess se tendrá en cuenta.
• AuthConfig. Se admite del archivo .htaccess las directivas referidas a aut entificació n.
• FileInfo. Permite el uso de directivas de archivos.
Indexes. Permite el uso de dir ectivas de control de la págin a índice.
• Limit. Permite el uso de las directivas de acceso (Allow , Deny y Order).
• Op tions. Permite el uso de la directiva Options.
• None. No se tiene en cue nta el contenido.
2.4 .7.2 INDI CAR LA UB ICA CiÓN D EL D IRECTOR IO RAíz DE APA CHE
Se ut iliza cuan do qu erem os cambiar de ubicaci ón en disco de Apache . Es el caso de querer
ut ilizar un dir ectorio distinto al predefinido C:\Apache24 de la instalación tipo ZIP de Windows.
Si le queremos en otro sitio habrá que modificar la directiva ServerRoot (véase 2+ 6.r "Directivas
de configuración general del servidor", en la página 6r) de esta forma, por ejemplo:
ServerRoot "C : / Apache"
Hay que tener en cuenta que un cambio en el archivo de con figuración de esta índole, pu ede
implicar cam biar más lineas, ya qu e pue de haber muchas directivas y seccion es que hagan refe-
rencia al directorio anterior (por ejemplo a C:jApache24) , por lo que habrá que reemplazar cada
referencia por la n ueva raíz .
Las pági nas de error qu e devuelven estos códigos so n las que Apac he tie ne configuradas po r
defecto. Para cambiarlas se usa la dir ectiva ErrorDocumentation en la cual se indica el código de
error y la URL a la página que mostraremos cuando se produzca ese error.
Dir ectiva Redirect (véase 2+6.3 "Directivas para renombrar y redireccionar recursos", en la
página 62). La cual realiza una re dirección completa. Es decir, se intenta acce der a un
recurso y Apac he redirige la petición a otra dirección (que n ormalm ente es un a URL en
otro servidor).
Esta opci ón no sue le ser deseabl e, por pe rmitir el acceso indiscriminad o a todo el conte nido
del dire cto rio. La ra zón es qu e, en el archivo de con figuración, sue le hab er una directiva Opt i ons
I ndex es FollowS yrnLinks den tro de la secc ión Dir ectory del direct orio raíz de documen tos.
<D i rectory / va r/ www>
Options -I ndexes Fol lowSyrnLynks
</D i rectory>
68 IMPLANTACiÓN D E APLICAC IONES WEB
El código anterior modifica la directiva para la raíz de documentos del servidor web, que supo-
nemos situada en/var/www.
Otra opción es crear un archivo .htaccess en el directorio que deseamos proteger. Desp ué s
dentro de ese archivo se indica la directiva: Opt i on s - 1ndexes .
Simpleme nte necesitarí am os quitar la palabra Indexes. El resto de opci ones por defecto se
refieren que no permitim os el uso de archivos .htaccess y que a to do el mu nd o ten drá acceso a
los directorios.
Hay qu e recordar qu e necesitamos que la dir ectiva AllowOverri de esté al meno s con el
valor AuthCon fig para qu e se ten gan en cuenta las dir ectivas de autentificación en los archi vos
.htaccess. AllowOverride se debe aplicar al directorio qu e conte nga el .htaccess, o bien se puede
haber aplicado a directo rio s superiores (incluso al raíz) y, por heren cia, la dir ectiva funcionará
par a todos los dem ás dir ectorios.
Otra posibilidad es indicar las directivas dire ctamente dentro del archivo de configuración
general de Apache a tr avés de una sección Directory; aun que , lo cier to es qu e es más difícil de
mantener, especialme nte si cambiam os de servidor.
Debemo s de crear el arc hivo de contrase ñas fuera de la ru ta del servidor Apache, de otro modo
podría qu edar expues to a los usuarios de nues tro sitio web y qu e alguien hiciera un uso no auto -
rizado del mismo. La utilidad htpasswd qu e forma parte de las herr ami entas de Apache (estará en
el directorio hin de Apache o en el directorio /usr/shin en Linu x) crea un archivo de texto pero
con las contrase ñas cifradas.
UN IDA D 2. PREPARAC iÓ N DEL ENTORNO DE TR ABAJO 69
Se utiliza el parám et ro - c para crear el arc hivo po r primera vez (si el archivo ya existiera, con
este parámetro le eliminaremos); para a ñadir el res to de usuari os no se usa. Es decir, si a ñadirnos
el seg un do usu ario:
• • • __ o _~ - - - - _.~ • - - - _~ •• • •• ~ ._ - - •• _ _ o • ~ _._
Cuan do un dire ctorio queramos qu e quede accesible a solo un usuario, en el archivo .htaccess
de dicho dir ectorio se indican las siguien tes dir ectivas:
AuthType Basic
AuthName "Acceso Pr iva do"
AuthBasicProvider f i le
AuthUserFile c : \ passwor ds\pas s 1
Require user a lonso
De esta forma al entrar en el directorio en el qu e está situa do este arc hivo .htaccess se ped irá
el u suario y contrase ña, se cotejará con el contenido del archivo ct vpasswordsvpasst y solo se
permitirá el acceso al direc torio si som os el usuario alonso y h emos escrito correctame nte su
contrase ña,
Si deseáramos perm itir el acceso a más de un usuari o la lín ea del Require sería:
Si queremos permitir qu e pu eda entra r cualquier usu ario presente en el archivo, se haría así:
Require valid-user
Grupos
Es posible indicar grupos de usuarios. Para ello se crea un archivo de grupo , el cua l es un
arch ivo de texto.
70 IM PLANTACiÓ N DE APLICACIONES WEB
Par a conseguir qu e un directorio solo permita el acces o a los usuarios de un gr upo conc reto
(se podría indicar más de un gru po separados por espacios):
Eso provoca una de sventaja: los na vegadores tienen que tener la capacidad de traducir ese
lenguaje. En el caso de JavaScript se asume que cualquier naveg ador es capa z de traducirle, pero
cualquier nuevo lenguaje script qu e se creara necesitaría a ñadir esa capacidad al navegador.
En los lenguaj es script del lado del servidor , lenguaje script in crustado en el código HTML
se interpreta en el propio servidor, qu e devuelve al nav egador el resultado de interpretar dicho
código, que siempre será un documento HTML entendible por el navegador.
PHP es gratuito y es softw are de código abie rto que tiene una relación excelente con Apache,
MySQL y Linux; aunque actualmente en Windows también se instala muchísimo ya qu e se puede
in st alar también en servidores ns de Microsoft y en otros muchos. Además puede conec tar a
sist emas de ba ses de datos como Oracle, lnforrni x, DB2...
UN IDA D 2. PREPARACIÓN DEL ENTORNO DE TRABAJO 71
-
cargar par a nuest ro siste ma .
- _
,~
_ x_
- -
~ [ 20. "'M Bl
oc
build onectcnes a re
\'sa b!e dire<t1r.
l· Z!Q{20.14f.'B J
1
sha 1: 6cf741e4tx5Od36f8 1886afStdd3a08C0€052597
~ [ 9 . 75" B J
• Desc arga recomendada
para Apache de 32 bits
ir you ah: USing PH? W¡trI Apa cll€' 1 vcn x64 fñlre a d Safe (201S- Al'r- 16 0 1:4 6: 22)
Not e : ),64 t:ulds are a.n ently e xperi mental i
•
c r Apa ( ~ 2 from apa cbe .orq (not
Descarga re comendada i
reccmmeroed ) yo u reec to use tbe
older VC6 vetslons of PrlP COITlp¡I€'d
with the It>g<lcy Visua l Stud iO 6
l· ~ [ 21 . 5M B J
I
sha l: fl 9l'4c89C3cfS6 2efd5c24C76484 9Cf9c6b36869
para Apache de 64 bits
com?t~r. 00 NOT USt' VC9 -
,
vers.oos of PHP Wl~ t-e apecbe.orq ~ [ 9 . 58fol Bl
-
b ranes .
sha 1: lts16Oa7€-3f033b€<3cb78091 74562Si:o10909 793
\,','i~ ADacho.? 't oo have te use ~ Información fundamental para
r breec Safe (TS)fverslons of P.,?
u rn .. .. ... u ...
sab er la versión a desc argar .
Figura 2.6: Página de descarga de PHP : windows .php.ne t /dolVn load en la qu e se ha destacado la información
que debemos leer para saber qu é versión descargar para nu estro servidor Apache en Windows
72 IM PLANTACi Ó N DE APLICACIONES WEB
Para un entorno Apache en Windows , hay que descargar la versión Thread Safe, ya que
Windows , que es un entorno multihilo (thread significa hilo). El mod o Non-Thread Safe es el
que se debe escoger en el caso de usar PHP en servidore s lIS de Microsoft porque tienen un modo
de ejecució n disti nto.
Además hay que ten er instalado el Visua l C++ Redistributable para Visua l Studio 2 012 , si
descargamos la versión última de PHP (que es lo lógico) para VCn. La descarga e instalación
de Visual C++ Redi stributable se explicó en la página 90. La versión de este compone nte a
instalar, deb e de ser compatible con la versión in stalada de Apache . Lo normal es que ten gamo s
Apache para la versión VCn.
Una vez descargado el archivo corres pondiente a nu estro sistema, tendremo s que:
11 Descomprimir el archivo ZlP en la ruta deseada.
• A ña dir el dir ectorio raíz de PHP y el directorio ext (que esta rá dentro del anterior) al
PATH del siste ma
Gen erar un archivo inicial de configur ación php .ini. Para ello en la raíz de PHP se sumi-
nistran do s archivos:
php.ini-d evelopmen t . Versión de php.ini pensada par a entornos de desarrollo.
php.ini-production. Versión de php.ini pensada para producción.
Bastará con copiar el que nos interese de los dos y renombrar la copia como php.ini.
; Muestra errores
di spl ay_errors = On
La comprobación de qu e la instalación es corre cta pasa por crear un a página con código PHP
y, con el servidor Apache relanzado , cargarla en el nav egador. Lo típico es crear una página que
invoque a la funció n phpinfo, dicha página gen eraría el con tenido de la Figura 2.7.
Syste m '''' '1noo" s Nf A.$fR· '1.1N7-6 J 6 .~ euil:l 7601 Ctúr.c" ...-s 7 BUSl"'e ss E:;l.t ::m s ervc e P. : . 1)AMD54
BuildDa le A.DnS 20~ 5 ' 5.0~ .~
Este tipo de instalación permite persona lizar comp letamente la instalación de PHP . Los pasos
fundamentales son:
[3] Instalar paquetes necesarios para la compilación y especialmente los paqu etes Iib-xmlz-de v
(o Iib-xmlz-de vel) y el intérprete de perl.
[4] Configurar la instalación mediante el comando configure que no s perm itirá decidir qu é
librerías compilamos. Por ejem plo, se suelen in cluir las librerías mysql y mysqli para gestio-
nar bases de dat os MySQL.
[5] Compilar e in stalar mediante los comandos mak e y ma ke i nstall.
[6] Crear el arc hivo php.ini a partir de un a copia del archivo php.ini-de velopment o del archivo
php.ini-production, ambos dentro del dir ect orio con el código fuente PHP.
[7] Modificar el archivo de configuración de Apac he para que cargue el mó dulo PHP.
[8 ] Modificar la política del módu lo de segur idad SELinux para que permita la ejecución del
módulo de PH P. Esto es necesario en los Lin ux que dispon en de esa capa de segur idad.
ACTIVIDAD 2.5:
• El paso en el qu e se invoca al comando configure es mu y interesan te ya que permite realizar
in stalaciones de PHP muy personales.
• Hay más opciones dispon ibles para este com an do. Por ejemplo ten emos la opClOn
- - wi t h- config -fil e -pa th =ru t a qu e permite indicar la ruta en la qu e PHP buscará el
archivo de con figura ción , lo que nos permite colocar el archivo php.ini en cua lqui er ruta del
sistema. También podremos indicar opciones de compilación para a ñadir libr erí as qu e no s
inte resen .
• Lo interesante es que se puede invocar una y ot ra vez a este coman do y después compilar el
código PHP sin que necesitemo s reinstalar Apache.
• Examina las posibilidades de este comando en la dirección:
http ://p hp.net/manualles/configur e.about.php
los paqu etes nece sarios. Por otro lado , los cambios que se realiz an al sistema: rutas donde se han
dejado archivos, ficheros de configuración modificados, etc. No son fáciles de conocer.
Se explica la instalación para sistemas Red Hat (como CentOS por ejemplo) y Debian (como
Ubuntu por ejemplo) con gestores automáticos de paquetes.
Tras la instalació n debemos reiniciar Apache . Podemos crea r un sencillo programa PHP y
pon er la URL del mismo en el navegad or para ver si el servidor aplica correctame nte el módulo
PHP.
Se instala el paquete PHP y tamb ién aprovechamos para in stalar el m ódul o MySQL para PHP.
Tras reiniciar Apache , el m ódulo PHP ya esta rá funcionando . Basta crear un documento PHP
y poner su URL en el navegad or para prob ar la instalación .
2.5.3 CO NF IG U RAC iÓ N D E PH P
2.5.3.1 COMAN DO PH P
Sea cual sea la ins ta lación qu e hem os elegido para PH P, habr á disponible un archivo binario
llamado php que, entre otras funcion es, tiene la capacidad de interpretar código PHP para, por
ejemplo, indic ar si ti en e errores. Adem ás, permite modificar el funcionami en to de php,
Para pode r invocar al arc hivo ph p, el directorio en el qu e se encuentra debe formar parte del
PATH del siste ma. Las opcio nes del archivo están disponibles invocando:
[i -- - --he1p
php - - -- - _.- _ . . . .. . - _. _ . . - - _...
Para saber dónde o qu é arc hivos de config uración usa PHP (especialme nte en instalaciones
automa tizadas con instaladores o paquet es) basta con ejecutar desde la lín ea de coma ndos:
...
~~-- - ~ - .. . - - - - ~ - .. ...-- -- - ._ ......
php --ini _ . __ ~ _. ¡ _ ..- " '_,'
Ejemplo:
En el ejem plo ant erior se observa que el ar chi vo de confi guración principal es jet cjphp.in i ,
pe ro ha y má s archivos cuyo conte nido también influirán en la con figuración .
2.5.4 M O DI FI CACi ÓN DE PH P. IN I
En el archivo php.ini, las líneas de come n tarios comienz an con un punto y com a (;). Y las ins-
trucciones de con figuración se indican con la forma:
~ i nstrucc i ón=va l or I
Como ocurre con el arc hivo de con figuración Apache , en PHP h ay numero sas op ciones de
con figuración.
UN IDAD 2. PREPARACiÓ N D EL ENT O RNO DE TRA BAJO 77
Ejemplo:
displa y_errors=on
Nos permite ver los errores de PHP para depurar nuestro código. En un entorn o de produc-
ción, esta opción está en modo off (apaga da).
Hay mu chísimas opciones de configuración en el archi vo, las más interesantes está n comen-
tadas en la dirección http: //php.net/m anualles/con figure.about.php .
A pesar de la aparici ón de numerosos sist emas de bases de datos de todo tipo , MySQ L sigue
sien do el siste ma de bases de datos más utilizado para crear aplicaciones web, especialmente con
PHP.
2.6.2 DOCUMENTACiÓN
MySQL tiene un a excelente doc umentación, aunque en inglés. Está dispon ible en la dirección
http://dev.mysql.com /doc /
Lógicam ente apa rece documenta ción para todos los aspecto s de MySQ L, para ver los aspectos
relativos a la instalación de la versión 5.6 de MySQL tenemos la dirección:
• El servidor MySQL.
78 IM PLANTACIÓ N DE APLICAC IONES WEB
MySQL Workbench, que es un entorno de trabajo comp leto para gestionar y adm inis-
trar nu estr as bases de dato s.
Conectores para [os lenguajes que quieran acced er a las bases de datos: Java , Python,
.Net, conectores üDBC y, por sup ue sto , PHP.
Durante la instal ación pod remo s elegir exacta mente qu é componentes instalam os.
Antes de realizar la ins talación hay qu e ten er en cuenta que MySQ L exige ten er in stalado el
Framework .NET de Microsoft, cuya descarga es gratuita.
Para descargar el instalador basta acce der a la dirección htt p://d ev.mvsql.com /downloads/
ins ta llerl
.
ra ::
c ontect us n nü ne "
Rel a t ed Pi H]"S:
Tras hac er clic en Download , una segun da página no s anima a utilizar nuestra cuenta Oracle
(si la te nemos) o a hace rla ahora. Una tercera po sibilidad es hacer clic en el texto "No thanks, just
start my download", que se encuentra en la parte inferior y que permite in iciar directamente la
descarga.
Tras la desc arga bastará iniciar el instalador y seguir instrucciones. El instalador no s permitirá
decidir qué componentes de MySQL in sta laremos.
[1] Descargar los arc hivos desde la dirección htt p://dev.mvsgl.com /d ownl oads/m vsql! corres-
pondientes a nuestra instalación de Windows y Apach e.
[2] Extraer los arc hivos descargados en el direc torio en el qu e deseemos qu e esté la raíz de
MySQL.
[3] Crear el archivo de con figuración m y.im. Lo habi tual es copiar el ar chivo
my -defau lt.ini qu e se en cu entra en el directorio raí z de MySQ L y dejar la copia en la raíz
de Windows (la raíz de W indows es accesible usando la ruta %WINDlR%) con el nombre
win .ini.
[4] En el arc hivo my.ini aseg urar qu e te ne mos las siguie n tes lín eas:
[mysqId]
# ruta a la raíz de instalación de MySQL
bas edir=c : /mysql
# ruta al directorio de datos de MySQL
dat adir=c : /mydata /d a t a
Si deseamos un direc torio de datos (data) en una ruta difere nte de la que tenemos por
defecto, tendrem os que co piar el contenido del dir ect orio data a la nu eva ubi cación y luego
modificar el arc hivo m y.ini para in dicar la nu eva ru ta al directorio de dato s.
mysq I ad mi n - u root s hut down. Deti ene MySQL. Se req uerirá indicar la contrase ña
de root,
mysqId --insta II .Instala MySQL como servicio. EL n ombre de l servicio será precisa-
men te MySQL y quedará con figur ado para in iciarse cada vez qu e se arranque el siste ma .
mysqId - - i ns t a ll - ma nua l. Instala MySQ L como servicio, pero no arran cará auto-
mátic am ente cada vez qu e se ini cie Win dows (instalación manual de servicio).
80 IM PLANTACi Ó N DE APLICACIONES WEB
111 mysq1d -- i ns t a ll mysq15. 6. Instala como servicio MySQL y utiliza como nom-
bre de servicio mysqls.t». También con los parámetros -- i ns t a 11- ma nua 1 y --r e move
podem os indicar un nomb re para el servicio.
mys q1sh ow. Muestra las bases de datos de MySQ L, si el servidor no fun ciona, este
comando no mu estr a nad a.
mys q1s how -u r oot . Muestra las bases de datos de MySQL accesibles por el usuario
root, entre ellas estará el diccionario de datos.
• my s q1 - u r oot . Conec ta con el intérprete de línea de coma ndos de MySQL. Una vez
conectemos, pod remo s, por ejemplo, ejecuta r el comando s how datab a s e s; para ver
la lista de bases de dato s. El coma ndo qu i t permite salir del intérprete.
:I
Lir o> ~ eol c (gh h c 2 .5 ) (dI6, 3.2hi l ~ Rf''-I Sumll ..
TAR An :t:h..e
·. .. _ ·f
~:~c:: nc
,,~_ r
. '~
".ml~ 'Gfl"'IlC {9Ii lx:Z "~~___
[g!,bc
~ .
2.~¡
¡.
~~ t ~}
_ .• ,.. .. , .~,
l.!,;;;jJ
~.'\7 ...
Figura 2.9: Página de descarga de los archivos binarios gené ricos para cual quier instalación Linu x o Unix
[1] Descargar y descomprimir los archivos binarios de MySQL en el direc to rio qu e deseemos
u tilizar como raíz de MySQL.
[2] Dispone r de un usuario y un gru po, distinto de root , a los que otorgare mos la propiedad
de la raíz de MySQL, así como de su direct ori o de datos. Tradicio nalme nte ta nto al usuario
com o al gru po se les llama MySQL.
[3] Añadir e! dir ectorio bin dentro de la raíz de MySQL al PATH de Linu x.
[4] Lan zar el comando de in st alación de MySQL. Por ejemplo (suponiendo qu e asir es el nom-
bre del usuario al que se le han oto rga do los permisos de uso de MySQL):
Comprobar la instalación
En Linux dentro de! directo rio bin disponemos de los mismos comandos para com probar la
instalación visto s para Windows.
Durante la insta lación se no s pregunta la contrase ña del usuario roo t. Con esa contra-
seña podremos acce der a todos los servicios de con exión y configuració n.
Realmente Oracle ha seguido siendo muy respetuosa con la comunidad y mantiene MySQL
con licenci a GPL de código abier to sin soporte , aunque ta mbién permite utili zar un a licen cia
comercia l con soporte por parte de la empresa.
Michael Wide nius, fundador de MySQL, creo Maria DB con total com patib ilidad con MySQL
para asegurar que siempre hubiera dispon ible una versión abierta de MySQL.
La est ructura de archivos, com andos, scripts... son los mismos que en MySQ L. Por lo que lo
comentado aquí sobre MySQL vale para MariaDB .
MariaDB ha sido muy bien acogida por muc ha s distribucion es de Linux; es incluso más fácil
instalar en Linu x MariaDB que MySQ L en las últimas versiones de Linux, ya que Mar iaDB está
incluida en la mayoría de repo sitorios, mientras qu e MySQ L no .
Puede haber varios archivos, según la ruta un os se leen antes y otros despu és. Según el sistema
operativo las rutas son:
Si ejecutamos MySQL con el parám etro -vdefaults-extra-file, pod emo s indicar la ruta a un
archivo de configuración person al, que le leerá MySQ L tras los archivos globales de configura ción .
[1] Solicitar la contrase ña act ua l del usuario root, en la mayoría de instalaciones, por defecto
roo t se instala sin contrase ña, lo que supone un grave prob lem a de segur idad.
[4] Eliminar la base de dato s test, a la qu e tiene acces o cua lquier u.suario. Incluso los usuarios
anó nimos podría n crear bases de datos que empiecen con la palabr a test.
[5] Prohibi r el acces o a usuarios desde sitios remotos. De esta forma solo podremos conectar
a la base de dato s desde el servidor en el qu e se enc ue ntra la pro pia base de datos, lo cual
supo ne un a me dida de segur idad muy inte resa nte para evitar ataques. Esta opción solo
tiene sentido si Apache con PHP y MySQL están en el mismo servidor, de otro modo desde
PHP tampoco podríamos conectar con la base de datos.
[6] Refrescar la base de dat os para que las opciones elegida s fun cionen instantán eam ente.
En Windows no existe este script tal cual, pero sí hay (den tro del directorio bin) un archivo lla-
mado mysqLsecure_installation.pl crea do en len guaje PerloPara poder ejecutarle necesitamo s
instalar prime ro un intérprete de lenguaje Perl, el más popular para Windows es Strawberry Perl.
Para instalar Strawberry Perl, bastará con ejecutar el archivo de ins ta lación descargado desde
la dirección http://str awb err vperl.com /y, un a vez instal ad o, desde la línea de comandos de
Windows, invocar a mysqLsecur e_inst allation.pl. Las instrucciones qu e aparecen son iguales a
las del script del siste ma Linux.
Se trata de paqu etes de software que instalan fácilmente Apac he y PHP (e incluso MySQL y
otro softwa re interesante). No solo instalan el software, ademá s lo dejan pr econfigur ado para que
funcio ne dir ectam ente.
No obstante, todas las soluciones completa s se pu eden persona lizar y configura r perfec-
ta mente , ya qu e se pued e aplicar todo lo apre ndido sobre la con figuración de Apache , PHP y
MySQL en los apartado s ante riores .
2.7.2 XAMPP
Se trata de la instalación más popular de estos servicios. Es multiplat aforma, funciona para
Windows, Linus y OSX. Instala Apache , MySQL, PHP, ph pMyAdmin, Perl, e inclu so un servidor
FTP (FileZilla), otro de Java y otro de correo, además de otras muchas herramientas (por ejemplo
O pen SSL), lo que la ha ce muy versátil. Normalmente no n ecesitaremos in stalar tanto.
Desde la página (que está en espa ñol) disponemo s de los en laces de descarga del sistema y de
la documentación para realizar la instalación y configuración del software.
UN IDAD 2. PREPARACiÓN DEL ENT O RN O DE TRABAJO 85
Figura 2 .10 : Págin a de desca rga de XAMPP en la dirección https://I\ ww.apachefricnds.or g/es/
Suponiendo qu e hemo s descar gado la versión con instalación , los pasos par a in stalar son los
siguientes :
[1] Desca rgar el instalador
[2] Ejecutar el instalador y seguir los pasos del asistente. En el segundo paso se nos reque -
rirá que elijamos los componentes a in stalar (véase Figur a z.rr), No necesitamos instalar
todo, aunque tampoco pasa nada si lo hacemos, ya que los servicios relacionados con cada
componente podem os act ivarlos o no según deseemos. Lo imp rescindible es Apache, PHP
y MySQL. Conviene también in stalar Perl para poder ejecutar el script de seguri dad de
MySQL y muchos programadores in stalan phpMyAdmin para facilita r la gestión de MySQL.
[3] Hay un paso en el que se nos anima a informarnos sobre lo que la empresa Bitnami nos ofrece,
que concretamente es la posi bilida d de integrar un CMS (Drupal, Wordpress, Iooml a, etc.)
en nuestro sistema. No es en abso luto imprescindible, pero pue de ser interesante.
[4 ] Al final de la instalación, lo normal es qu e salte el cor tafuegos de Windows (si est á activado )
e indiquemos que permitimos el acceso de Apache a nu estr a red. Si tenemos un cortafuegos
personal hay que tener en cuenta los pu ertos que necesitamos abrir.
86 IMPLANTACiÓN DE APLICACIONES WEB
[5] Al final de la instalación XAMPP hab rá crea do un directorio en la raíz del disco duro princi-
pal (norma lmente ct vxampp) y un gru po de programas en el menú de Inicio llam ado XAMPP.
[6 ] Bien desde el directorio principal o desde el gru po de pro gramas, podem os acceder al cua -
dro de control de XAM PP desde el qu e podremo s parar o iniciar los servicios deseados y
mo dificar la de configuración de todos los servicios instalados.
G Setup
Select Components
Select the components you v.oant to lnstall; dea r the components you do not went to install. Clid<
Next when you are ready to conbnue .
8 [Z] Se"",-e'
IZ "~::c e
IZ MySQL
e
=
¡
FileZilla FTPServer
f""erQJ~Y rv1ail server
Tomcat
E, [{j ~T'::7.la""ºJagt~
-:z. ?;..¡~
;- Perl
8 0 ~.; "e "': ' L;n;J,:. ; t $
c::::: php.'~ yAdmin
e \'l ebahzer
I 'tttZit
[2] Desde la conso la acceder al direc torio en el que he mos descargado el archivo y mo dificar
sus perm isos con el comando:
[4] XAMPP estará instalado en el directorio joptjlam pp, desde ahí accederemos a to dos sus
servicios.
[5] Para arra ncar ta nto Apache como MYSQL haremos uso de:
- - - - - - - - - - - -- - - - -- - - - - -- . -- . , ."'!..~
Las páginas web se deben de colocar en el directorio htdocs dentro de la raíz de instalación de
XAMPP (no esta rá dentro del directorio apache).
1 j MySQL
-¡ FileZilla
__-1
errores en ro'o)
Figura 7.. 12: Panel de control de XAMPP desde el que se puede co nfigurar todo el funcionamiento de los serv i-
cios y servidores in stalados
En la Figura 2 .12 pod emos observar las posibilidade s qu e ofrece el panel de control de XAMPP.
Se detallan a contin uación los elementos má s interesantes del pan el:
• Lista de servicios. A la izquierda del panel aparece la lista de servidores instalado s, junto
con su estado de funcio namiento; si están de color verde es que está n func ionando
ah ora . Además se no s indica los puerto s que ocupan y sus números de proc eso (PID).
• Botones de arra n que y parada. Start y Stop, permiten arrancar o deten er el servicio .
88 IM PLANTACi Ó N DE APLICAC ION ES W EB
Botones Service. Permite instalar el módulo (Apache, MySQL, etc.) como servicio de
Win dow s. Esto permite que el servidor arran que automáticamente con el arranque del
sistema.
Botones Config. Nos permite acceder a los arc hivos de configurac ión de los servicios
instal ado s. Es decir, desde ese botón accederem os al archivo httpd.conf de Apache , al
php.ini de PHP o al my.ini o my.cnf de MySQ L
Botón Logs. Permite acceder a los archivos de regist ro (lag) de cada módulo in stalad o.
• Botón Config, con dibujo de llave inglesa. Permite realizar de form a sencilla la mayoría
de accion es de confi gur ación básicas sobre el softwa re in stalad o.
Entre ellas:
Ind icar el edito r predeterminado para abrir los archivos de configurac ión.
Normalmente aparece el bloc de notas (notepad) pero se puede elegir otro editor más
avanzado qu e te nga mos en el siste ma .
Indi car qu é módulos arra ncan automá ticame nte cuando abramos este panel
(Autostart of modules)
• Cambiar el nombre de los servicios y pu ertos, de cada módulo instal ado (Service a nd
Port Settings). Indudablemente es la opción m ás importante de este panel.
11 Botón Shell . Abre una ventana de term inal ya situada en la raíz de XAMPP para ejecutar
los comandos que nos pare zcan convenientes.
Botón Explorer . Abre una ventana de navegación sobre el dir ectorio raíz de XAMPP.
En todo caso, si sabem os manej ar Apache, PHP y MySQL (con lo visto en los apartados ante-
riores de este te ma) con XAMPP todo funciona igual, por ejemplo en una instalación Linu x, este
comando:
U N IDAD 2. PREPARACiÓN DEL ENTORNO DE TRABAJO 89
Arrancaría Apache igual que en cualquier instalación sin XAMPP. La única diferencia está en
la ubicación de los directorios. Así desde la raíz de xam pp qu e sue le ser c:\xam pp en Wi ndo ws y
joptjlamp en Linux, se enc ue ntran los siguien tes direct orios:
• bin y sbin . Solo en el caso de Linu x. Contienen todos los ejecutab les de los ser vicios
insta lados : httpd, mysq ld, php , mysqi secureodmin , htpasswd, etc.
Las contrase ñas y nombres de los usuarios adm inistrado res de servicio s como ProFTP,
Merc ury o FileZ ill a, si h emos in stalad o esos servicios, son conocid os ya qu e XAMPP usa
la configuración por defecto.
Todos estos problemas po de mos arr eglarlos co n lo visto durante el tema. Pero también po de -
mo s acce der a la dir ección localhostjsecurity desd e el navegad or o bi en ejecutar e! co mando
sudo l op t /l ampp/l ampp securi ty , donde un asistente nos ayu dará a pa liar estos problemas.
Recientemente XAMPP ha a ñadido una med ida de seguridad : qu e so lo pue da acced er a las
páginas de administraci ón de XAMPP desde e! ordenador local.
90 IMPLANTACi ÓN DE APLICAC IO NES W EB
...
2.8 PRACTI CAS RE SUELTAS
Práctica 2. 1: Insta lación binaria de Apache en W indows
[2] Descomprim e el archivo en el directorio C:\Apache24 , de esa form a Apache funcionará sin
configura r na da. Si queremos rea lizar la instalación en ot ra ruta habr á qu e modificar los
archivos de configuración de Apache.
[3] Descarga la versión r edistribuible de Visua l C++ para Visual Studio 2012 (es decir : VCn),
desde http :/ /www .apachelounge.com /download / :
- - - - - - - - - - - - - -- -~ - ~
Setecc or a en
«ncrne ESp3ñcl
Los paq uetes red ist ribuib les de Visual C+ + instalan co mp one nt es en
tiempo d e ej ecución necesario s para ejecutar ap licaciones de C++
cread as con Visual Stud io 2012.
- Actualizaciones
para PC gratuitas
Figura 2.13: Págin a de descarga del Visual e H Redistr ibu table, componente imprescindible para qu e funcione
la instalación de Apache en Wind ows.
[4 ] Tras hacer dic en el botón Descargar, un a segunda págin a nos mu est ra qu é versión desea-
mo s bajar. Ahí es donde elegimos la versión de 32 o 64 bit s (también hay disponible un a
versión para máquinas con pro cesadores ARM), para esta prácti ca descargamos la versión
de 64 bit s.
U NIDAD 2. PREPARACiÓN DEL ENTO RNO DE T RA BAJO - PRÁCTI CA S 91
o
Elige la descarga que quieras
No m bre del archivo Tamaño
Resumen de la d escarga:
6.9 L' E:
..
Tamaño tota l: 6.9 MB
Figura 2.14: Elección de la versión a instalar del Visual Studio CH Redistributable. En la imagen se ha selec-
cionado la ver sió n de 64 bit s
[5] Instala el software Visual Studio CH descargado. Bastará con ejecuta r el program a de ins-
talación y seguir los paso s.
í ~ 1 nstaIeoon
-- d e M-«rose ft Viu ue I C .. t ib uta ble (x64)
20 12 Re diI>n - 1= 1
i
I
I
I
D4 M icrosoft Visual C + + 2012
Redistributa ble (x64) - 11.0.61030
TÉRMINOS DE LICENCIA DEL SOFTWARE DE MICROSOFT I~
I
MICROSOFT VISUAL c+ + 2012 RUNTIME LIBRARlES
I
Los presentes términos de licencia son un contrat o ent re Microsoft
I 0r¿;.~·~p.!:~::I~_~::~:~:~~:[~~_!L.~~:ª!i:f~~~~~::ª:~}[S:~~~~!~l
!
Corporation (o, en función del país en que usted resida, una de las
_. _ : • .1 _.1 _ _ .1. _.. _ _ .. __ , .. . . .... . .1 ,.. .._ . ___ ' _ _ _ 1 __ .1 . ... _ _ , .1 _ _ _ _ _ ... ""' _ _
"- -
I [ )nstaWj1 kerrar ¡
!, ,
[6] Tras la in stalación hay qu e modificar el PATH del sistema para poder acceder a los coman-
do s de Apache dentro del terminal del sistema.
Los pasos a realizar para mo dificar el PATH son (véase Figura 2.16):
[6 .1] Vete a las propiedades del Sistema desde el Panel de Controlo pul sando el botón
secundario del ratón sobre el icono del Sistema y eligien do Propiedades.
[6.2] Elige Configuración avanzada del sistema.
92 IM PLA NTACi Ó N DE APLICAC IO NES WEB
.
~Cambl¡H
ccnf.qcrec.cn
~¿j~ ',-~ e i
Cent re de ectivid edes - - - '
Win do w~ Up d ete Grupo de trabajo : WORKGROUP
Informa ción y h errami ent as dé
rendim ien to Activación de Win dow s
Figura 2.16: Modificación del PATH del sistema para que aparez ca el directori o con los programas ejecutables
de Apac he
[7] En Windows, Apache debe configur arse como servicio. Para ello deb eremos reali zar estos
paso s:
[7.1] Desde la línea de comandos de Windows (abriéndola con permisos de adminis-
tración) ejecuta el comando httpd -k install.
[7.2] Aparecen mensajes indicand o el resultado de la acción. Si aparece el texto The
'Apachez.q' service is successfu lly installed , es que el servicio está correctamente
instalado .
Puede aparecer un error con el texto httpd: Could not reliably determine th e
server's fully qualified domain name, ... Set the 'ServerName' directive globally to
suppress th is message que simplemente se refiere a que no hemos indicado un
UN IDAD 2. PREPARAC iÓN DEL ENTORNO DE TRABAJO - PRÁCT ICAS 93
Figura 2.17: Coma ndos iniciales en Windows para lanzar el serv idor Apache
[8] Pru eba que Apache func iona correctamente desde nuestro navegador favorito escribiendo
la dir ección: httpr// Iocal host. Si to do sale bien , veremos la famosa página inicial de portada
del servi dor de Apache con el texto It work s!
[J lcce lhost x
+- e D localhost
lIt works!
Figura 2.18: Com proba ción del fu ncionam iento del servidor. Si aparece esta imagen , la con figuració n es
corre cta
Se trata de la instalación reco men dada cuando deseamos tener to do el contro l sobre Apache .
En entornos de producción es la habitual. Estos son los pasos que debes hacer:
[1] Actua liza los repositorios. Hay varias acciones a tom ar que tiene n qu e ver con in stalar
librerí as. La form a habitual de instalarlas es mediante el comando de in stal ación de paqu e-
tes , el cual acud e a un repositorio para bu scar el program a de in stalación. Por eso con viene
te ner al día los paquetes in stalados . La form a es:
En el caso de encontr arnos en un servidor Linux en modo cons ola, pod emos descargar el
código fuente de la versión 2 + 12 de Apache mediante el comando :
1 t .. - t,l
,$ wget http://ftp. cixug . es/apache/ /httpd/httpd-2.4.12 . t:a.r : g~ . _ _ 1
\.. ocwotceo . The Apa...
•e
Subprojects Apache HTTP Server ZA.12 (htlpd): ZA.12 is tite Ialest avaRableversion 2015-01-29
• D:):::s The Apache HTT PSe rver Project 15pleasec te an<lO'Jrce the release 01version 2.4.1 2 01{he Ap ache HTTP Server ( ~Apache and "hrtptí "}. 'rtus versión ot
• ItlJ Apache15 our laresr GA release 01 the new generauon 2.4.X branch 01Apache HTTPD ano represemsfifleen years 01 mnovauon by the projecr.and 15
. 2QQQ
recommendedover all previous retesses!
• !.l.tari!Ji
• ¡,~~)[Jl(s
• ClfLd_!Ull~
• mop 7;r; • Source : trrr&2.412.tal.!J.f.2 [ ~..2) [ ~ . '.D 5 ] ¡ S'-{"'~ )
• O'h?! fe''''<.
For details see trie Q1llQ,.í.L6n!lQ.1l[lrf~'''"n¡ ano the CH4~~SES 2-.2or condensen ~;;HhN~_2.2_2~ lisis
Add-In modul es 101 Apach e 2.0 are n01compa tible wth Apache 2.2. If you are runnmq third parry add-m modu les. yo u mUS I obtem modules compiled or
updated ter Apache 2.2 Irom that thud party. befare you attempt 10upg rade frorn rhese ptevious versions . Modules comoueo Ior Apache 22 should
contmue ro work 10T al! 2.2 .x releases
Figura 2.19: Página de descarga de Apache, se resalta la instalación med iante código fuente de la versión 2 -4- 12
en form at o comp rimido tar.gz
$
rm.
L __ httpd-2.4.12.tar.gz
._, _, ~ • ._~~ ~ _ .. _
[4] Ins tala las las librerí as de com pilación . Puesto qu e estamos realizando una instal ación
que requiere compilar el código, se necesita que esté n instaladas las herramientas de com-
pilación de lenguaje C y C++. Es muy posibl e que este paquete ya esté instalado ; sino es así,
necesitamos in stalar los paquetes correspondientes.
UN IDAD 2. PREPARAC iÓN DEL ENTORNO DE TRABA JO - PRÁCT ICAS 95
En el caso de los Linux de tipo Debian (como Ubuntu o Mint) se puede hac er (usando privi-
legios de súper usuario) mediante:
~~ - ~. ~ ~ - _. ~ • r - . - ~ - - r - . ......... -........ - ••• ""-' - ~.. - •• --- - "'""t'"
En Linux de tipo Red Hat no existe ese paquete, por lo que se haría mediante:
Podría ser necesario te ne r los repo sitorios al día, para lo cual, antes de estos coma ndos,
te nemos que ejecutar apt-get update (en el caso de Debian) o yum check-update (en el caso
de Red-Hat).
[5] Instala las librerías APR y APR-Util. Son las librerías Apache Portable Runtime, disponi-
bles en la dirección de Internet http://apr.apache.org/downl oad.cgi.
Si no están instaladas (que será lo normal) hay que realizar la descarga yendo a la dir ección
http://apr.apache.org/download .cgi
• JU1H'C! JI UIJ
Integnn' of the do wnloa ded files using slgnature s downloa ded fro m our ma ín distrtbution dire etory.
• ~Iailing Lists
• Build on Wjn32 Only eurre nt re eomm end ed r elea ses are availa ble on the ma in distr ibutio n site and its mir rors. Older re leases
• Bu ild OH Unix a re ava ilab le fr om the iliclJ i\'e download s'te.
Down load t
• fro m a mirro r
The eurrently seleeted mirror is http: //ftp.eix ug.es/apaeh e/ . lí you eneounter a problem w íth this
APR Do es mírro r, please sele et another mirror. Ir all mirr ors are fail ing. there are backup mirror s (at the end
of the mirrors list ) tha t should be available.
• Version 1.5
• Jrunk (dev) Other mirrors : ~~:I(ftp.(ixug~sj~p a(hel ~ chang~
APR· util Do es You mal' al so eon sult the complete bst or mírro rs .
• Ver sioD 1 5 APR 1.5.115 tite best avallabJe version
• 'Irnnk (dev)
APR is the ba se portability libra ry.
APR·iconv Does
• Uníx Source: - r- .S.. tar. z
• VerSlOl1 l .:? • Unix Sou rce- e r- .C>. . a [PGP] [ ~
• Tm nk (d ev) • Win32 Souree: ilpr· l. 5. I·win3 2-src.zip [ffiE ] [ ~JD 5 ] [SHA1J
Guidelines • Orher file>
1 . 1"
• Proiect Guidelines
• .contributing
• Ver sion Kmllbers
MIseellaneous • Unix Souree <I.P.T..:.ljJl..:.....,'L _,ta. .al ---.l:l [:ill25 J
• Unix Sou re e: ap r·u u- .C>• • er.oz.: [PGP] [ ~ 1D 5 1
. ~ • Windows Sour ee: aor-util· 1 5.4-win32·src .zip [PGPl [:ill25]
• SpcuriIJ ' Repon< • Other files
• Pro jpcts using .-\PR
• Sponsors. APR iconv :L2.1 is lhe best avaIabJe vllfSion
Am bas librerías se deben colocar en el directorio srclib den tro del código fue nte de Apache .
Se detallan a continuación los pasos para instalar estas librerías desde la consola:
[5.1] Descarga los archivos con el código fuente de APR y APR-util (véase Figura 2.20) .
Si, para ello, utilizas el comando wget desde la consola, el comando para descar-
gar las versiones 1.5.2 y 1.5-4 de las librerías sería el siguiente:
96 IMPLANTACiÓN DE APLICAC IONES WEB
wget http://ftp.cixug.es/apache//apr/ápr-1.5.2.tar.gz . .
[5.2] Descompr ime ambos arc hivos, por ejemplo co n los coman dos:
.
~ - - - ~ ,~- - - -;- .. ,......... • • • ~
..'
o - - -\":{ -- • - - - .~i~7
'l
;$ tar vzxf apr-util-1.5.4.tar.gz 'J
1$
1 rm apr* . gz . ' - . ¡
~
Tras la ejecució n del có digo an terior, se crearán los direct or ios apr-t.s.t y apr-
ut il-t.s.q. Ade más se borran los arc hivos or iginalez tar.gz.
[5. 3] Mueve ambos directorios de ntro del directorio srclib, que se encuentra en el
directorio con el código fuente de Apac he. Si sup one mos que ta nto las librerías
APR como el código fue nte de Apache se descomprim ieron en el m ismo dir ecto -
rio y que el dir ect or io de Apac he se llam a httpd-z.q.iz ; los co mandos so n :
' $ mv !3pr-1.5.2/ httpd-2.4.12/sicÚb/~pr· , . . . ' ..... ,~
l_~. ~~_~pr-~~_~ ~::-J :?~. ;Y _h:ttP.9:-_?..:..!:..~~/~~sUb/~p'~::::.uti.!.. _ _~ ·__ ]
[6 ] Instala de la librería PCRE. Ade más de las librerías anteriores, necesitamos inst alar la libre..
ría de expresiones regul ares de Perl , disp onible en http ://p cre.org y m ás có moda m en te en la
página de descargas SourceForge h ttp ://sourceforge.net/proj ects/pcre/ files
--. .-
"' _
---- - - - -., -
. ..... .. .
":'.':
...;.;¿:"""", "-/ ."--.... - '::.J - "
GET ALL TO OLS YOU NEED FOR FREE . .... .~.:: : ' " ,-
-----
PCRE
PERL 5 regu lar expressio n pat tern matching
8ro ugh t to you by. mlSh_th €_" sh
Look ing te r the lat est v ers i ón? Down loa d pcre2 - 1 0 . 0 0.zíp (1.9 MB)
Horrre
Do wnlo ad s I
Name ~ Mo d ifie d ' S ize >
w e ek e
Tot al s : 2 It e m s
Versión a desca rga r
AUTOMATICALLY
Fig ura 2.21: Página de descarga del paquete PCRE
UNIDAD 2. PREPARACiÓN D EL ENTO RN O D E T RA BAJO - PRÁCTI CAS 97
--with-included-apr .
Mediante la ejecución de este coman do pr eparamos la in stalación de Apach e en la ruta j usrj
local/apaches , in dicamos qu e permitiremos a ñadír módulos a la configuración de Apache
(pará me tro -ven able-s o), qu e la libr ería pcre (ins ta lada en el paso anterior) se encu en tra en
la ru ta ju srjlocaljpcre y qu e esta mos incluyendo el códig o de la libr ería apr (com entad a en
el paso 4).
Para hacer que los camb ios en los archivos de inicio (jetcjprofile .bash_ profile, etc.) se ejecu-
te n al instante, se pu eden lan zar con el comando sour ce. Por ejemp lo:
f$. su~o source /etc/profile . . ' .. _~~:~j
[10] Lanza Apache.
,----..,.,---_.. -_. -- ----------.,--_. --~-----_ ~ .. . .- . , ....
t$ httpd -k start -. ..'. , ¡.;:;
[11] Prueba la instalació n en el navegador que deseemos introdu cien do la dirección
http://lo calhost. Si todo sale bien verem os la famosa página inicial de portada del servidor
de Apache con el texto It works!
Para reali zar esta prácti ca, partimos de que tenemo s Apache in stal ado en Windows y funcio-
nando correctamente. Supondremos que lo hemos instalado en el directorio e:\Apache 24 como
se sugiere en la Práctica 2.1 "Instalación binaria de Apache en Windows", en la página 90 , Los
pasos que debes rea lizar son:
[1] Comprueba la versió n instalada de Apache . Lo cual se hace simp lemente con el comando
httpd - v :
: , Use¡'s >h t t p d -u
Seruel' uel'sion: RpacheI"2.4.12 <IJin64>
ApacJ.e Lounge UC11 Seruer built: Mar 20 2015 11:22:29
G:'Us el's >
En la imagen superior se indica que tenemos la versión 2.4.12 de Apache en 64 bits y com-
pilada con la versión VCn.
[2] Com prueba que tenemos ins talado el software Visual C++ Redistributable para Visual
Studio. Lo lógico es que est é ya insta lado , porque es un requisito previo para implem en tar
Apache. De no ser así, tendremos que descargar e in stalar ese software.
[3] Descarga el archivo ZlP comprimido con los arc hivos de PHP de la dirección
http: //window s.php.n et /download. Descargaremos la versión Thread Safe qu e es la apro -
piad a para Apache en Windows (observa la Figura 2.6, página 71). El resto depen de de
UN IDAD 2. PREPARACiÓN DEL ENTORNO D E TRABAJO - PRÁCTI CA S 99
nuestra versión concreta de Apache, si hemos instalado Apache siguie ndo los pasos de la
práctica Práctica 2 .1 , debere mos descargar la versió n Thread Safe de 64 bits y de tipo VCu .
[4] Descomprime los binarios en la ruta Civphp, Por su puesto, podríamos elegir otra ru ta, pero
en el resto de apa rtados harem os referen cia a esa ru ta como raíz de PHP
[5] A ñade las rutas Crvph p y c.vph pvext a la variable PATH del siste ma (el proceso para cambiar
el PATH se explicó en la págin a 91).
[6] Copia el archivo php.ini-developrnent de la raíz de PHP y renombra la copi a con el nombre
php.illÍ.
[7] En el archivo php.ini creado anteriormente, busca y modifi ca o a ñade (si no existe n) estas
lín eas:
dis p lay_err ors = On
exte ns i on_d i r = "./ext"
exte ns ion=php_mysql .d ll
exte ns ion=php_mys q l i . d l l
[8] Edita el archivo de configura ción (no rma lme nte httpd.conf) de Apache y a ñade o modifica
estas líneas:
PHPlniDi r "C : /p hp"
LoadModule php5_modu le "c : /php /p hp5apache2_4 . d l l"
<Fil esMatch \ . php$>
SetH andl e r application / x-httpd-php
</Fi lesMatc h>
[11] Desde el navegador, arranca r Apache y escr ibir la dirección http://localho st / pru eba.pjw
[12] Comprobar que aparece la página de información de PH P.
Práctica 2.4: Inst alación de PHP medi ant e cód igo f uente
en Linux
SOLUCiÓN: PRÁCT ICA 2.4
Esta es una práctica coherente con la Práctic a 2.2. Así conseguiremos una in stalación com-
pleta de Apache con PHP que permite su total personalización.
100 IM PLANTACi ÓN DE APLICAC IO NES W EB
Com o en todas las instalaciones mediante código fuente, po demo s recompilar el código las
veces que estime mos convenientes. Estos son los pasos qu e has de realizar para este tipo de
in sta lación :
[1] Descarga el archivo com primido con el código fuente en form at o tar.gz, disponible en la
página http://ph p.net/dow nloads.ph p. Desde la cons ola po dríamo s hacerlo con el coma ndo
(descarga mo s la versión 5.6.8 de PHP ):
f$ ;g~t -~O-php5~;r~~"-http-:-/ / es1 . p-hP. net/ get/php-5~ 6 '.'8" .-t~; .g~/ from/ . . ~
¡ i;-h ~ s /m i rror . . . _ ..,,_. __ .. __... :
Observa que en este caso al archivo descar gado le hem os llam ado phps.tar.gz (de otro modo
se llam aría mirror).
[5] Entra en el directo rio en el que están los archivos, ya descomprimidos, de PHP y ejecu ta el
siguiente comando:
· -
'"' ./conñgure --with-apxs2=/usr/local/apache2/bin/apxs .
, --with-mysql --with-mysqli
~ _ --pre~_=/us~/ !~~~ ~(e~¡:> . __ ._.. .. _.. '
Este coma ndo sirve par a configur ar la in stalación . Hay que indicar dónde está el directorio
apxs, que estará dentro del dir ectorio bi n en la raíz de Apache.
La opción --w it h-mys ql y --wit h-mysqli permite compilar el código con sopor te para las
librerías mysql y mysqli de acceso a MySQ L. La opción --prefix permite elegir dónde se rea-
lizará la instalación (si no se usa prefix , también se in stal a en j usrj loca ljph p).
'"' make
1'"' make instal1
UNIDAD 2. PREPARACiÓN DEL ENTORNO DE TRABAJO - PRÁCT ICAS 101
[7] Vete al directorio con el código fuente PHP. Copia el archivo php.ini-development y llamada
a la copia: jusrjlocaljphpjlibjphp.ini:
I'~ . ~ ~-", ' .P - _. r--< - ....- - - , "'---:' .~ -~ - .. --- "--r-7'~;"",--~~"""~("'lO:; A • • ',I -- .~.
[8] Modifica (o a ñade si no estuvieran) estas líneas en el archi vo gen eral de configur ación de
Apache:
[9] Si estamos en una versión de Linux (por ejemplo un Linux tipo Red Hat Enterprise) en el
que esté act ivado el paquete SELinux, ejecuta el comando :
r _. . . - - - --- - --~,
:#
,
chcon -t textreLshlib_t ' . . :,
: /usr /local/apache2¿m09ul_e~libphp5.50 ._ . ,
[10] Reinicia el servidor Apache (puede ser necesario incluso rei niciar la má quina)
r
L!..!'_~~pd -k r~~tar~_ _ __.. . . oo ,. __ ••• oo . __ oo •
[11] Crea en la raíz de documentos de Apache Vusrjlocaljapache2j htdocs) el archivo pru eba.php
con este contenido:
<?php
phpi n fo() ;
?>
[12] Desde el navegad or, arra nca Apache y escribe la direcc ión http ://localho st /prueba.php
Seguimos los siguie ntes pasos par a ins talar MySQL en nues tro en torno Windows.
[1] Vete a la dir ección http://dev.l1w sql.com/downloads/mysqll. Si hem os realizad o las prác ti-
cas de in stalaci ón de Apache y PHP en Windows: Práctica 2. 1 y Práctica 2 .3, además podr e-
mo s cone ctar MySQ L con PHP. Se pu ede descargar la versión de MySQL de 32 o 64 bit s,
pero es más recom endable in stalar la versión de 64 bits.
Tras pul sar ese bot ón un a segunda pantalla nos pedirá darnos de alta como usuarios (o
introducir nu est ro usuario y contrase ña si ya esta mos dado s de alta) o bien hacer clic en el
texto el texto "No thanks, j ust start my download" para inici ar la descarga inmediatam ente.
[3 ] Copia el archivo my-default.ini situa do en C:\MySQL y deja la copia con el nomb re my.ini
en el dire ctorio raíz de Windows, cuya ruta será %WIN DI R%).
[4] Modifica el archivo my.ini para qu e tenga estas líneas:
[ my s q l d]
# ruta a la raíz de i ns t a l a c i ón de MySQL
basedir=c: / mys q l
# ruta al directorio de datos de MySQL
datad i r =c : / mydata /data
Tras este coma ndo (si la configuración está bien ), se quedará la cons ola con el mensaje:
Version: '5.6.24 ' socket: " port: 3306 MySQL Community Server (GPL) (suponiend o que
hemos instalado esa versión de MySQL). El servidor MySQ L está lanzado y escuchan do por
el puerto 330 6, el habitual para MySQL.
:#
t
wget -o rnysql . tar . gz
" .
.,'.
•
.' ¡:". .
l'
.' '"
:
L!lt:..'t:.P : t/~'y_: my~g ~-: c~~¿geYD~wn l o?lds!.MXSQL-5 . 6/mysq l -5 . 6..: 2~-= l i n_u~.=.g~~~~g~.~:.
En el caso in stalar la versión MySQ L de 64 bit s, la ruta cambia:
I - . --- - -_. . - . --:-------.--- - _ ...--.... - - . - - - - - - - - - - - - - , - ------
i# wget -o rnysql. tar .gz . .
, ~tt~ : //~~y. . ~~~q l : co~/get/Down l oads/MySQL-5 . 6/mysq l -5 . 6 . 24~ l i nux~g ~~~? ~~x_~-64~t~~z~
En ambos casos tendremos un archivo llam ado mysql.ta r.gz resultado de la descar ga
[5] Indica el usu ari o y gru po propiet arios de la in stalación. Podemos crear un usuario o ut ilizar
uno ya existente.
[5.1] Si queremos crear un nu evo usuario para controlar MySQL. El usuario se llama rá
asir y el grupo rnysql:
- • - ~- -.- .~ ~"O'll
[6] Otor ga la propiedad del dir ect orio al usuario root del siste ma y al grupo crea do anterior-
mente. Además el directori o de la base de datos (data) será propiedad del usuario asir, que
se su pone será el encargado de lanzar el servidor.
[8 ) Lanza por pr im era vez MySQL. Es importante que lo hagamos sin ser el usuario roo t del
sistema op erativo. Ir al directorio bin dentro del directorio de insta lación de MySQL y eje-
cutar el comando:
La ventana de con sola se queda esperando a que fina licemos el pro ceso
[9) Com prueba el funciona miento de MySQ L. En otra ventana de conso la (con el mismo usua-
rio asir), ejecutar:
r~ --,----. -, _._.., -~-_. :---.,.---.,.,,- -.. . . . --- ...... -----~-.,..,.-~ ....... -... :
.!$ /usr/local/mysql/bin/mysqldadmin
- .. ...version . . '. :~
[11) Mo difica la configuración de MySQL. Para ello, edita el archivo de configuración jusrjlocalj
mysqljmy.cnf
. . .. . .... .. . _ .. oo.. • . _ . . ..
[13] En la primera ventana de cons ola ejecuta el comando, qu e esta y las sigu ientes veces, per -
mitiría lanzar el servidor MySQ L:
~ $~i ~';';;y sq 1 ¿- - .- --- . - _.- .. ----.--- - - -. -
I • • ~
[14] Prueba la con exión des de la segunda ventana. Conecta como root de la base de datos :
I - - - ~ .-. _ . - --.-------
[17] Asegura la instalación ejecuta ndo la utilid ad rnysq l _s ecu r e _in s t a ll at i on. Para ello
seguimos esta secuencia:
:$ cd . ¡u-s;:/l~~aÍ¡mysq-l - - ---., - - -.--: --- --. ----- ----.--.. ~'----r-~---:
I
[17.2] A contin ua ción se nos indica si qu erem os elim inar a los usuarios anó nimos.
Escribimos Y (yes) para eliminarlos.
By default, a MySQL installation 'has an anonymous user,
¡a l l owi ng anyone to log into MySQL without having t0 1
[17.4] Se nos permite elim inar la base de datos test , elim inando cualquier acceso ind e-
bido a ella.
106 IMPLANTACiÓN DE APLICACIONES WEB
[17.5] Finalmente nos pregunta si deseamos que las acciones se lleven a cabo inmedia-
tamente. Lo lógico es aceptar escribiendo Y.
[18 ] Edita el archivo php.ini (que estará por ejemp lo en jusrj localjphpjlibjphp.ini) para asegu -
rarnos de que existen las siguientes líneas (lo normal es que aparezcan come ntadas y que
simpleme nte debamo s quitar el punto y coma qu e encabeza la lín ea):
extension = php_mysql.dll
extension = php_mysqli .dll
[19] Crea la página prueba_mysql.php en la raíz de documentos de Apache (la rut a habitu al será
jusrjlocaljapache2jhtdocsjprueba_mysql.php) y escribe este código:
<7php
$con=mysql_connect("localhost" ,"root","libro-iaw");
if ($con) echo "Conexión correcta";
else echo "Conexión incorrecta";
7>
Si tras ir a la dirección localhostjprueba_mysq l.php aparece el mensaje Conexión correcta.
Tendre mos ya lista una instalación a medida de Apache, PHP y MySQL.
Suponemos instalad a esta versión de Ubuntu. Lo ideal sería que tuviéramos la versión Server,
que funciona por defecto solo en modo consola para optimizar las labores de servidor. Suponemos
que estamos conectados al sistema con un usuario normal, pero que tenemos posibilidad con el
comando sudo de pasar a usuario superadministrador. Estos son los pasos:
[1] Actualiza los repositorios de Linux.
1$ sudo apt-get update ~ ,
. - - - . - -.
[2] Instala de Apache:
---_. __ . - - -- - -~ ---- - - - - - - - - - - - - ---_._--
.
$ sudo apt-get
_ _ _ _
~
insta!!
__o
apache2
. .0--- • •_ __ _ _. _
UN IDAD 2. PREPARACiÓN D EL ENTO RN O DE TRABAJO - PRÁCT ICAS 107
[3] Nuestr o servido r web funcion ará por defecto por el pu erto 80. Prob amos a acceder al servi-
dor por el pu erto 80 desde un navegad or. Debería aparecer la págin a de portada de Apache
sobre Ubuntu con el texto Apaches Ubuntu Defau lt Page.
[4] In stala MySQL:
$- ~~ci~ -~pt-get instal1 mysql-s;;r~~r- mysql-~Ii~nt'-- -- --.-----,
[ - . -. -~ - -- -- - -_.- -----_-.:.-. ..._"'---_ .. _-_._- ~ - - - ~ _.
Durante la instalación se no s pedirá la contrase ña del usuario r oot de la base de dat os. Es
fundamental poner una contraseña. Como contrase ña pondre mos libro-iaw
Se nos pedi rá la contrase ña actua l del usu ario root, introduciremos libro-iaw. Después no s
pr eguntar á si deseamo s cambiar la cont raseña, escribire mos n (No) y pulsaremos lntro,
[6] In stalar PH P:
I ._ . - . . -- - .
;$ apt-get install php5 php-pear php5-mysql
I •
[8] Crea en el directori o /var/www la págin a test.php con este conten ido:
<?php
$con=mysql _connect ("localhost", "root","libro- iaw" ) ;
if ($con ) echo "Conexi ón cor r e ct a" ;
else echo "Conexión incorrecta";
?>
[9] Accede al servidor web por el puerto 80 (le suponemos abierto) y a ñade la ruta a la página
anterior. Por ejemp lo si la IP de l serv idor es la 192.168.IO O.1, escribire mos en nuest ro nave-
gador http://192.168.IOo.1/test.php.
[3] Nu estro servidor web funcionará por defecto por el puerto 80. Prob amos acceder al servi-
dor por el puerto 80 desde un navegador. Debería aparecer la página de portada de CentOS
7 sobre Apac he con el texto Testinq 123 . Si no es así hay que examinar el cor tafuegos por si
está cerrado el puerto 80.
[4] Instala MariaDB:
Nos pedirá la contrase ña act ual; pulsaremos Intro sin má s ya que no habrá contrase ña.
Despu és n os pid e cambiar la contrase ña del us uario root, res pon deremos Y (yes) e in tro du -
cire m os como contrase ña del usuario root, el t exto libro-iaw .
A las tres pregu n tas siguientes responderemos pulsando lntro, lo cual contesta afirmativa-
m ente t odas las preg untas para aseg urar al m áxim o nuestra in stalación (ver paso 17 de la
práctica anterior).
[7] Haz que MariaDB y Apache se carguen en el ini cio de l sistema automáticamente:
.. . . . _._-- _ ------_... . _-_. -
;$ sudo systemctl enable httpd.service
1$ sudo systemctl enable mariadb.service _ ... .
[8] Reinicia el sistema
r------- - - - - - -. - - --- - - - - - - - - - - - - - - . ----- .- ._. .
$ ~~do s!lutd~wr:! _ ~r ':l~w . oo _ .. •
l
$ yum install php php-mysql
oo. •• . . _ _ oo ...... •• • _
UNI DAD 2. PREPARAC iÓN DEL ENTORNO DE TRABAJO - PRÁCT ICAS 109
.$. sudo
.. systemctl restart httpd.service .
[12] Crear en el directorio jvarjW\v\vjhtmlla página test.php con este contenido:
<?php
$con=mys ql_connect(" loca lhost"," root" ," l ibro-iaw");
i f ( $con ) echo "Conexión correcta";
e lse echo "Conex ión incorr ec t a" ;
?>
[13] Acceder al servidor web por el puerto 80 (le supo ne mos abierto) y acceder a la página ante-
rior. Por ejemplo si la IP del servidor es la 192.168.IO O.I, escrib iremos en nuestro navega-
dor http://I92.168.IOo.I/ test.php. Si la instalación es correcta aparecerá el texto Conexión
correcta.
f--:_ _ Imágen es
'------ - O t ros
• Utiliza un ordenador físico o una máq uina virtual con Windows instalado en la que dispon-
gas de dos unidades (C: y D:) de disco duro, desinstala cualqui er instalación previa de Apache
si la hubiera.
• Haz una nueva instalación Con Apache en el directorio d:\servidorweb y prueba que fun-
ciona correcta mente en el puerto 80 .
• Crea la estr uctura anterior de dir ectorios.
110 IM PLAN TACiÓN DE APLI CACION ES W EB
• Consigue que las carpetas Privado y Publico sean raices de dos servidores web virtuales. El
púb lico ate nderá por el puerto 80 y el privado por el 80 80 .Ten en cue nta la siguiente estruc -
tura de usuarios
USUARIO GRUPO
Antonio Produccion
Carmen Produccion
Henar Dirección
Pepe Come rcial
Sara Come rcial
----- -~-
• Consigue qu e solo los usuarios de la lista ten gan acceso a las carpetas privadas (ponles una
contraseñ a a cada uno ), ademá s que las carpetas de cada gru po solo las vean los usuarios de
ese gru po y las person ales, solo la person a en concreto. Finalmente las person as de dirección
pueden ver cualquiera de las carpetas en la zona privada.
• En la zona publi ca, los archivos y carpetas den tro de Monet está n disponi bles en la direcc ión
http : //www.j ~n che z .ne tl1ibro -iaw.
O tro s
/ web
Pepe
Sa ra
• Utiliza un ordenador físico o una máquina virtual con Linux in stalado (no importa la
distribución).
• Desinstal a cualquie r in stalación previa de Apach e.
• Instala una nu eva in stalación de Apache en el dire ctorio jswjapache y pru eba que funciona
corr ectamente en el pu erto So.In stala el módulo PHP en el directorio j swjphp y asegúrate
de qu e funciona.
• Crea la estructura anterior de dir ectorios.
• Consigue qu e las carpeta s Privado y Pu blico sean raices de dos servidores web virtuales. El
público at enderá por el pu erto 80 y el privado por el 808 0.
UN IDAD 2. PREPARACIÓN DEL ENTORNO DE TRABAJO - PRÁCT ICAS 111
USUARIO GRUPO
!Antonio
Carmen
Henar
Pepe
Sara
• Consigue qu e solo los usuarios de la lista ten gan acceso a las car petas privadas (ponles un a
contrase ña a cada uno), además que las carpetas de cada grupo solo las vean los usuarios de
ese grupo y las personales, solo la persona en concreto. Finalme nte las personas del grupoi
de dirección pueden ver cualquiera de las carpetas en la zona privada.
• En la zona publica, los archivos y carpetas dentro de Monet están disponibles en la dirección
http: //\v\V\V.jorgesanchez.net/libro-iaw.
• Person aliza los mensajes de error corres pondientes a los códigos de archivo no encontrado
y acceso prohibido.
• Prohíb e el acceso en cualquiera de los dos servido res a los archivos qu e te nga n ext en sión .sql
• Haz que el m en saje Forbidden que aparece cuando accedemos a un directorio sin ind ex,
se muestre el text o Contenido no permitido. Fallo en la auten tificación. Y cuan do no se
encuentre un det erm inado conte nido qu e se mu est re el mensaje Cont enido no encontrado.
• Consigue que Apache grabe en los logs absolutame nte todos los errores y warnings.
• Haz qu e el acces o al servidor privad o realmente sea privado , de modo que solo pu edan acce-
der el usuario r (contraseña 12345) y el usuarioz (contraseñ a 54321),
Para implementar una ap licación web se debe elegir el Siste ma Operat ivo, Servidor de
aplicacione s y Servidor de bases de datos en base a las necesidad es que te n gamos. El
marco más habitual sigue sien do la combinación Linux-Apache-Pl-ll's-My'i'Ql, (LAMP).
• Apache se pue de ins ta lar de diversas formas. La forma ap rop iada depende del ent orno
en el qu e est emo s. Duran te la unidad se ha instalado la ins ta lación po r código fuen te en
Linu x (las más recomendable en un ent orn o de producción), la instalación por paquetes
y la instalación mediante un ejecutable en Win dows.
• PHP se puede inst alar ta mbién de difer en tes formas: por paquetes, po r código fue nte y
m ediante arc hivos binarios co m prim idos, todas ellas se han estu diado durante la uni-
dad . El archivo php.ini es el enc argado de con figurar su func ionamiento.
El servidor MySQL (o su versión totalmente abierta, MariaDB) se puede in sta lar tam-
bién por paquetes (en Linux) o m ediante instalador (Windows).
• Hay soluciones qu e facilitan la in stal ación de todos los elem entos que, au n que n o son
las rec ome n dables en un ento rno de pro ducción, son muy cómo das par a tr abajar en la
fase de desarrollo o para el ap re n dizaje. La más popular actua lme nte es XAMPP que se
puede instalar tanto en Windows como en Linux. La instalación en am bos sistem as se
ha vist o a lo lar go de esta unidad.
114 IM PLANTACi ÓN DE APLICACIO NES W EB
lIS
b) APR-util
di LiteSpeed
L PCRE
e) No de.js
d) make
¿Cu ál es el ser vidor web más utilizado en e) gcc-c++
los sitios más populares de Internet? el gcc
al Apache
S.- ¿Cuál es el nombre del comando que per-
bi nginx
mite in stalar un nuevo paquete en el sis-
el lIS tema Ubuntu?
d) LiteSpeed a \ yum insta ll
e' Node.js b) zypper install
4.- Entre los servidores web de Internet ¿Qué pacman -S
sistema operativo es el más popular? d apt-get install
al Windows
9.- ¿Qué nombre tienen los archivos que
-,I Linux/Unix permiten establecer configuraciones de
,"\ MacOSX Apache para un solo directorio?
HPUX a) httpd.conf
e Solaris b) httpd.dir
j.- Tanto en Windows como en Linux ¿Cuál c) directory.conf
es el comando habitual para lanzar el ser- d \ .ht access
vidor Apache?
10. - ¿Cu áles de est os elementos son realmente
il \ apac he start im prescindibles en un sistema que imple-
b. httpd mente aplicaciones web?
e) h ttpd -k start a) Servidor web
d) net start apac hez b) Sistema de control de versiones
PROGRAMACiÓN BÁSICA DE
APLICACIONES CON PHP
OBJETIVOS CONTENIDOS
3.1 ¿Q UÉ ES PHP?
- Describir el funcionamiento del 3.1.1 LEN GU AJES DE SCRIPT D E SERVIDOR
lenguaje PHP 3.1.2 PH P
3.1.3 V ENTAJAS D E PHP
Describir las herramientas necesa rias 3.2 H ERRAMIEN TAS PARA LA ESCRIT URA DE
para programar en PHP APLI CA CION ES EN PHP
3.3 BASES DE PHP
En tende r los tipos de datos y el 3.3.1 AYUDA D E PH P
funcionam iento de las variables en el 3.3.2 ETIQU ETA <?PH P ... ?>
lenguaje PHP 3.3.3 HT ML USA PH P Y PHP USA HTML
3.3.4 COM ENTARIOS
3.3.5 BASES D E ESCRIT U RA
Entender y aplicar las est ructuras de 3.3.6 ESCRIBIR EN LA SALIDA
co ntro l de flujo en PHP
3.4 VARIABL ES
3.4.1 INT RO D UCC iÓ N A LAS VA RIAB LES
- Comprender el funcionamient o de la 3.4. 2 DEC LARAR VARIABL ES
recogida de datos de un formu lario 3.4. 3 ASIGNAC iÓ N DE VA LOR ES
desde una página PHP 3.4.4 VARIABL ES SIN ASIGN A R VAL O RES
3.4.5 T IPOS DE DATOS
3.4.6 REFERENC IAS &
- Crear páginas PHP sencillas que
3.4.7 CONSTA NTES
utilicen los elementos básicos del 3.4 .8 VAR IAB LES DE VAR IAB LES
lenguaje 3.4. 9 O PERADOR ES
3.5 EST RUC T U RAS D E CO NT RO L
3.5.1 SENTE NC IA CO N DIC IO NA L IF
3.5.2 BUC LES
3.6 USO DE FORMULARIO S HTM L DESD E
PHP
3.6.1 ENVío DE DATOS D ESDE UN
FO RM UL A RIO
3.6. 2 MÉTO DOS D E ENVío DE DATO S DE L
FO RM UL A RIO
3.6.3 RECEPCiÓN D E DAT OS D E UN
FO RM U LA RIO DESDE UN A PÁG IN A PHP
3.6.4 USAR LA M ISMA PÁG IN A PA RA EL
FOR MU LARIO Y LA RECEPCiÓN
3.7 REDIR IGIR HAC IA OTRA PÁGINA
3.8 PRÁCTI CAS RESUELTAS
3.9 PRÁCTI CA S PROPU ESTAS
3.10 RESUMEN D E LA UNIDAD
3.11 TE ST D E REPASO
118 IMPLANTACiÓN DE APLICACION ES W EB
Aunque esto s len guajes permiten dotar de una gra n interactividad y apariencia a las páginas
web, tienen el inconveni ente de que su código es visible, lo qu e les in capacita para mu cha s tareas;
por ejemplo no son válidos para el acceso a bases de dato s, ya qu e dejarían a la vista los datos de
conex ión . Otro in conveniente es que depen den de la potenci a y capacidades del ordenador del
cliente.
Por ello aparecieron una serie de len guajes que añaden código incru stad o en el HTML, pero
que se interpreta en el lado del servidor. A esos lenguajes se les con oce como lenguajes de script
de servidor.
La idea es qu e el cliente reciba una página HTML normal y qu e sea un servidor (que deberá
tener la capacidad de ente nder e interpret ar este leng uaje) el que traduzca el código script. Al
cliente no se le exige ningún plugin especial en el navegador; de hecho , no distingue que estas
páginas sean especiales, salvo por la extensión del docum ento que en lugar de .html será, por
ejemplo, .php.
Todo el proceso en e! lado del servidor queda oculto al usuario que en ningún momento ve el
código script incrustado, dotando al código de una capa de segur idad muy interesante.
3.1.2 PHP
Se trata indudablem ente, todavía a día de hoy, del len guaje para crear contenidos web en el
lado de! servidor más popular. Fue el primero en apar ecer, aunque realmente empezó a impo-
nerse en torno al año 2000 , por delante de ASP qu e era la tecno logía de servidor reinante hasta
ese momento.
Hoy en día se pueden ins talar módulos para interpreta r PHP en casi todos los servidor es de
aplicaciones web. En especial, PHP tiene un a gran relación con e! servidor web Apache .
PHP es un len guaje con un a sintaxis basada prin cipalme nte en e y en Perl, que se ha diseñado
pensando en darl e la máxima versatilidad y facilidad de apren dizaje, evitando la rigidez y cohe-
rencia semántica de los lenguajes clásicos. Es decir, se ha pot enciado su facilidad por encim a de!
seguimiento de reglas estrictas, propias de lenguajes más estru ctur ados, como por ejemplo Java.
Eso hace que PHP sea el len guaje favorito de miles de desarrolladores en todo el mundo y
también que sea criticado por desarrolladores proce dentes de lenguaj es m ás formal es, a los que
no les gusta esa falta de rigide z propia de la sintaxis de PHP.
UN IDAD 3. PROGRAMACiÓN BÁSICA DE APLI CA CIONES CON PHP 119
[2] Abierto y gratuito. PHP posee licencia de uso de tipo GNU , la licencia del sistema Linux; lo
que permite su distribución gratuita y que su extensa comunidad de desarrolladores mejore
el código sin depender de ninguna compa ñía privada .
[3] Gran comunidad de usuarios. La popularidad de PHP, junto con la gran defensa que de él
hacen la comunidad de programadores de código abierto, permite tener un a amplia y diná-
mica red de con sulta a la qu e acudir en caso de necesidad.
[4] Apache, MySQL. Apache es el servidor web y de aplicaciones más utilizado en la actualidad.
MySQL es el servidor de bases de datos relacionales más popular en Internet para crear
aplicaciones web (aunque poco a poco va perdiendo relevancia). Puesto que PHP tiene una
gran relación y compatibilidad con ambos productos (está, de hecho, muy pen sado para
hacer tándem con ellos), esto se convierte en una enorme (y a veces determinante) ventaja.
[5] Esta combinación unida a usar un servidor Linu x se conoce como LAMP y es la combi-
nación servidor web-servidor de aplicaciones-servidor de base de datos más popular, por lo
menos a día de la escritura de este libro.
[6] Extensiones. PHP dispone de un enorme número de extensiones que permiten ampliar las
capaci dades del len guaje, facilitan do la creación de aplicaciones web complejas.
[7] ¿Fácil? Es un punto muy controverti do . Los programadores PHP entusiastas, defienden esta
idea. Es indudable que fue uno de los objetivos al crear este lenguaje. Sin embargo, Microsoft
defiende con energía que ASP permite crear aplicaciones web complejas con mayor facili-
dad y parece indudable que el lenguaje ColdFussion de Macromedia (ahora propiedad de la
empresa Adobe) es más sencillo de aprender (aunque tiene otros inconvenientes).
Las características de PHP correspondientes a la libertad de creación y asignación de valores
a variables, tipos de datos poco restrictivos, y otras au sencias de reglas rígidas son los pun-
tos que defienden los programadores de PHP para valorar su facilidad de aprendizaje. Los
programadores de lenguajes formales como C, C++ o Java, seguramente se encontrarán con
más prob lemas que ventajas al aprender este lenguaje .
Lo que parece indudable, es que PHP es un buen lenguaje para aquellas personas que desean
crear aplicaciones web y no tienen conocimientos de programación.
1'1 Editores de código multiprop ósito , Son editores de texto especializados en crear código
fuente para diversos len guajes. Son capaces de adaptarse al tipo código escrito . Por ejem -
plo si escribimos código JavaScript el coloreado del texto se adapta a este len guaje; si
escribimos código PHP, el coloreado será distinto porque recon oce la sintaxis particular
de este len guaje.
Tiene n la ventaja de ser software m uy ligero y rápido, qu e podrí am os utilizar para otros
fines, aparte de escribir aplicaciones web; por ejemplo, edita r los archivos de con figura-
ción de un siste ma o escri bir texto puro. No in corporan mu chas utilidades para PHP,
pero en la mayoría de casos pod emo s instalar plugins y componentes para mejorar nu es-
tro trabajo en PHP con ellos.
Ejemplos de este softw are son Sublime Text , Atom, Text Mate, Coda o No tepad--r.
Hay que tener en cuenta qu e, a pesar del enorme esfuerzo que se está haciendo en traducir los
contenidos , siempre está más com pleta la ayuda en ing lés.
P
. <.>?Ph ...cód i go PHP I
1?
Una etiqueta especia l <?php se coloca do nde empieza el códi go. Esa et ique ta se cierra con
I> . El código PHP se coloca en la zona de la página web donde más nos interese hacerlo . Así un
primer documen to PH P podría ser (suponiendo que inc rustamos PHP en un documen to de tipo
HTML 5. Ejemplo:
< ! doctype htm1> .-
<ht ml l a ng=" es " >
<head >
<me t a charset="utf-8" />
<t i t l e>Tí t ul o</ti t l e>
</ head >
<body>
<?php
e c ho "Ho l a de s de PHP" ;
?>
</ body>
</ ht ml>
UNIDAD 3. PROGRAMACiÓN BÁSICA DE APLICACIONES CO N PHP 123
La página muest ra el texto Hola desde PHP, pero este text o ha sido escrito mediante la fun -
ción de escritur a echo del len guaje PHP.
ACTIVI DA D 3.2 :
• Descubre, buscan do por Intern et, qu é etiquetas se usan para in cru star código en otros len-
guajes de script de servidor como JSP, ASP o ColdFussion
3.3.4 COMENTARIOS
Dentro del código PHP se pueden hacer tres tipos de comentario:
• Comentarios de varias líneas. Utilizan la sintaxis del lenguaje C. Comienzan con ¡::: y
terminan por ::'/. Ejemplo:
<?php
1*
Soy un come nt a r io de
vari a s l í nea s
*1
$x=10;
?>
• Comentarios de una línea, estilo C++. Se ponen tras la barra doble //. Ejemp lo:
<?php
$x=10; Ile s t o es un co me nta r io
?>
• Comentarios de una línea, estilo ShellScript. Se ponen tras la almohadilla y solo tienen
efecto en la línea en la que se colocan
<?php
$x=10; #esto es un comentario
?>
124 IMPLANTACiÓN DE APLICA CION ES W EB
• Una línea de código se puede partir o sangrar (añadir espacios al inicio) a voluntad con el
fin de que sea más legible, siempre y cuando no partamos una palabr a o un valor.
• PH P obliga a ser est ricto con las mayúsculas y las minúsculas en algunos casos, como en
el nomb re de las variabl es. Sin embargo, con las palabr as reservadas del leng uaje no es
est ricto . Es decir, para PHP los términos WHILE, while e in cluso wHiLe son sinónimos,
al ser variaciones de la misma palabra reservada . Sin embargo $var y $VAR no son igua les
al ser nombres de variables.
El consejo sobre esta norma, es siem pre utilizar los nombres de la misma forma y escribir
el código preferentem ente en minúsculas. Las mayúsculas se utilizan para dar nombre
a las constantes.
La función echo es la más utiliza da y en realidad es un coman do del len guaje. Tras echo se
pasa uno o más textos (más ade lante diremos ex pres iones de cadena ) qu e cua ndo son literales se
escriben entre comillas. Si se usa más de un texto, se separan con comas:
<?php
e c ho " Pr i mer texto "1 "s egundo texto"
?>
El texto saldrá seguido en la página. Hay una forma abreviada de usar echo qu e es:
<?= "Pri mer texto "1 "s egundo texto"
?>
Perm ite evitar la etiqueta <?php y tene r que escribir el nombre de la función echo . <?= sobre-
entiende qu e lo que viene después es texto a escribir, como si tuviera la palabra echo delante. No
se puede colocar cód igo PHP de otro tipo , solo expresiones imprimibles.
Hay otra funció n de escri tura, llamada print que funciona casi igual a echo , pero tien e dos
importantes diferencias:
Devuelve un valor verdadero o falso dependiendo de si se pudo escr ibir el texto o no (en
aplicaciones comp lejas puede ser muy útil )
UN IDAD 3. PROGRAMACiÓN BÁSICA DE APLICAC IO NES CON PHP 125
No admite vario s textos, solo uno; aunque se pueden encadenar varios con el operador
punto (.)
print "Primer texto " , " s egundo t exto" ; // ¡er r or !
print " Pri mer text o " . " s egundo t ex to"; l/ar r eg l ado
Cuando PHP se incrusta dentro del código HT ML, hay que tener en cuenta que echo o prin t
está n escri biendo dentro del código de esa página. Por lo que hay que conocer muy bien cómo
funciona HT ML para entender lo que ocurrirá en la página.
La realidad física es qu e cada variabl e ocupa un espacio en la memoria RAM del servidor. Es
decir, cua ndo utilizam os el nombre de la variable rea lme nte esta mos haciendo referencia a un
dato qu e está en m em oria.
• Tiene qu e empezar con el símbolo $. Ese símbolo es el que permite disting uir a una
variable de cualqu ier otro elemento del len guaje PHP.
• El segundo carácter pu ede ser el guion bajo C) o bien una letra. La recom endación es
empezar siempre con un a letra, el guión bajo se utiliza para variables estándares y su per-
globales del lenguaje.
• A partir de l tercer carácter se pu eden incluir núm eros, además de letras y el guio n bajo.
Es conv eniente que los nombres de las variabl es indiquen de la mejor forma posible su fun -
ción. Es decir : $saldo es un buen nombre, pero $XI23 no lo es, aunque sea válido.
Tamb ién es conveniente poner a n uestras varia bles un no mbre en minúsculas. Si consta de
varias palabras el nombre po demos separa r las palabras con un guion bajo en vez del espacio o
empezar cada nueva palabra con una mayúscula. Ejemplos de am bos casos son: $saldo_final y
$saldoFínal, amb os bu enos no mbres de variable.
126 IM PLANTA Ci ÓN DE APLICACION ES W EB
$edad=15;
No es necesario indicar de qué tipo es esa variable. Esto es muy cómodo, pero también complica
la tarea de depurar n ue stros programas, ya que provoca que haya errores difícilmente detectables.
Aunque no hay un a in strucción de declaración como tal. Sí qu e se deben definir las variables
antes de usarlas; de otro modo, en su primer uso tendríamos un error. Por ejemp lo, si $x no había
sido definida con un primer valor, este código falla:
ec ho $x ;
Con la configuración de PHP en estado de mo strar err ores, que es lo normal, veríamos en
pantalla el error Notice: Undefined variable: $x seguido del número de línea en el que se encuentra
la instrucción.
$x=12 ;
En el caso de asignar números se escriben tal cua l (como en el ejemp lo), los decimales se sepa-
ran con el punto decimal. Los textos se enci err an entre comillas (simples o dob les). Ejemp lo:
$nombre="Anselmo";
$beneficios=($gastos-$ingresos ) * 0.6 ;
Otra cosa sor prende nte, comparado con los len guajes más formales, es que una variable puede
cambiar el tipo de dat os que almacena. Así, este código es perfectamente válido:
<?php
echo $x ; l/e s la primera ve z que se usa $x . Er r or
$y =$x+ 2; l/e r r or se us a $x sin haber la defi nido, a unque y valdré 2
ec ho $y;
?>
Ocurrirá un error al hacer ese uso de la variable. Aunque en rea lidad la directiva
errorj eporting del archivo php.ini, permite modificar los errores de aviso que se lanzan. Si
bajamos su nivel de aviso, no detectará estos fallos. Tam bién po demos usar una función con ese
mismo nomb re, al inicio de nu estro código para indicar fallos. Su uso sería:
Si deseamo s que no no s avise de estos fallos. Habría que pasar a error_reporting otra cons-
tante; por ejemplo E_USER_ERRüR avisa solo si hay errores de nivel usuario (o más graves) en
el código.
Hay una funci ón llam ada isset a la que se le pasa una variable e indica si dicha variable ha sido
definida o no . Ejemplo:
<?php
ec ho isset ( $x ) ; l / e s c r i be fa lso, no sale nada por pa ntal la, porque
/ /$x no ha sido defi n i da
$x=12 ;
echo isset ( $x ) ; l/de vue l ve verdadero , escribe 1
?>
$n1=17;
$n2=-175;
$oc t a l =071;
ech o $oc t a l ; l / e s cr i be 56 , equ ivalente dec ima l a 71 en octal
128 IMPLANTACiÓN DE APLICACIONES W EB
Además pueden estar en sistema hexadecimal si a la cifra se la antecede de un cero y una equis:
$hexa=0xA2BC;
e c ho $hexa; l/es c r i be 41660, equivalente a A2BC en hexadecimal
Para asignar decimales hay que tener en cuenta en PHP qu e el form ato es el inglés, por lo que
las cifras decimales se separan usando un punto como separador. Además es posible usar nota-
ción científica. Ejemplos de variables con valores decimales:
$n1=234.12 ;
$n2=12.3e-4 ; l/s i gn i f i c a 12,3·10 ~, es decir 0 ,00123
Los núm eros decim ales en coma flotan te de PHP son equivalentes al formato double del len -
guaje C.
Si el propio texto requi ere comilla s, se pu eden utilizar combina ciones de las comillas par a
evita r el problema. Por ejemplo:
Como queremos almace nar en $fr ase el texto con Hola entre comill as, entonces englobam os
todo el texto con comillas simples. Otra opción es usar comillas mediante secuencias de escape:
$frase = "Ant oni o dijo \"Hola\" al llegar" ;
De esa forma , las com illas se toman carácter literal y no como el inic io o el fin de un texto.
UN IDAD 3. PROGRAM AC iÓ N BÁSICA DE APLI CACION ES CO N PH P 129
Las secue ncias de escape son út iles para represe ntar códigos de texto que no está n pr esentes
en el teclado. Las que perm ite PHP son:
Las secuencias de escape solo funcionan si están encerra das entre comillas dobl es. Es decir, si
escribimo s:
Las barr as saldrán por pantalla tambi én (no se consi deran secuencias de escape).
Un he cho de PHP mu y interesante es que en un string se puede in cluir el valor de una variabl e,
aunque solo si el texto está entrecomillado con comillas dobl es. Por ejemplo:
$d í as =15;
$texto=" Fa l t a n $d í as días para el ve r a no" ;
ec ho $t ext o; / / es c r i be : Fal t a n 15 d ías pa ra e l vera no
Los textos se pu eden conca te na r con ayud a del op erador punto (.). Ejemplo:
$nombre=" J or ge";
$apellidos=" Sá nc he z As e nj o" ;
ec ho "Nombre completo : " . $nombr e ." " . $a pe l l i dos ;
l / e s c r i be Nom bre co mpleto: Jorge S¿nc hez As e nj o
Sorprende qu e echo escriba el valor un o; la explicación es que el valor true está asociado a
valores positivos, mientras que false se asocia al cero . En concreto, hay un a relación entre todos
los tipos de dat os:
$v1=18;
$v2=" 3 de Diciembre";
ec ho $v1+$v2 ; // Es c r i be 21
Hace qu e por pantalla aparezca el texto 21 (suma el r8 y el tres). Pero, sin embargo:
$v1=18;
$v2=" 3 de Diciembre";
ec ho $v1.$v2; // Es cr i be : 183 de Diciembre
Aunque, en gene ral, PHP convierte adecua dame nte las expresiones, pod emos convertir de
forma forzo sa los valores al tipo deseado ; de esta for ma, elegiremos no sot ros cómo realizar las
convers iones. Para ello se puede utilizar el operador de casting, viejo con ocido de los programa-
dores en len guaje C. Ejemp lo:
$x=2 . 5;
$y=4 ;
$z=(int )$x * $y; // z va l e 8
$z vale 8 ya qu e se toma de $x su parte entera, es decir el número dos, y dos por cuatro res ulta
ocho.
UNIDAD 3. PROGRA MAC iÓN BÁSICA DE APLICACIONES CON PHP 131
3. 4.7 CO NSTANTES
Las constantes almacenan valores que no cambian en el tiem po. La forma de definir constan -
tes es gracias a la funció n define. Qu e funciona indicando el nombre qu e te ndrá la constante,
entre comillas, y el valor qu e se le otorga. Ejemplo:
Las con sta ntes no ut ilizan el signo $ de las variables, simpleme nte utilizan el nombr e. Es decir,
escribir el valor de la cons ta nte PI tr as haberla declarado con la in strucción anterior, sería :
echo PI;
Desde la versión 5.3 de PH P es posib le definir una constante de una forma más estructurada.
Se trata de ut ilizar la palabra clave const, habitual en la mayoría de lenguajes de programación.
Ejemp lo de uso :
const PI=3.141592 ;
132 IMPLANTACiÓN DE APLICACIONES WEB
Aunque no es obligato rio, es conveniente usar mayúsculas par a dar nombre a las constantes
y as í, diferenciarlas de las variables (aunque en PHP el signo dólar $ ya ha ce esa diferenciación ).
La línea clave es $$x=5, en ella el intérprete de PHP sustituye sx por su valor ivariable ú ; por
lo que esa expresión es equivalente a svariab le-e.
Aunque de entrada puede parecer una rar eza de PHP sin utilidad, lo cierto es que facilita
mucho la creación de ciertas variables. Por ejemplo, para conseguir crear una variable de cada
elemento de un array (especialmente de LGET, LPOST, LSESSION o LCOOKIE).
OPERADOR SIGNIFICADO
+ Suma
- Resta
~:~
Product o
/ IDivisión
% IMódulo (resto)
Ejemplo de uso:
$x=15 .5;
$y=2;
echo $x+$y/' <br /> " ; l/es cr i be 17 .5
echo $x-$y/' <br /> " ; // escr ibe 13 .5
ec ho $x*$y," <br /> " ; // e scribe 31
ec ho $x /$y ," <br 1> " ; l / e s cr i be 7.75
echo $x%$y ," <br / >" ; l / e s cr i be 1 , solo coge la par te entera
UNIDA D 3. PROGRAMACiÓN BÁSICA DE APLICACIONES CO N PHP 133
OPERADOR SIGNIFICADO
< Menor
> Mayor
>= Mayor o igual
<= Menor o igua l
-- Igual, dev ue lve ver da dero si las dos expresiones que com-
para son igua les
--- Equivalente, devuelve verdadero si las do s expresiones qu e
compara son iguales y además del mi smo tipo
!= Distinto
! No lógico (NOT)
&& "Y" lógico
AND "Y" lógico
11 "O" lógico
OR "O" lógico
XOR "OR" exclus ivo
Los operadores lógicos (AND , OR Y NOT), sirven para evaluar co n diciones complejas. NOT
sirve para negar una condición. Ejemplo:
Sedad = 21 ;
$ma yor DeEdad = Sedad >= 18 ; //$mayorDeEdad será t r ue
$me norDeEdad = !$ma yor DeEda d ; //$menorDeEdad será f al s e
El operador && (AND) sirve para evaluar dos expresiones de m odo que, si ambas son ciertas,
el re sultado será true si no el resultado será fal seoEjemplo:
El operador 1I (O R) sirve también para evaluar do s expre sion es. El resultado será true si al
menos uno de las expresiones es true. Ejemplo:
La diferencia entre la igualdad y la equi valen cia se puede explicar con este ejemplo:
En el ejemp lo 18===18.0 devuelve falso porque aunque es el mismo valor, no es del mismo tipo.
$y=3 ;
$x=$y+9 . 8 ; II $x va l e 12 .8
Existen operadores que permiten resumir asignaciones . Facilitan la escritur a de muchas ope -
raciones habituales al escribir código . Un ejemplo de este tipo de asignaciones es:
$x += 3;
Es equivalente a:
$x = $x + 3;
En definitiva, lo qu e se hace es sumar 3 al valor que ya te nía la variab le $x . Así tenemos todos
estos ope ra dores de asignació n:
+= = - j=
&= 1= /1= %=
»= «= .-
Adem ás, disponemo s de los op eradores de in crem ento (++) y decrem ento (--) qu e a ñaden uno
y resta n uno, respectivam en te, al valor de la variable. Ejemplo:
Pero hay dos formas de utilizar el in crem ento y el decre mento. Se pue de usar por ejemplo x++
(post-increme nto ) o ++x (pre-incremento) . La diferencia estriba en el modo en el que se comporta
la asignación. Ejemp lo:
$x=5;
$y=5;
$z= $x ++; II Pri mero asign a, luego in creme nta : z va l e 5 , x va le 6
$z =++$y ; II Primero increment a , luego as i gna: z va l e 6 , x va le 6
símbolo significado
& AND
I OR
~
NOT
/\ XO R
» Desplazamiento a la derecha
« Desplazamiento a la izqui erda
Ejemplo de uso:
$x=97 ; // $x en binario va le 01100001
$y=74; // $y en binario vale 01001100
echo $x & $y; // r e s u l t a :- - - - - - - - - -> 01000000=64
echo " \n";
e c ho $x I $y; // r e s ul t a : - - - - - - - - - -> 01101101=107
echo "\n";
$x = $x »2; l/a hor a $x vale 00011000 = 24
echo $x;
echo " \ n" ;
$y = $y « 2; l/a hor a $y val e 100110000 = 296
echo $y;
Hay operador de asignación y concatenación de texto , se trata del operador .=. Ejemplo de
uso:
$texto = "Ho l a ce;
$texto . - "amigos y ce ;
$texto = "amigas " ; // $t ext o es Ho la amigos y amigas
Las in struccion es de contro l de flujo permiten alterar esta forma de ejecución. A partir de
ahora, habr á líneas en el código que se ejecut arán o no dependiendo de un a condición. Esa con-
dición se con struye utili zando lo que se conoce como expresión lógica; esto es, cualquier tip o de
expresión qu e reto rne un resultado verdadero o falso.
Las expresio nes lógicas se construyen a trav és de los operadores relacionales (==, >, <,...) y
lógicos (&&, 11, !,... ) vistos anteriorme nte.
if (expresiónLógica ) {
instrucciones
}
Las llaves solo se requieren si va a haber varias instrucciones, de otro modo podemos obviarlas.
l i f ( eX~reS i ónL~~ i Ca ) I
, l ns t ruccl on ; ,
if ( $not a >=5){
ec ho " Aprobado" ;
$aprobados++;
}
Que significa que en el caso de qu e la variable $nota valga 5o más, mostramos el texto Aprobado
e increme ntamos el valor de la variable $aprobado. La idea grá fica del funcionamiento del if sería:
•
1
<>-~I
>
($nota>=S) - Escribe ' Apro bado'
- increme nta el
nO de aprobados
1 ISO
OM,
@~<------
Figura 3.1: Diagrama repr esentativo de una estructura if simple
UN IDAD 3. PROGRAMACiÓN BÁSICA DE APLICA CION ES CO N PHP 137
endif;
En lugar de las llaves, cierra el bloque if con la palabra endif. Los dos puntos tras el par éntesis
so n obligatorios. Se trata de u na forma sim plificada que , ciertamente, ha y que usar con cuidado.
if (expresi ón l ógi ca ) {
ins tru cci ones a ej ecut a r s i la ex pr es i ón es verdad era
}
e lse {
instrucc i ones a ejecutar s i l a ex pr es i ón es falsa
Como en el caso an te rior, las llaves son necesari as solo si se ejecu ta m ás de una sentencia en
el bloque.
- - - - - - - 7 ) @ ~<--------J
if ($nota >=5 ){
ec ho "Aprobado ";
$aprobados++;
}
138 IMPLANTAC iÓN DE APLICAC IONES WEB
else {
ec ho " Sus pen so" ;
suspensos++;
}
if ($ nota >=5 ):
ec ho " Apr obado" ;
$aprobados ++;
e lse :
e c ho " Sus pe ns o" ;
$suspensos++;
e ndi f ;
•t
<>~ [Snotao e S]
[$nota<5J
)
- Escribe "Suspenso"
- incrementa el
n° de suspensos
<>
~ [$nota>; 7)
[$nota<7J
)
- Escribe "Aprobado'
- incrementael
nO de aprobados
1-
<>
~ [$nota >;7J
[$nota<9J
)
- Escribe ' Notable'
- incrementa el
nO de aprobados
1
@
....
<,
....
<,
....
<,
if ( $not a <5 ) :
echo "suspenso" ;
$sus pe nsos++;
else if ( $no t a <7) :
echo "aprobado" ;
$aprobados++;
elsei f( $not a <9) :
echo "notable";
$aprobados++;
e lse :
echo "sobres alien t e";
$aprobados++;
}
SE NTE NC IA SW ITC H
switch (expr es i ón) {
case val or1:
instrucciones del va l or 1
[br ea k]
[c as e va 1or2 :
i ns tr ucci on es del va lor 1
[break]
]
[ . .. ]
Los corche tes , en la sintaxis de las instrucciones, indican conte nido opcional. Es decir, los
break son opcion ales y la cláusul a de fa u lt: tambié n.
140 IM PLANTACiÓ N DE APLI CACION ES W EB
[de faul t :
in s t ruc ci ones que se e jecuta n e n c ua lq uier otro caso
.. ]
}
Esta instrucc ión se usa cuando tene mo s in struccion es qu e se ejecutan de forma diferente
según evaluemo s el conjunto de valores posible de una expresión . Cada case evalúa un po sible
valor de la expresión; si, efectivam ente, la expresión equivale a ese valor, se ejecutan las in struc-
cione s de esa sección case y de las siguientes. Para que no se ejecuten las instrucci ones de los case
adyacentes se emplea la in strucción br eak, que abandona inme diatamente el switch; de tal m odo
que, si queremos que para un determina do valor se ejecuten las instru cciones de un apartado
case y solo las de ese apartado, entonces , habrá que finalizar ese case con un break.
Por otra parte, el bloqu e default sirve para ejecutar instruccione s para los casos en los que la
expresión no cumpla ninguna de las condiciones de los case de la in stru cción.
No usar break para salir de l switc h puede per mitir crear estructuras switch que ejecute n unas
mismas instruccione s para diferentes valore s.
U NIDAD 3. PROGRAMAC iÓN BÁSICA DE APLICACIONE S CON PHP 141
3.5.2 BUCLES
Un bucle es un conj unto de sentencias que se repiten mientras se cumpla una determinada
condición. Su uso es prácticamente imprescindible para escribir aplicaciones.
[2] Si la expresión es verdadera ejecuta las sentencias, si no el programa aban dona la sentencia
while.
$ i=1;
while ( $ i< =100 ) {
ec ho $i." <br /> " ;
$i ++;
}
142 IMPLANTACiÓN DE APLICACIONES WEB
•t
- Inici a $i con valor 1
También la instrucción while tiene también un a versión sin llaves. En ella, el ejemplo anterior
se escribiría:
$i =1;
while ( $ i <=100) :
ech o $i . " <br / >" ;
$ i++;
endwhil e ;
Los bucl es while son los fundame ntales. Aun que PHP dispone de ot ros bucl es, todos ellos
se pu eden realizar mediante sente ncias while. Por ello, es fundam ental saber utilizar este tipo
de bucle. A continuación, se come ntan los dos prin cipales tipos de bucl es y su impleme ntación
me diante la est ructura whil e.
Bucles de contado r
Se llaman así a los bucles que se repiten una serie dete rm inada de veces. Dichos bucles está n
controlados por un contador (o incluso más de uno). El contador es una variable que va modi-
ficando su valor, de uno en uno, de dos en dos,... o como queramos, en cada vuelta del bu cle.
Cuando el contador alcan za un límite determinado, entonces termina.
[1] Lo que vale la variable contadora al pri ncipio. Antes de entrar en el bucle
[2] Lo que varía (10 que se incrementa o decrementa) el contador en cada vuelta del bucle.
[4] El valor fina l qu e debe de to ma r el contador para aban donar el bucl e. Dicho valor se pone
como condición del bucle, pero a la inversa; es decir, la condición mide el valor qu e tien e
UNID AD 3. PROG RAMA CiÓN BÁSICA DE APLICACI O NES CO N PHP 143
que tener el contador para que el bu cle se repita y no para que termine . Si un bucle no
defin e bien la condición de salida, podría convertirse en un bucle infinito.
Ejemplo:
En la práct ica la mayoría de program ad ores optan por un estruc tur a for (que se explica más
adelante) para codificar este tipo de bucle.
Bucles de centine la
Es el segundo tipo de bucle básico. Una condición lógica llamada centinela, que puede ser
desde un a simple variable booleana hasta una expresión lógica más compleja, sirve para decidir
si el bucle se repite o n o. De modo que cuando la condición lógica se in cumpla, el bucl e termina.
Esa expresión lógica a cumplir es lo que se conoce como centinela y norma lme nte la suele
realizar un a variable booleana. La diferenci a con los bucles de contador, es qu e no sabemos de
antemano las veces qu e se repite el bucle. Si el centine la jamás toma el valor de salida, el bucl e
será infinito.
Son bucles qu e, in icialm ente, son más difíciles de aplicar. Sin embargo, cuando se domina su
uso, se convie rten rá pidame nte en un tipo de sentencia fundam en tal para resolver problemas
complejos de prog rama ción.
144 IMPLANTACiÓN DE APLICACIONES WEB
En definitiva, el código anterior mue stra continuamente números aleatorios entre 1 y 500
hasta que aparezca un múltiplo de 7.
Comparando los bucles de cen tinela con los de contador, podemos se ñalar estos puntos :
• Los bu cles de contador se repiten un núm ero concre to de veces, los bucl es de centin ela
no.
• Un bucle de conta dor está relacionado con la programac ión de algoritmos basados en
series.
Un bucl e podría ser incluso mixto : de centinela y de contador. Por ejemplo sería el caso de un
código que escriba números de un o a 500 y se repita hasta qu e llegue un mú ltip lo de 7, pero que
como mucho se repita ocho veces.
El código sería el siguiente:
$sa l ir = f a l se; I l ce nt i ne l a
$i=1; Il cont ador
wh il e ( $sa li r == f a lse && $i <=8 ) {
$n = mt_rand (1,500 ) ;
echo $n ." <br 1 >" ;
$i++;
$salir = ($n % 7 == 0);
}
UNI DAD 3. PROGRAMAC iÓN BÁSICA DE APLICAC IONES CON PHP 14 5
- - - - -- - - - - - - -- - - -- - - - - -
[3] Si la expres ión es verd ad era volver al paso 1, sino continuar fuera del whil e
Sintaxis:
do {
instrucci ones
} while (expr esi ón l ógi ca)
$i=0;
do {
$i++;
ec ho $ i ."< br / >" ;
} while ($ i <100) ;
Esqu ema:
•~
( - Inicia Si con valor O
)
~.
~
~
- Escribe el valor d e Si
-Incrementa Si
t
[$i< 100]
@
Figura 3.5: Diagram a represe nta tivo de una est ructur a do ..while
146 IM PLANTACiÓ N DE APLICACIONES W EB
Cua lquier estructura do..while se pu ede conve rtir en while. Así, el código anterior se puede
escribir usando la instrucción while de esta forma:
int i=0 ;
$ i++ ;
echo $i . " <br />" ;
wh il e (i (100 ) {
$i ++;
echo $i . " <br /> " ;
}
3.5.2.3 BUCLE FO R
Es un bucle más com plejo, espec ialmente pensado para recorrer arrays o para imp lementar
bucles de contador. Es el bucle más ut ilizado por los programadores ya qu e es muy cómodo de
escribir y, por su est ructura, es má s difícil com et er erro res. Puede que al principio sea difíci l de
entender, pero en poco tiempo se aplica perfectamente a todo tipo de aplicaciones. Sintaxis:
Como en t od as las est ruc turas de contro l, dispon emos de una versión sim plificada :
Las sente ncias se ejecuta n mi en tr as la con dición sea verdadera. Ade más , antes de en tra r en
el bucle, se ejecuta la instrucción de inicialización y en cada vue lta se rea liza el in crem ento de la
varia ble con ta dora. Es decir el fu ncio na mie nto es:
[3] Si la condición es cierta, entonces se ejecutan las sente nc ias. Si la condición es falsa, se
aban dona el bloque for
[4] Tras ejecutar las sentencias, se ejecuta la ins trucción de in crement o y se vue lve al paso 2
f or ($i=1;$ i <=1000;$i++ ) {
e c ho $i."<br /> " ;
}
La ventaja qu e tiene es qu e el número de lín eas de código se reduce . La desventaja es qu e el
código es m enos comprens ible.
U NIDAD 3. PROGRAMAC iÓN BÁSICA DE APLICACIONES CON PHP 147
HTML dispone de n umero sos controles para almacenar in formación qu e se pide al usuario:
cuadros de tex to, cua dros numéricos, botones de radio, cuadros co mbinados, etc . En este ma nua l
no se enumeran dich os controles, ya qu e ente n de mos qu e contam os con los conocimien tos de
HT ML necesarios para crear for mularios. Pero , al m en os, con los formulario s debemos t en er en
cue nta lo siguie nte:
• Todos los controles del formulario deb en estar den tro de un eleme nto form , el cual n os
permite configurar estos atributos :
m ethod. Pu ed e ser get o post y se refiere a la forma en la qu e se pa san los datos de
formulario. Mas ade lante, se expli ca la diferen cia entre ambos m étodos. Por defecto
se toma com o m ét odo, get.
action. Que in dica la URL a la dirección del servicio que recoge los datos (por ejem -
plo http://www.jorg esanchez.net/anadirUsr.php)
11 Dentro del elemento forrn se colocan los eleme ntos de HTML capaces de recoger in for -
mación. Son los elemen tos input, option, t extarea, etc. Los cua les poseen un at ributo
llamad o name, en el que se in dica el n ombre de la var iable que se envía al servi dor, y otro
llamado value que, inicialmente, permite indicar el valor qu e se asigna a dich a var iable,
dicho valor pue de ser m od ificado por el usuario en el formul ar io.
Como se ha come ntado antes , un formul ario puede enviar la información usand o el atributo
m ethod del formulario y eligiendo GET o POST .
Ejemplo:
<form action =" recog i da1 . php" method =" ge t">
<label f or=" nombre" >Es c r i ba s u nombre</label>
<input type="text" na me="nombre" / > <br / >
<label for=" a pe l l i dos ">Es c r i ba s us ap e l l i dos< /label >
<input type="text" name="a pellidos" / > <br / >
<label f or="nombre" >Es c r i ba su d irección </ l a be l >
<input t ype="text" name="direccion" / > <br / >
<label for=" nombr e" >Es c r i ba sus teléfonos : </label>
<br / >
<input ty pe =" t ex t" na me="tele f onoi" max lengt h="9"
pattern="[0-9) {9}" / > <b r / >
<i nput type=" text" na me =" t e le f ono 2" max lengt h=" 9"
pattern="[ 0-9 ) {9}" / > <br / >
<i nput type=" submit" value="env i a r " / ><br / >
</form>
66666666
99999999
enviar
Dejando de lado la cuestión de la codificación , la forma de una URL tipo GET es:
http ://urlpágina?no mb re r=valorr&nombre2=valon& . . . . .
UNI DAD 3. PRO GRAMACiÓN BÁSICA DE APLICACIONE S CO N PHP 149
Es decir, usa pares entre el no mbre de la variable (en el formulario asigna da a través del atri -
buto n ame) y el valor que se le dio en el formulario. Cuando un control del formular io se queda
sin valor, entonces la variable se queda sin defin ir y, por lo tan to, la página PHP receptora deberá
com pro bar si se rellen ó o no el control medi ante la funció n isset.
Es decir, un array que contiene cada elemento pasa do desde el formulario. Cada elemento
tiene como clave el nombre y como valor, el valor que el form ulario asocia a ese nombre. Acceder
a un valor concreto del array se haría, por ejemplo, mediante: $ _GET [ "nombr e"]
Si intentamos acceder mediante $_GET ["nomb re"] al nombre de un valor que no hemos
recibido, entonces obtendremos el error: Notice : Undefined index:
Para evitar este error, antes de acceder al nombre deb emo s comprobar si exist e mediante:
El paso de dato s de un form ulario mediante GET tiene estas conno tac iones:
150 IMPLANTACIÓ N DE APLICACION ES W EB
• Cuando se rellena n los dato s en un formular io y éste envía los datos mediante una peti-
ción GET, la URL que contiene los par es nombre/valor rellenados en el formulario está
a la vista. Evidenteme nte, no deb emos pasar de esta forma contrase ñas y otros dato s
críticos.
• Las páginas generadas con GET pueden a ñadirse como marcado r o favorito a los navega-
dores y página s de marcador es. Eso pu ede ser interes ante, pero solo deb e de ser posible
si la URL no contiene dato s que hagan qu e otro usuario que obten ga esa URL pu eda
acceder a información confidencial.
No tenemos que pasar por el formulario para enviar valore s a la página receptora. Ya que
en la propia barra de navegación podremos escribir los valores y nombres a mano. En
principio n o tien e por qu é ser un probl em a, de hecho , puede ser un a form a alternativa
de acceder a un a página y, a la vez, enviar información que modifiqu e su resultado; pero
también es un a puerta abierta para qu e se pu edan enviar a la página datos no controla-
dos con inte ncio ne s, digamo s, malévolas.
x I¡" '~ad~rs I?re-.·,e·.·.~ " espolOS e Tm' Jng Los formularios se crean igual en ambos casos,
~ General pero ahora cambiamo s el atributo method de la
~ Response Heade rs (9) etique ta form para que tome el valor post.
~ Req uest Headers (1 1)
... For m Data VI -;:\\' r ource . le','.' LW_ E- '"":c :ft .J Mediante POST, los nombres y valores del for-
n o m b re : : or g e
mulario no viajan en la URL, sino que se colocan
apel lidos: Sá nche:
d ireccio n : As e njo en la cabecera del paquete http ; por lo que les
telé fono 1: 666666656 dotamos de una menor visibilidad. Natur almente
telefo no 2: 9999999 99
podem os verlos utilizando herramientas que nos
permitan examinar las cabeceras http del paquete
Figura 3.6: Datos enviados vía POST, tal cua l se qu e se envía por la red . Hoy en día es sencillo, ya
ven en el apartado N etwork de las Dev'Tools de l nave- qu e desde los propios navegad ores disponemos
gado r Google Chrome (dis po nibles con la te cla Fu )
de herrami entas para ello.
Puesto que son arrays (los arrays se est udian con profundidad más ad elante) su manejo es
distinto al de una variable n ormal. Pod emos ente n der qu e un array es un contenedor de varios
valores. Así, los arrays L GET o L POST son un alma cén de to dos los nombres y valores enviados
desde el formulario.
Los controles del formulario envían los valores asociados al nombre que dimos a ese control,
explicitado en el atr ibuto name. De m odo qu e si el m étod o de paso era POST, la pági na PHP
acce derá al valor de ese cont ro l m ediante:
iooioIIo.- .-1
Donde name es el n ombre del control.
Puede ser que el control no reciba ni ngún valor (porque el usuario deje sin uso ese control);
en ese caso la invocación a S_POST (o a LGET) usando el nombre de ese control, provocará un
error de variable indefinida, por lo que debem os comprobar la existe nc ia de ese nombre mediante
la función isset .
Otr as veces lo qu e ocurrirá es qu e se recibe como definid a la variable, pero no contien e valo-
res. En ese caso habría que utilizar la función em pty para comprobar qu e no está vacía.
Actualme nte las validac ion es de los datos se rea lizan por JavaScript y espec ialme nte usando
AJAX; esta técnica per mite valida r los datos de forma más directa (sin ten er que ree nviarles). Pero
implica usar in ten sam ente JavaScri pt y para validacio nes complejas seguirán utiliz an do técnicas
en el lado del servidor.
En el siguiente ejem plo se expone una página qu e pid e un nombre de usu ario y contraseña en
un formulario. Si son corre ctos (usuario jorge , contrase ña I23456) se indicará que lo son ; sin o, un
en lace no s enviará de n uevo al formu lario para volverlo a rellenar.
La cuestión es ¿cómo sabe la página web cuándo mostrar el formu lario y cuá n do no? La forma
es valora r la existe nc ia dentro del array L PO ST (10 mismo ocurriría par a L GET) de las claves
nombre y contraseña a t ravés de la función isset . Cuando esa función devu elve falso, es qu e a
la página n o se le ha pasado el nombre y la contrase ña vía POST, con lo que mostraremos el
formulario.
152 IM PLANTACi Ó N DE APLICACION ES W EB
<!DOCTYPE ht ml>
<ht ml l an g=" es " >
<hea d>
<meta c ha rset=" UTF-8" />
<t i t le>E jempl o de fo r mu l a r io e n l a propia pá g i na</t it le>
</ head >
<body >
<?php
i f (i s s et($_POS T[ "nombr e"] && i s s et($_POST[" contr a"] ) {
l/s i no se recibe n nombre y co nt ra se~a, se muest ra el form ulario
?>
<!--Este código HTML está dentro del IF de PHP -- )
<f or m action="form1 .php" method="post" >
<label for="nombre"> Es c r i ba s u usu ari o </ l a be l >
<input type="text" name="nombre" maxlength="20" /><br />
<label for="contra "> Esc r i ba l a co ntra s e ~ a < / l a b e l >
<input type="password" name="contra"maxlength="20" / >
<br />
<input type="submit" value="en viar"/><br />
</form>
<?php }/ / c i e r r e del i f
el s e {l / Se han pasado datos , se procesa n
$nombre=$ _POST[ " nombr e"] ;
$cont ra=$ _POS T["c ont r a" ] ;
i f ($nombre!=" J or ge " II $cont ra !=" 123456" ) {
ec ho "No es válido ese usuario y contraseña<br>" ;
ec ho " <a href='form1 .php' >Volver al formulario</a >" ;
}
e lse ec ho " Ent r ada correcta" ;
}
} ?>
</ body> </ ht ml>
Esta fun ción es muy poderosa, su finalidad es enviar datos de cabecera de paquet es http sin
formato. Gracias a ella podemos util izar la cabecera Location del protocolo http qu e pro vocará
qu e se cargue otra página. Por ejemplo, podemo s lanzar inmediatamente la página del bu scador
Goo gle con el código:
3. 8 PRACTICAS RESUELTAS
RECOMENDACiÓN :
Para muchas prácticas se necesita ut ilizar la función mtjand, la cual recibe dos números y
retorna, como resultad o, un núm ero aleatorio entre el primero y el segun do . Por ejempl o,
mt_ r and ( 1 0, 20 ) devuelve un número aleator io entre lO y 20 (ambos incluidos).
<st y le >
. error {
co lor : red ;
}
</ s t y l e>
</ he a d> <body>
<?php
if (isset($_GET["nombr e" ] ) && isset($_GET [" ape ll i dos " ])
&& isset($_GET["edad" ]) && i s s e t ($ _GET[ " s a l ar i o"] ) ){
$nombr e=$_GET [" nombr e" ] ;
$apellidos= $_GET[ " a pe ll i dos "];
$edad=$_GET["ed ad"] ;
$salario=$_GET[ " s a l ar i o" ] ;
if ($salario <1000){
i f( $ed ad <30) $salario=1100;
elseif ($edad <=45 ) $salar io*=1 .3;
e l se $salario*=1.1 5 ;
}
e l s e i f ($sa lari o <=2000 ) {
i f( $edad >45) $s a l ar i o*=1. 03;
el se $s al ar io*=1 .1 ;
}
echo " $nombr e $apellidos , t u salari o será de $sa l ario €" ;
}
e lse {
ec ho " <p c lass='error ' >Faltan datos </ p>" ;
ec ho " <a href=' f or m- pr ac t i ca 2 . ht ml ' >Volver </a >" ;
}
?>
</ body>
</ ht ml>
Como en la práctica anterior, primero creamos un documento HTML con un form ulario que
sirva para leer el número. Le llamamos [orm-practiau.html.
156 IMPLANTACiÓN D E APLIC ACI O NES W EB
A continuación creamos el archivo PHP qu e procesará el número (se llam a practicaj .phpi. Hay
que observar el uso de la función is_numeric para saber si realmente hemos recibido un número
y de header para cambiar auto máticamente de págin a.
7>
</ body>
</ ht ml>
• El resultado será un a tabla (se mo stra rá en la misma página del formulario) con el tama ño
indicado
Como la tabl a se mu estra en la misma página que en la que está el formular io, el formulari o envía
los dat os a sí mismo. Supo ne mos que la página se llama practicas.php , el código podría ser el
sizu ien te:
<!doc t ype html >
<ht ml lang="es " >
<hea d >
<me t a charset=" UTF-8" >
<t i tl e >Ta b l a </t i t l e >
<s t y l e>
.error {
color :red;
}
td {
bord e r:1px s o li d black ;
}
</ s t y l e >
</ he ad >
<body >
<f or m act i on=" pr act i ca6 .php" >
<l a be l for=" column as " >Es cr iba el númer o de co l umnas </ l abe l >
<i nput ty pe="number" na me=" co l umnas" id=" columnas" min="1 " / ><br / >
<l ab el for= " f il as" >Es cr i ba e l núme r o de f il as </ label >
<i nput type="number" narne=" fil as " id="fil as " min="1 " / ><br / >
<but t on> Env i a r</ but to n>
</ f or m>
<?php
l/compr oba mos si la página rec ibe l os pa r áme t ros para
l/d i buj a r la tabla
if ( iss e t ($_GET[ " f i l as "] ) && i s s e t ( $_GET [" c o l umnas " ] ) ){
$filas=$_GET [" f i l as "] ;
$c o l umnas=$_GE T[" co lumnas " ] ;
if (is_numeric( $filas) && i s _numeri c ($co l umnas ) &&
$fi las >=1 && $col umnas >=1 ) {
// 10 5 datos son co r rec tos , dibujamos la tab la
ec ho "<ta ble> " ;
for ( $ i =1 ; $i <=$f i l as ; $ i ++){
ech o " <t r> ";
160 IM PLANTACiÓN DE APLICACIO N ES W EB
..
3.9 PRACTICAS PROPUESTAS
Práctica 3.7:
• Crea una página PHP qu e mu estre los número s del 1 al IOOO pero de forma que aparezcan en
5 columnas y se lean de izquierda a derecha. Ejemplo de resultado (se mue stran las primeras
y las últimas filas):
Práctica 3.8:
• Crea un formulario qu e pida al usuario un número.
• Después, en ot ra página, recoge ese número y muestr a la suma de to dos los números pares
ante riores a él.
• Por ejemplo, si el usuario escribe el número 9 saldría por pantalla el número 2 0, resultado de
sumar 2 + 4 + 6 + 8
UN IDAD 3. PROGRA MAC iÓN BÁSICA DE APLI CAC IO NES CO N PHP - PRÁCT ICA S 161
• Mejor ar el resultado para que la página que muestra la suma, después muestre un enlace
con el qu e regresar al formulario de modo qu e, al hacer clic en él, el cuadro de entrada del
número muestre el último número introducido
Práctica 3.9:
• Crear una págin a PHP que mu estre por pantalla todo el código ASCll en una tab la de r6
columnas.
• Como pista, la función ch r , recibe un número y muestra el código ASCll equivalente. Así
c hr (65) muestra el carácter A.
L!1!.!ll~
1
• . .
2
, . '1
3
t • . . t
4
t.
I . . .1
5
• • . .
6
, .
7
. . t •
8
•• , .
9 10 11 12 13 14 15 16
17 18 19 20 21 22 23 24
25 26 27 28 29 30 31 32
33 I 34 . 35 z: 36 S 37 ~~ 38 & 39 40 (
41 ) 42 43 + 44 45 46 47 ! 48 o
49 1 50 2 51 3 52 4 53 5 54 6 55 7 56 8
57 9 58 59 60 < 61 - 62 > 63 ? 64 @
65 A 66 B 67 e 68 D 69 E 70 F 71 G 72 H
73 I 74 J 75 K 76 L 77 M 78 N 79 o 80 P
81 Q 82 R 83 S 84 T 85 U 86 V 87 W 88 X
89 Y 90 Z 91 [ 92 \ 93 ] 94 h
95 96
97 a 98 b 99 e 100 d 101 e 102 f 103 9 104 h
105 i 106 J 107 k 108 I 109 m 110 n 111 o 112 P
113 q 114 r 115 s 116 t 117 u 118 v 119 IV 120 x
121 y 122 z 123 { 124 1 125 } 126 - 127
Práctica 3.10:
• Mejora la prácti ca ante rior para mo strar los caracte res de la tabla Unicode del o al 5 0000
• En este caso es m ejor usar esta idea: en HTML si escr ibimos &# seguido de un n úmero y del
símbolo de punto y coma (;), nos muestra el carácter Unicode correspo ndiente a ese número .
Así el código ñ en una página web, muestra el carácter ñ.
_ el
Pagina 3
1001 2 1002 X 1003 r 1004 6 1005 6
1006 t 1007 t 1008 )( 1009 Q 1010 e
1011 J 1012 e 1013 e 1014 3 1015 IJ
1016 P 1017 e 1018 M 1019 J.I 1020 f)
1021 J 1022 e 1023 J 1024 E 1025 E
1026 1> 1027 r 1028 E: 1029 S 1030 I
1031 i 1032 J 1033 lb 1034 fu 1035 1'1
1036 K 1037 V1 1038 Y 1039 I,J 1040 A
1041 5 1042 B 1043 r 1044 .Q 1045 E
1046 >K 1047 3 1048 V1 1049 V1 1050 K
1051 n 1052 J,1 1053 H 1054 o 1055 n
1056 p 1057 e 1058 T 1059 Y 1060 <P
1061 X 1062 L1 1063 4 1064 W 1065 W
1066 b 1067 bl 1068 b 1069 3 1070 10
1071 51 1072 a 1073 6 1074 8 1075
1076 A 1077 e 1078 )j( 1079 3 1080
1081 ~ 1082 K 1083 n 1084 M 1085 H
1086 o 1087 n 1088 p 1089 e 1090 T
1091 Y 1092 <P 1093 x 1094 11 1095 y
1096 w 1097 U1 1098 b 1099 bl 1100 b
1101 3 1102 10 1103 H 1104 é 1105 e
1106 T) 1107 t 1108 8 1109 s 1110 i
1111 "1 1112 1113 Jb 1114 fb 1115 f1
1116 K 1117 H 1118 Y 1119 V 1120 CO
1121 w 1122 b 1123 b 1124 lE: 1125 18
1126 ft" 1127 /; 1128 IR. 1129 ¡,¡. 1130 1t.
1131 s. 1132 Ii\\ 1133 111. 1134 :3 1135 j
Práctica 3.12:
• Crea un a página qu e mu estre 2000 cuadrados de colore s aleator ios que se coloquen también
de form a aleatoria por la pantalla. Cada cuadr ado deberá medir 5 0 X5 0 píxeles
• Ejemplo de resultado:
UN IDAD 3. PROGRAMAC iÓN BÁSICA DE APLICAC IONES CON PHP - PRÁCT ICAS 163
• PHP sigue siendo el len guaje de scripts más utilizad o y sus ventajas son numerosas, lo
que le ha otorgado un a eno rme influ encia entre los desarrolladores de aplicaciones web.
11 Hay numerosas herrami entas para escribir código PH P. Hay otros edito res de texto mu l-
tipropósito (Sublime Text, Coda, Notepa d++, Atom...), entorn os de desarrollo (Aptana,
PDT, Net beans, PHP Storm...) y herr ami entas de dise ño visual (como Dreamweaver).
• Los arch ivos PHP deben tener extens ión .php y su códi go estar entre las etiquetas <?php
y ?>.
• Las bases de la escritura en PHP son sencillas con reglas muy habitu ales entre los len -
guajes de programación.
• Las variables de PHP deben empezar con el carácte r $, se las deb e asigna r un valor antes
de poderse utilizar y admite n alma cena r resultados de expresiones complejas,
• Los tipos de datos básicos en PHP son enteros, decimales de coma flotante y texto
(strings) . PHP pue de convertir los datos de un tip o a otro au to máticame nte, pero, a veces,
hay que hacerlo a mano mediante los operadores de cast ing u otro tipo de compo nente.
• La asignació n de valores PHP admite el uso del opera dor de preincremento y postincre -
me nto, así las acciones de operar y asignar a la vez.
• PHP dispone de numero sos operado res para tr abajar : aritmé ticos, lógicos, conca te na-
ción , de bit, etc.
• PHP dispone de las clásicas estru cturas de control if, while, switch y for, Lo qu e permite
crear to do tipo de estructuras y bucles.
• Los datos de un formulario se pue den enviar a un documento PHP tanto por GET como
por POST (e incluso por otros coma n dos http como PUT o DELETE). Los arrays LGET
o LPOST o L REQUEST almace na n los dato s enviados.
lB La función head er permite enviar paquet es con cabeceras http El uso más común es
redireccionar el flujo hacia otra página m edian te el comando Location.
164 IMPLANTACiÓN DE APLICAC IONES WEB
10.- define ("TA M" ,250) ;permite leer tanto Un lengu aje de creación de aplicacio-
pa rámetros enviados vía GET como vía ne s web mixto
POST? ,,~ Un lenguaje de creación de apli cacio -
d LFORM nes we b de l lado de la base de datos
1 I $_RESPONSE
1S.- Observa este código:
cI $_REQUEST
$x=9;
d) $_GET]OST $y=&$x ;
$y=7;
ll.- El texto literal en PHP ¿Cómo se debe
escribir? ¿Cuánto vale sx al final de ese código?
a) Dentro com illas dobles ai 9
b) Dentro de comillas sim ples 01 7
e) Dentro de com illas dobles o simp les e) indefinido
d) Dentro de llaves di " y"
e) Dentro de corc hetes
16.- ¿Cuál de estas afirmaciones es cierta?
12.- Dado este código: a) El valor 1 significa verdadero y e! valor
$x=2 ; o falso . El resto de número s no son
$y=1 ; verda deros ni falsos
$z=3; b) Cu alquier valor distinto de cero se
$ex p=($x>$y && $z >$y) 1 I ($x==$z); toma co mo verdadero , e! cero es el
¿Qué valor t oma la variable $exp? único valor falso
e) Los valores positivos son verdade-
a) Verdadero (t rne)
ros y los negati vos falsos . El cero es
b) Falso ifalse) in defini do
ej Ninguno porque la expresión tiene un d) En PHP los número s no son ni verda-
error de ros ni falsos.
d' 3
1- - ¿Cuáles de las siguientes proposiciones
B. - ¿Qué muest ra por pantalla este có digo? son cierta s?
$v=10 ; a) El m ét od o de paso de parám etro s de
while ( $v >0){ formular io PO ST, no permite qu e
ec ho $v - -." " ; nadi e qu e esté pinch ando la lín ea
} pue da obte ner los datos qu e se están
envian do
a) lO 9 8 7 6 54 32 1
b) Es po sible ob tener los dato s qu e se
b) 9 8 7 6 54 3 21 0
envían vía POST, ya qu e se enc ue ntran
e) 9 8 7 6 54 32 1 dentro del paquet e http
d) Nada e. Es po sibl e obtene r los dat os qu e se
14.- PHP es... envían vía POST, ya que son visibles en
la barra de dir eccione s del navegado r
a) Un len gu aje de cre ació n de aplicacio-
nes web del lado de! cliente d Es posible obtener los datos qu e se
env ían vía POST con herramientas
b) Un len gua je de cr eación de aplicacio - especiales. Pero las contraseñas n o, ya
nes web de! lado del servidor qu e viajan cifradas.
UNIDAD 4
NOCIONES AVANZADAS
SOBRE EL LENGUAJE PHP
OBJETIVOS
- Reconocer la sintaxis de creación y uso de func iones personales
- Crear a plicacio nes mod ulares uti lizando fu nc iones
- Asimilar las estructuras de datos que aporta e l lenguaje PH P
- Crear aplicaciones web que requieran la manipu lación de arrays
- Crear aplicaciones que requieran manipular y validar textos
- Reconocer las funciones de cifrado que aporta PHP para aumentar la seguridad de las
aplicaciones
Identificar la sintaxis y funciones de uso con expresiones regula res
Reconocer los elementos de PHP que permitan el manejo de fechas
CONTENIDOS
4.1 FUNC IONES 4.4. 2 ASIG NA C iÓ N DE STR INGS
4.1.1 INT ROD U CCi ÓN . PROGRAMAC iÓ N 4.4.3 CO NCATE NACiÓ N D E TE XTO S
MOD U LAR 4.4.4 USO DE VARIABLES EN STRINGS. USO
4.1.2 DEC LARACi ÓN Y USO DE FUNCIO N ES DE LLAV ES
PERSON AL ES 4.4.5 M AN EJ O DE ST RINGS CO MO ARRAYS
4.1.3 A LCA NC E D E LAS VA RIAB LES DE CARACT ERES
4 .1.4 PASO DE PARÁMETR O S POR 4.4.6 CA D ENAS HERED O C
REFERENC IA 4.4.7 CA D ENAS N O WD O C
4 .1.5 PA RÁMETR O S PREDEFINI DO S 4.4.8 A NEXO: FUN CI ONE S ESTÁ N DA R DE
4.1.6 VAR IAB LES GLOB ALES USO CO N STR INGS
4 .1.7 VA RIAB LES ESTÁT ICAS 4.5 CIFRADO
4.1.8 RECU RSIVIDA D 4.5.1 A LGORI TMOS DE C IFRADO
4. 1.9 ÁM BITO D E LAS FU N CIO N ES 4.5.2 FU N Ci Ó N PASSWOR D_HAS H
4.2 INCLUS iÓN DE FICHEROS 4.5.3 OTRAS FUN CIONES D E CIFRADO
4.3 ARRAYS 4.6 EXPRESIONES REGULARES
4.3 .1 IN TRODUCCiÓN A LO S ARRAYS 4.6.1 FO RM ATO DE LA S EXPR ESIONES
4.3 .2 ARRAYS ESCALARES REGUL ARES PCR E
4.3.3 ARRAYS ASOCIATIVOS 4.6.2 PRO BLEMAS CON UN ICOD E
4.3.4 BU C LE FOR EACH 4.6.3 FUNC ION ES D E EXPRESIO N ES
4.3 .5 ARRAYS MULTIDIM ENSIONALES REGU LAR ES
4.3.6 INSP ECCiÓN DE ARRAYS MEDIANTE 4.7 FUN CIONES DE FECHA
FU N CI O N ES DE RECORRIDO
4.3.7 FUNCION ES Y ARRAYS 4.8 PRÁCTICAS RESUELTAS
4.3.8 USO D E ARRAYS EN FO RM U LA RIO S 4. 9 PRÁCTICAS PROPUESTA S
4 .3.9 A N EXO: FU N C IONES D E USO CON
4.10 RESUMEN DE LA UN IDAD
ARRAYS
4.11 TEST DE REPASO
4.4 ST RINGS
4 .4 .1 INT RO D UCC iÓ N
168 IMPLANTACIÓN D E APLICACIO NES W EB
4 .1 FUNCIONE S
4 .1.1 INTRODUCCiÓN . PROGRA MACiÓN
M O DULA R
Cuando nec esitamo s escribir muchas líneas de código para crear un a determinada aplicación ,
rápidamente se percib e el prob lema de tener qu e organi zar el prob lem a. Sin más elementos en
el len guaje, que los visto s en la unidad anterior, el problema se puede volver tan complejo que
puede ser inabordable.
Para mitigar este problema apareció, ya hace bastantes años , la program ació n m odular. En
ella el código se divide en módulos de tam a ño man ejable. Cada módulo realiza una función mu y
concreta y as í, el pro gram ador se con centra en esa tarea y evita la complejidad de ten er qu e resol-
ver el problem a completo . Es decir, la aplicación se divide en módulos , cada un o de los cuales se
pro grama de form a independ iente.
A los datos que necesita la función para realizar su ta rea se los llama pa rámet ros . Una función
no siempre re quiere parám etros .
Cua ndo una funci ón ha sido totalmente prob ada y validada, se pu ede ut ilizar las veces que
haga falta sin necesidad de tene r que volver a programarla; inclus o, si ha sido bien programada,
se pu ede utilizar en otras aplicaciones qu e escri bamo s. Así un conjunto de funciones útiles que
ha creado un pro gram ador, y que se utili zan en difer entes aplicaciones, form an lo qu e se conoce
como librería; un archivo que solo contiene funcion es.
[1] Las fun ciones poseen un nombre o identificado r que cumple las reglas indi cadas para los
dem ás iden tificad ores que conocemos (como los de las variables). Pero, a diferencia de las
variables, no utili zan el signo $. Se aconseja qu e el nombre de las funciones se escriba en
minúscul as. El identificador de una funció n siempre va seguido de parén tesis.
[2] Al definir las funcio nes, entre par én tesis se indican los paráme tros qu e necesita la fun ción
para ha cer su labor.
[3] Tras la declaración de los parámetros se escr ibe el código de la fun ción, en el qu e se imple-
menta lo que la función debe ser capaz de realizar.
UN IDA D 4. NOCIONES AVANZADAS SOBRE EL LENGUAJE PHP 169
[4] Las funciones pu ed en devolver un valor, resulta do del trabajo de la misma, mediante el
comando return.
PHP incorpora mu chas fun cion es ya creadas para trabajar (como la propia print o la mu y uti -
lizada echo). Por ejemplo, este código:
echo mt _rand(1,10);
Escribe un número aleatorio ent re uno y diez. La función mtj and (rntjand sería su iden ti -
ficador) recibe como parám et ros dos números y con ellos consigue devolver un número aleato-
rio entre ambos. Al ser una funció n perten ecient e al pro pio núcleo de PHP, no podemos ver su
código, pero si utilizarla como si fuera un a función que hubi éramos crea do nosotros.
Las funcio nes se pu eden declarar en cua lquier parte de una página PHP, pero lo aconsejable es
declarar las funciones en la cabecera de la página web, o incl uso, por encima del inicio del código
HTML, para facilitar su manten imien to.
Una vez definida un a función , para utilizarla, simp leme nte hay que invocarla pasando los
parámetros que req uiere, por ejemp lo:
$x=9 .75;
echo dob le(S) ." <br 1>" ; Il e s cr i be 16
echo doble($x ); l/ es cr i be 19 .5
Como se ha dicho, no siempre las funciones devuelven valores , por ejem plo:
La función no ti en e instrucció n re t urn, pu esto que no devue lve valores, sino qu e lo qu e hace
es escribir el texto en negrita.
170 IMPLANTAC iÓN DE APLICAC IONE S W EB
f unct i on f 1 () {
$h=9;
}
echo $h; l/ er r or : Vari abl e no de fin i da
La in strucción echo del ejem plo anterior, provoca un fallo de vari abl e no definida, po rque PHP
no reconoce a la var iable sh , la única $h del código se crea en la función y solo se pu ede usar en
ella; hacer refer encia a $h fuera dela funció n no tiene sentido, ya que tras el cierre de la llave en
la que se de finió, la var iab le muere. La var iab le es, en definitiva, local a la función . Otro ejem plo :
$h=5;
f unc t i on f1 ( ) {
$h=9;
}
ec ho $h; l /escr i be 5
En este código, se clarifica que una var iabl e no existe fuera de la función . Para PHP, en el ejem-
plo anterior, hay dos var iables llamadas sh: u na es global y la otra es local a la fu nci ón jr, Cuan do
se cierra la fun ción, la variable $h que se ha definido de ntro de la función desapa rece , y por ello,
en la últim a lín ea el valor qu e se escribe es 5, correspon dient e a la variable $h globa l.
de ese valor. El cambio que se rea liza dentro de la función no afecta a la variable exte rior a ella.
Por ello, lo que escribe es 7.
A veces, sí se desea qu e las funciones cambien el valor de las variables qu e se envían como
parám etro. El ejemplo más claro es el de la clásica funció n swap . La función swap sirve para inte r-
cambiar los valores de dos variables.
Se desea qu e está instrucción: s wa p ( $x , $y) , sirva para intercambi ar los valores de x e y. Para
ello, se pro grama de esta form a:
function s wap( $x , $y ) {
$au x=$x ;
$x=$y;
$y=$aux;
}
$va lor1 =12;
$va l or 2=17 ;
swap ($ valor1 ,$val or2 );
ec ho $va l or 1." ". $va lor 2 ;
En apariencia swap funciona , pero rea lmente no modifica los valores de las variab les svalort y
svalorz, pu esto que los pará metros ($x y $y) reciben un a copia de los valore s, tras invocar a swap,
sx e $y siguen valiendo lo mism o. La función echo escribirá I2 17.
Si deseamos modific ar los valores origi nal es, basta indi car el signo & antes del no mbre del
par ám etro que deseamo s modificar (véase Apartado 3,{ .6 "Referencias S:" , en la página 131). Así:
Escribe 17 I2 ya que aho ra sí que las variables originales han sido modificadas.
Cuando un a función utili za paso po r referenci a, entonces al invocarla debe recibir nombres de
variables y no expresiones o valores literales. Es decir, este código:
s wap (9 ,8 ); l/er r or : Se requiere una variable
La segunda vez que se invoca a la función, el parám etro $exponente toma el valor por defecto 2.
global $texto;
for ($i=1;$i <=$número;$i ++) {
$texto.=$carácterRel leno;
}
}
$texto="Hol a" ;
encadenar (12 ,"d" ) ;
e cho $texto ." <br />" ; // Es cr i be : Hol ad ddddddddddd
encadenar (9 ," +- ");
echo $texto. " <br / >"; // Es c r i be : Hol adddddddddddd +-+- +- +- +- +- +- +- +-
La función encadenar utiliza la variable global $texto definida fuer a de la función, gracias al
uso de la palabra global.
El código de la funció n escribe el valor de la varia ble $cuenta. Esa variable debería elim inarse al
abando nar la función , pero sobrevive y se puede seguir utilizando. Eso solo es posible gracias a la
línea en la que se define la variable como estática (stat ic $cu en t a=0) que solo se ejecuta en la
primera llamada. Si en esa línea eliminamos la palabra static, entonces la variable se crea en cada
llamada y las diez líneas anteriores, escr ibirían lo mismo (Esta es la llama da número r)
Es una técnica peligro sa, ya qu e se pueden generar fácilmente llamadas infinitas: la función
se llama a sí misma, tr as la llamada se vuelve a llam ar a sí misma, y así sucesivamente en un bucle
sin fin. Hay que ser mu y cauteloso con esta técnica y, en todo momento, pensar en la condición
que debe poner fin a las llamadas.
Como se ha comentado, la idea es solucionar pro blemas complejos de forma sencilla. El plan -
teamiento gene ral es que en cada llam ada a la funció n, ésta resu elva parte del pro blema y se
invoque a sí mism a de nuevo para resolver la parte que qu ed a, y así sucesivame nte. En cada lla-
174 IMPLANTACi ÓN DE APLICACION ES W EB
mad a el problema deb e ser cada vez m ás sen cillo, hasta llegar a una llamada en la qu e la función
devuelve un único valor. Tr as esa llamad a los res ulta dos se en cadenan hasta conseg uir devolver
el res ulta do final.
Es fun damental te ner muy clara la condició n qu e hace qu e la fu nción debe deje de llam arse
a sí mi sma; lo qu e implica calib rar m uy bien cuá n do acabar. Un bucle infinito , utilizando recur-
sividad, pu ed e caus ar grave s inestabili da des en el ord en ado r qu e in ter preta el código. En est e
caso ade más, el ordenador que ejecuta el código es el servidor we b, y un error de este tipo pued e
provocar qu e n o se pu eda acceder a ninguna de las págin as qu e aloj a.
El ejem plo clásico de fun ción rec ursiva es la qu e re sue lve el pr ob lem a del factori al. El facto-
rial es una op eración matem át ica que devuelve la multiplicación de todos los nú meros desd e el
número 1 hasta llegar al n úmero del que se calcula el factorial. Así el factorial de 5 es 1'2'3 '4 '5, es
decir 12 0 . La func ión PHP de cálculo de facto rial se puede escribir así :
[1] factorial(4) = 24
[5]
~~-
Figura 4.7: Ciclo de llamadas a la función recursiva facto ria l
Para la in strucción [a ctorialiq); usando el ejem plo anterior, la ejecució n del pro grama genera-
ría los siguient es pa sos:
[1] Se llam a a la func ión fact orial usando co m o parámetro el número 4 que se rá copiado en la
variable-parámetro $n
[2] Co m o sn»t , en t onces, el resu lta do será el número 4 m ultiplicado por el resultado de la lla-
m ad a factoria/(J)
U NID AD 4. N O CION ES AVAN ZADAS SOBRE EL LENG UAJE PHP 175
[3J La llamada ante rior hace que el nu evo $n (variable distinta de la anterior) tome el valor 3,
por lo que esta llamada devolverá 3 multiplicado por el resultado de la llamada [actorializ¡
[4J La llamada ante rior devuelve 2 multip licad o por el resultado de la llam ada [actorialtú
[5J Por primera vez el resultado de la llam ada recursiva devuelve un res ultado directo, el
número l
[6J Gracias a ese resultado, la llamada [actorializ) da como resultado 2 ';'l , es decir 2
[7] Eso ha ce que la llamadafacto rial(3) devuelva 3 ';'2, es decir 6
[8 ] Por lo que la llamada [actoria lis ¡ devuelve 4 ';'6 , es decir 24 Y ese es ya el resultado final
Pero por la man era de impl em entar func iones en los ordenadores , es más costos a la recursivi-
dad, ya qu e requiere realizar muchas llam ad as a fun ciones, y cada llamada genera una copia del
código de la función. Esto sobrecarga la zona de m emoria de las computadoras conocida como
montículo o heap. Es decir, es más rápida y m enos cost osa, en términ os de mem oria, la solución
iterativa de un problema rec ursiv o.
• El código es muchísimo más claro en su versión recur siva y no implica un gra n coste de
procesamiento al ord enador
176 IMPLANTACiÓN DE APLICACION ES W EB
4 .2 IN CLUSiÓN D E FI CH ERO S
Dentro del códi go PHP se puede hacer uso de las in strucciones include y/o requ ire para incl uir
el código de otro archivo. El archivo pu ede ser de cualquier tipo : html, php u otras extensiones.
Esto permite la creación de archivos que conten gan librerías de funciones o código reutilizable
en mú ltiples páginas.
Tanto inc1ude como require lo qu e hacen es simpleme nte copiar y pegar el código del archivo
tal cual. La diferen cia es que si el archivo no existe (o no se enc uentra), incl ude seguirá ejecu-
tando el código (aunque normalmente mostrará un a adverte ncia de l error), mientras qu e r equire
gene rará un error grave y parará la ejecución del cód igo.
En la in clusió n de archivos PHP, se en tie nd e que el código que se incluye es un archivo nor-
mal, en el qu e el código PH P se encuentra entre las etiquetas <?php y?>, mientras que el código
fuera de esas etiquetas se entiende que es HT ML.
Ejemplo de uso:
inc lud e ( " f unc i ones . php" ) ;
4 .3 ARRAYS
4.3.1 INTRODUC CiÓN A LOS ARRAY S
Los tip os de datos que cono cemos hasta ahora no
$nota permiten ma nejar grandes cantidades de datos a la vez.
nombre de l array. ~7 $nota[o] Por ejemplo, im aginemos que deseamo s almacenar las
permi te referirnos notas de una clase de 25 alum nos, no habr á más reme-
al array ente ro
8 s not a ji] dio, con lo qu e sabemos hasta ahora, qu e declarar 25
6 sn otajz] variables.
6 sn otalj] Eso es t reme ndamente pesado de pro gramar.
5 snotaja] Utiliz ar esos dato s significaría esta r contin uame nte
4 sn otajg] man ejando las 25 varia bles. Por supuesto, si ne cesi-
3 tam os almacen ar 200 0 notas, el problem a se hace
$nota[6] inma ne jable.
9 $nota[7]
Por ello, en casi todos los lenguajes, se pueden
Figura 4.8: Ejemp lo de array para almace- agru par una serie de variables del mism o tipo en una
nar no ta s académicas mi sma estructura que comúnme nte se conoce como
UNIDA D 4. NOCION ES AVAN ZADAS SO BRE EL LENGUAJ E PHP 177
array'. Esa estruc tura permite referirnos a todos los eleme ntos, pero también no s permite acceder
individualmente a cada elemento.
Los arrays son un a colección de datos a la que se asigna un identi ficador (por ejemplo nota). Es
una variable, solo que ti en e capacidad para almacenar un a serie de valores . Para acceder a un dato
individual de la colección hay qu e utili zar su posición dentro del array. La posición es un número
entero que se llama índice. Así, para acceder a la quinta nota, se utilizaría la expresión $nota [4].
Hay que tener en cuenta que en los arrays el primer eleme nto tiene como índic e el número
cero. El segundo el un o y así sucesivamente; es decir , nota [4 ] en rea lidad es el quinto elemento
del array.
Esta definición de array s es la com ún en todos los lenguajes clásicos. En el caso de PHP, los
arr ays son elementos má s complejos, pue sto que admiten datos de distinto tipo. La realidad es
que los arrays de PHP son, en realidad , elementos qu e asocian un valor y una clave (ar rays aso -
ciativos) como se explica más adelante.
$nota [0 ]=7;
$nota[1] =8;
$nota [2] =6;
$nota[ 3] =6;
$nota [4]=5;
$nota[5]=4;
Acceder a una no ta cualqu iera, re quiere conocer su ín dice. Se observa en el códig o anterior
que no hace falta declarar el array (siguiendo el estilo habitual de PHP), simplemente se utiliza.
Es válido incluso este código :
Es decir, los datos pued en ser heterogéneos, de distinto tipo. También podemos asignar valo-
res a un array sin indicar índice:
Otros nombres que se utilizan habitualmente para referirse a los arrays son: lista s, matrices,
arre glos,... Parece claro que array es el más aceptado en la actualidad, los otros términos son
más ambig uos .
178 IMPLANTAC iÓN DE APLICAC IONES WEB
En este caso, los índices se van asignando automáticamente (empezando por el cero),
La variable sí sirve para recorrer cada elemento del arra y. Va cam biando de o a 999 y así en dos
líneas de cód igo, se rellena de for ma cómoda el array,
Esa línea asigna valores a cada eleme nto del array emp ezando por el cero. Es decir, es equiva-
lente a:
$numero[0]=17;
$numero[1] =34;
$nu mero[2] =4S;
$numero[3]=2;
$nu mero[4] =9;
$numero[S]=-S;
$nu mero[6]=7;
Esta funció n tien e posibilida d de elegir índices concretos, Eso se hace colocando el índice y
despu és el símbolo => antes del valor.
U N IDA D 4. NOCIO NES AVAN ZA DA S SOBRE EL LENG UAJE PHP 179
Ejemplo:
Sería equivalente a:
$n umero[0 ]=17 ;
$nu me ro [1]=34 ;
$ numer o[3 ]= 45 ;
$ numero[4] =2;
$n umero[ 7] =9 ;
$n umero[10 ] =- 5;
$numero[11 ] =7 ;
Por ejemplo, si deseamo s recorre r un array qu e ya tien e valor es para, por ejemplo, mo strar
cada elem ento en pantalla, el código sería:
mento 2 del array se encuentra con que es un a posic ión indefi nida. Dicho de otra forma : que es
un índice de array que no existe.
La func ión count devuelve el tama ño del array sin tener en cuenta los eleme ntos vacíos; es
decir, solo cuenta los elementos definidos. Por todo ello el código anterior:
Pu ede fallar si el array $valor tiene eleme ntos vacíos. Además los últimos eleme ntos no sal-
drí an porque el con tador no llega a ellos al conta r elementos y no los índi ces más altos .
Para evitar eso, pode mos utilizar la función isset que devuelve verdadero cua ndo a la variab le
que se le pasa como parámetro se le ha asignado ya un valor. El bu cle anterior quedaría entonces:
$tope=count($nota);
for ( $i =0 ; $i <$t ope;$i ++){
if (isset ($n ota[$i) ) )
echo $nota[$ i) . " <br />" ;
else
$tope ++;
}
El código es más enrevesado . Ahora solo se escribe cada elemento del array si la fun ción isset
nos asegura que dicho eleme nto tien e valor; la variable $tope va in crem entando su valor a fin de
alcanza r al último elemento real del array.
La ventaja de estos arrays es qu e son más legibles, la desventaja es que no permiten su manejo
m edi ante los bu cles clásicos. Al simular datos de tipo clave/valor se relacionan muy bien con [as
bases de datos. Estos arrays también perm iten el uso de la función arrayí):
$nota=a r ra y("Ant on i o" =>5," Lui s"= >9,"Ana" =>8," Eloy" =>5,
" Gab r ie l a"=> 6 ," Ber t a"=>7);
UN IDA D 4. NOCIONES AVANZADAS SOBRE EL LENG UAJE PHP 181
La func ión arrayt) incluso perm ite mezclar valores esca lares y asociativos (aunque no es mu y
recom endable), por ejemplo:
$not a =a r r ay("Ant on io"= >5 , 4, 7 , 5=>6, " Lu is" =>9, 2, "Bert a" =>7);
array es el nombre del array qu e se va a recorrer ; índice es la variable que recogerá el índice de
cada eleme nto a m edida qu e se recorr a el array; y valor es la variable que irá recog iendo el valor
de cada eleme nto del array . Ejemp lo:
$nota[0 ] [0]=9;
$nota [0] [1] =7 ;
$nota [1] [0] =9;
De esa forma podemos con siderar a los arrays como una especie de almacenes de dato s que se
parecen mucho a las ta blas de las bases de datos relacionales; ese detalle facilita mu cho la com u-
nicac ión entre PHP y las base s de datos. Otra forma posible es:
$poblaci on=array (
" Es pa ña" => ar r ay(
"Palencia"= >80000,
" Va l l ado l i d" => 350000 ,
"Oviedo"= >1200(0),
UNIDAD 4. NOCIONES AVANZADAS SOBRE EL LENGUAJE PHP 183
El código ante rio r no tien e porque ocup ar tan tas líneas, pero es más legible así.
El resultado es:
Lo que no s indica el res ulta do es qu e el valor de cada eleme nto es un array, con lo cual el
código que realme nte nos perm it e examina r cada valor sería:
184 IMPLANTACiÓN DE APLICACION ES WEB
$poblac ion=ar r a y(
" Espa ña"= >ar ra y(
" Pa l e ncia"= >80000 ,
" Val la do lid"= >350000,
"Ov i edo" =>120000
),
"Francia"= >array (
"Paris"=> 7000000 ,
" Lyon" =>2100000
);
f oreach ( $pob l a c i on as $pai s => $ciudades ) {
f oreac h ( $c i udades as $c iudad => $valor ) {
ec ho " <p>País: $p a i s , Ciudad : $ciudad," .
" pobl ación = $v a l or</p >";
}
FUNCiÓN USO .
current(arra y) Devuelve el valor del eleme nto al qu e actua lme nte señala
el puntero. Si no hay ningún eleme nto, devu elve false
key(array) Devu elve la clave a la que señala el puntero
nexttarray) Mu eve el puntero al siguiente elemento del array y
devu elve su valor. Si el elemento actual es el últ imo, next
devuelve false
U NID AD 4. NOCIONES AVANZADAS SOBRE EL LENGUAJE PHP 185
FUNCiÓN USO
prev( array) Mueve el puntero al elemento anterior del array y
devuelve su valor. Si el elemento actual es el primero,
prev devuelve false
reset(array) Coloca el puntero en el primer elemento del array y
devuelve su valor. Si no hay ningún eleme nto en el array,
devuelve false
endía r ray) Coloca el puntero en el último eleme nto y devuelve su
valor
$array=a rray(1,2,3,4,5,6,7);
prueba($array);
ec ho $a r r ay[ 0] ; // Es c r i be el va lor: 1
La función prueba modifica el elemento con índice cero en el array para darle el valor IS. Sin
embargo, al ejecuta r el código PHP anterior, verem os el número 1 en pantalla. La modificación
de la función prueba se ha hecho con el array $a qu e es un a copia en realidad del original $array.
Si deseáramos que realmen te la función modifiqu e el array, necesitamo s pasar el arr ay por
referen cia, com o ya se ha visto en PHP basta con indi car el símbolo & delante del pará metro (o
parám etro s) que deseamo s pasar por referen cia:
<lDOCTYPE html>
<ht ml lang="es-ES" >
<head>
<meta charset="UTF-8">
<title>Array e n fo r mu la rios </ t i t l e >
</h ead >
<bod y>
<form action="formArrayget .php" method="GET" >
Elige estas opc i ones :<br / >
<input type="checkbox" na me="opciones[ ]" value="menor"
id="menor" / >
<l ab e l for="menor" > Menor de edad </ l a bel ><br / >
<label for="minus" > Mi nusval ía< /label><br / >
UN IDAD 4. NO CION ES AVAN ZADAS SO BRE EL LEN GU AJE PHP 187
La salida de dich a página tras recoger los valores del formulario anteriormente comentado s
es:
Indicando que el array opciones (presente en el array de rec ogida del formulario $_GET) tiene
do s elem entos (con índices o y r) con las valor es me nory numerosa (corr espondientes a los valores
de los controles chec kbox del formulario ).
Ejemplo:
<input type="checkbox" na me ="c ompra [ ' per i od i c o ' ] "
valu e ="1.2" id="periodico" / >
<label for="periodico" >Comprar pe r iód ico </label ><br / >
<inp ut t ype="checkbox" name="compra ['revista' ]"
va l ue =" 2 . 5" i d="re vis ta " / >
<label for="revista" >Compr a r revista< /label><br / >
<i nput t ype="checkbox" na me="compra [ ' libro' ]"
va lu e =" 15" i d="libro" / >
<la bel f or=" libro" >Compr a r libro </li bro>< br / >
De esa form a, tanto el índice del array, como el valor nos proporciona información. Si esos
chec kbox les pon emo s en un formulario y pul samos todos, se recibirá un array llam ad o compra
con los índices periodico, revista y libro y los valores 1.2 , 2 .5 Y15 respectivam ente.
FUNCiÓN SIGNIFICADO
coun t(array) Devuelve el número de elementos del arra y
print_r(array) Escribe el contenido del array (tanto valores como índices)
is_array(array) Devuelve verdadero si el parámetro que recibe es un array
FUNCiÓN SIGNIFICADO
sort(array, [f1ags]) Ordena el array indicado. Si no se indica el segundo par ám etro, or dena
de forma normal sin convertir los tipos de datos
FUNCiÓN SIGNIFICADO - ,
sort SORT_LOCALE_STRING. Ordena basándose en la con figura-
(conti nuación) ción regional esta blecida con la func ión setl ocale. De modo que
s e t l oc a le ( LC_ALL, "es _ES" ) estab lecería como configuración
regional, espa ñol de Espa ña (en Windows se usa el código esp_ESP)
FUNCIÓN SIGNIFICADO
arsortía rray, Funciona igual qu e asort, pero ordena en orden de scendente
[flags])
ksorttarray, [flags ]) Idénti ca a sor t, pero se orden an las claves en lugar de los valores. La re la-
ción de la clave junto con su valor correspondiente se respeta
krsort(arr ay, Como la anterior pero el orden es descendente
[flags])
natsort(a r ray) O rde na el array de m odo qu e se orde na en la for ma en la qu e lo h arí a un
ser h umano. Es decir el texto imaqenz iría antes que i magenro. Se respeta
la re lación entre clave y valor, por lo que n o se pierd en las claves.
natcasesort(ar ray) Igual qu e la anterior, pero no di stingu e entre mayúsculas y minúsculas.
array_ffiultisort( Permite ordenar varios arrays al mi smo tiempo, indicando cada array y
arrayr , (opcionalmente) la forma de ordenar.
argr Ó arrayz,...
) La forma de or de nar se indica m ed iante las siguie ntes palabras: SORT_
Ase (orden asce n de n te), SORT_DESe (orden desce nde nte), SORT_
REGULAR (ord en n ormal), SORT_NUMERIC (ordenación n umérica),
SORT_STRING (ordenación para texto) . Ejemplo:
array_multisort(
$a ,SORT_DES , SORT_N UMERIC,
$b,SORT_STRING
)
FUNCiÓN SIGNIFICADO
array_search( Busca el valor indicado en el array y de vuel ve la clave de l valor en
valorBusq, array el array o fal se si no lo encue ntra . El tercer parámetro (est ricto) es
[,cstricto] opcional y en caso de valer verdadero (por defecto vale falso), so lo
) encuentra el valor si además de se r ig ua l, es del mismo ti po
in_array( Busca el valor indicado en el array , de forma estricta o n o (según
valorBusq , array indique su terc er pa rámetro) y de vu elve true si lo en cu ent ra o false
[,estricto] en caso contrario
)
array_key_cxists( Devuelve verdadero si en el array existe la clave in dicada
array, clave)
U NIDAD 4. NOC IONES AVAN ZA DA S SOBRE EL LENGUAJE PHP 191
FUNCiÓN SIGNIFICADO
pre~prep ( Devuelve un array que contien e los valores de l array que cumplen la
expresionkegular, expres ión regular. Más ad elante, en esta misma unidad, se explica el
arrayj.flag] funcionamiento las expresiones regu lar es
)
Si se usa, como tercer parámetro, la co nstante PREG_GREP
INVERT, el array resultad o con tiene los elemen t os qu e no cu m plen
la expres ió n regul ar.
array_fi lter( El seg un d o parámetro es el nombre de una funci ón existe n te , indi-
array.función ) cada entre comillas. Dicha función se creará de modo qu e ten ga un
solo par ámetro y devuelva ver da de ro o falso en base a una condición
qu e se valorará en el parám et ro .
FUNCiÓN SIGNIFICADO
shuffle(ar r ay) Reordena de forma aleatoria el array
array_rand(a rr ay) Devu elve un índice alea to rio de l array
FUNCiÓN SIGNIFICADO
array_keys(a rray) Devuelve un array escalar qu e contiene todas las claves del array
array_valu es(a r ray) Devu elve un array escalar qu e con tie n e todos lo s valores del array .
Los índices del array original se elim in an
array_flip(a rray) Inter cambia las claves por los valores en el array. Es decir: las claves
pasan a se r valores y los valores las claves de di chos valores
array_co m bin e( To ma los valores de am bos arrays y devu elve un n uevo array donde
aJ'rayI , arrayz) las claves son los valores del primer array y los valores son los del
seg u ndo arr ay
Am bos arrays deb en co ntener el m ismo número de valo res (de otro
m odo oc urrirá un error). Las claves de am bos arrays se ign oran en
el res ultado fin al.
192 IMPLANTACiÓN DE APLI CACION ES W EB
FUNCiÓN SIGNIFICADO
array_fill(in icio,n,valor) Devue lve u n array qu e contiene n elementos, todos ellos con el
valor indicado. El parámetro inicio indica cuál será el primer índice
del array (es numérico); los siguientes índices serán los nú meros
consec utivos a ese in icial
ar ray_fiIL keys( Devuelve un array a partir de otro , indica ndo medi ante el par áme-
clave s,valor) tro claves, cuyos valores se considerará n [as claves del nuevo. Todo s
los eleme n t os del nu evo array valdrán el valor indicad o
array_unique(array, Elimi na los valor es dup licado s en el array. El segun do parámetro
[flags]) sirve para indicar la form a de comparar [os valores y utiliza las mis-
mas po sibilidad es que las indicadas en la función sort
array_count_values( Genera un nuevo array en el que [os índices son los valores del
array) array que reci be como parámetro y [os valores son el númer o de
veces que cada valor antiguo aparece en el array origina l
array_sum(array) Suma to dos los valores del array y retorna el resulta do
array_p roduct(a rray) Mu lti plica, entre sí, todos los valores del array y retorna el resulta do
array_shift (arra y) Retira el primer elemento del array , des plazando a t od os los dem ás
eleme n tos en el mi smo. Es decir, no deja el hu eco del elimina do.
Los índices funcion an de forma escalar, es decir comien zan a
numerarse de sde el número cero. La función devu elve el elemento
elimina do
array_unshift( Coloca al principio del array los valore s in dicados y devuelve el
a rray, valorr [,valon ,...]) tama ño del nuevo array
array_pop(arra y) Reti ra del array su último elemento y [o devuelve como resultado
ar ray_push( Coloca los valor es indicado s (al meno s uno) al fina l del array orig i-
array, valorr [, valorz,...]) n a!. Com bin ado con a rray_pop perm ite simular pilas
array_map(fun ción , lndica una funci ón existe nte (pero entrecomillada) y devuelve un
array ) array, resu ltado de aplicar la fu nción in dica da a cada element o del
array. La función se debe definir usando un solo parámetro, ese
par ám etro representa a cada elemento del array
fu nction dobl e ( $v ) {
return $v*2 ;
}
FUNCiÓN .. 'SIGNIFICADO
array_walkJecursive( In dica una fu nc ión existente (pero en trecomillada) y la ap lica a
array, cada elemento de l array. Al definir la función que se usa, se utili-
función zará un solo parámetro qu e representa a cad a elem ento de l array.
El array b será: a, b, e, x, x
array_walk(array, In dica una fun ción existe n te (pero entrecomillada) y la aplica a
función ) cada eleme nto del array. La función al definirla usará un solo pará-
m etro qu e rep resenta a cada eleme nto de l array. Dicho elemento
se define por referencia al crear la fun ción (es decir utiliza el opera-
dor &) de ese modo la función realme n te podrá modificar el valor
de cada elem ento.
Ejemp lo :
f uncti on do ble(&$x){
$x*=2;
}
$a=arra y( 1,2 ,3,4 ,5) ;
ar ray_wa lk($a,"dob le");
pr int_r( $a ) ;
/ / Es c r i b i r í a : 2,4,6,8,10
array_s li ce ( Devuelve una porción del array, qu e se indica com o primer pa rá-
array, m etro, de modo qu e se toman los elemen tos desd e la po sición
poslnicio inicia l in dicada por el parámetro poslnici o, hasta la posición final
[,posFin] indicad a po r el parámetro posFin. Si el pa rámetro posFi n se omite,
en ton ces se toma desde la po sición inicial hasta el último elemento
del array
FUNCiÓN SIGNIFICADO
array_splice( Elim in a los elementos del array, usad o co mo primer pará metro
a rray.poslnicio de la fu n ción , desd e la posición marcada me dia n te el par ámetro
[,tarna o ñ
poslnicio h ast a el final. Este pa rámetro pued e ser n egati vo y en t on -
La r r a) Subst]] ces la posición (poslnicio) desd e la qu e elim inar se cu enta de sde el
final
$a=array (
979797979 ,
" Ma nue l" ,
1250 . 45
);
list ( $tlfno,$ nombr e ,
$sa lar i o )=$a ;
/ / $t e l e fono vale 979797979 , $nombre vale
// Ma nue l y salario vale 1250 ,45
UNIDAD 4. N O CI ON ES AVA N ZA DA S SOBRE EL LENG UAJE PHP 195
$a=" Ho la";
$b=176;
$e=t r ue;
$array=eompaet("a"," b" ,"e") ;
pr int_r ( $array ) ;
I*S a l e :
Array
(
[a ] => Ho la
lb ] => 176
[e ] => 1
4.3.9.8 CO MB IN AC iÓ N DE ARRAYS
FUNCiÓN SIGNIFICADO
array_intersect( Gen era un nuevo array, intersección de los indicados. En el
arrayr .arrayz],...]) arr ay resultante solo aparecen los valores dup licado s en todos
los arrays. Se mantienen los índices, pero toma los primeros
índices que aparezcan en la lista de arrays
array_intersect_key( Genera un nuevo array en el que aparecen las claves pr esentes
arraYI ,arraY2,... en todos los arrays indicados como parámetros
)
array_diff(arrayr.ar rayz,...) Genera un nuevo array en el que aparecen los valor es del pri-
mer array que no están en el segun do (array de diferencia). La
relación entre clave y valor se mantiene
array_diff_key ( Gen era un nuevo array en el que aparecen las claves del pri-
arrayr .arrayz,...) mer array que no están en el segundo. La relación entre clave
y valor se mantiene
196 IMPLANTACiÓN DE APLICAC IONES WEB
FUNCiÓN SIGNIFICADO
arrayjnergefarrayt.ar rayz,...) Un e los do s arrays qu e se le pasan. Los valore s del segun do se
coloc an a continuac ión de los del primero. Si el array es aso-
ciativo, en caso de qu e haya claves repetidas, solo se queda con
las del segun do array
$a=array (
" uno" =>"Pedro" ,
"dos"=>"Anto nio",
"tres"= >"Santiago"
);
$b=array (
"dos"= >"Sara",
" t r es"=>"Ant oni o" ,
" cuatro"= >"Santiago"
);
$c=array_merge($a ,$b);
pr i nt_r ( $c ) ;
/ * obti ene:
Array
(
[uno] => Pedro
[dos ] => Sara
[tres] => Antonio
[cuatro] => Sant iago
)
4.4 STRINGS
4.4.1 INTRODU CCiÓN
La palabra Stri ng en ing lés significa cadena. Sin embargo, en realid ad , por Stri ng se entiende
una serie de caracteres, lo que n ormalmen te llamamos simplemente texto. En toda aplicación
informática los strings son el tipo de dat o fundamental. Tanto es así que en realidad ya hem os
necesitado usar strings en los apartados anteriores. Sin embargo ahora vamos a desglosar todo el
funcionamiento de los strings que permite PHP.
UNIDAD 4. N O CI ON ES AVAN ZA DA S SO BRE EL LENGUAJ E PH P 197
En el caso de los caracteres especiales, éstos solo se pueden in dicar dentro de comillas do bles.
Por pantalla saldría Hola a todos y todas . Como se observa en el ejem plo se pued en concatenar
tanto variables de tip o strin gs como textos literales (se encade na el conteni do de la variable $texto
se añade un espacio en blan co y se concatena con el conten ido de la variable textoz).
$ l i bre=" f r e e";
ec ho "En inglés libre se dice $libre";
l / mues t r a : En i ngl és l i br e se d ice fr ee
Ya que no existe la variable slibrestyle, y no hay razón para que haya qu e cons ide rar slibre y
luego style como textos separados. Sí fun cion a mediante:
e c ho " <br /> Me gusta pati nar en {$libre} s t yl e " ;
l / Sa l e : Me gusta patinar en fr e es t y l e
Las llaves son además imprescindibles para utilizar con arrays; aunque, en cualquie r caso el
operador de conca te nación de texto puede ayudarno s de forma más clara , con expresiones más
com plejas.
Aunque realmente no se con sidera un array; de hecho, no se admite el uso de foreach para
recorrer strings, ni tampoco funcionarían ninguna de las funciones de arrays.
$nombre="Jorge";
$texto= <<<fin
Mi queri da amiga <br />
es cri bo estas l íneas espera ndo que me l eas . <br / >
Fi r mado : $nombre <br / >
fin ;
echo $texto;
En el ejemplo se ha remarcado el texto que se almacena en la variab le $tex to. El texto a asigna r
es el que sigue al símbolo de inserción de documento «« ) y al marcador de texto, que es un
grupo de caracteres concreto (en este caso se ha usado la palabra fin como marcador de texto). El
marcador se indic a inmediatamente despu és del símbolo « < y vuelve a aparecer en la primera
columna tras el último carácter que se almacenará en la variable.
UN IDA D 4. NOC ION ES AVA NZA DAS SOBRE EL LENG UAJE PHP 199
Mi queri da a miga
escr ibo estas l íne as esper a ndo que me leas .
Firm ado : J org e
4.4.7 CA DE N AS N OWD O C
Funciona igual que el an te rior, solo que entiende que el texto es totalmente literal, por lo que
no se interpretan los nombres de variable ni los códigos de escape. Para difer enciar las dos nota-
ciones, en ésta el marcador de línea va entre comillas simples; pero solo en la declaración , no en
el cierr e. Ejemplo:
$nombr e ="Jorge" ;
$texto=« <' fin'
Mi querida amig a <br / >
escri bo estas líneas es pera ndo que me leas. <br />
Fi rmado : $nombre <br / >
fin;
echo $texto;
Resultado:
Mi querida amig a
escr i bo estas l ín eas es pe ra ndo que me l ea s .
Firmad o : $no mbre
FUNCiÓN SIGNIFICADO
strcmpítext o r, textoz)Compara los dos texto s (strings) y devuelve cero si son iguales, uno si
el primero es mayor en ord en alfabético (usando el código ASCIl) y-1
si es mayor el segundo string
st r ccasern p ítexto r, Igual qu e la anterior pero no tiene en cuenta las mayúsculas (solo en
text02) inglés)
strnatcmpítext o r, Igual que las anteriores, pero la comparación que hace
textoz) tie ne en cuenta la form a natural hum an a de ord ena r. Así
por ejemplo, el texto imaqenz sería considerado meno r que
im aqent t (en orden alfabético es mayor)
strcasenatcmpítext o r, Igual que la anterior, pero sin consi derar mayúsculas ni minúsculas
textoz)
levenshtein(texto1, Devuelve un número entero conocido como distancia Levenshtein
textoz) qu e simboliza el número de mo dificaciones al primer texto que nos
per m itirían conseg uir el segundo texto . De mo do que si esa distancia
es peque ña, los dos textos son parecidos
metaphone ( Devuelve un código que indica la forma de pronu nciar una palabra
texto (usa ndo el inglés), de modo que dos palabras con pronunciación simi -
[,fonemas) lar tendrían el mismo código
)
El parámetro f onemas indica el número má ximo de fonemas a tener
en cuenta (menos, más palabras parecidas habrá)
similartext f Devuelve el número de caracteres parecidos entre el textot y el textoz .
textor , En realidad lo interesante es usar el tercer parámetro porcentaje. Este
textoz parámetro se pasa por referenc ia, por lo que tiene que ser un a varia-
[,porcentaje] ble. Dicha variab le recibe un porcentaje de similitud en tre am bas
) cadenas de texto
UN IDAD 4. NO CIONES AVANZADAS SO BRE EL LENGUAJ E PHP 201
FUNCiÓN SIGNIFICADO
I st r pos (t ext o, textoBusq ) Devu elve la pos ición del segun do texto dentro de l pr imero (empieza
a contar la posición des de el n ú m ero cero) . Si el t exto buscad o no se
en cue n tra , devuelve false oEjem plo:
ec ho strpbrk (
" este año no voy a la montaña" , "ñyn" );
Escr ibe (pu esto que encue n tra pri mero a la elle):
ño no voy a la mont a ña
strireplacef Localiza todas las aparicion es del textoBuscado en el te xto que se
textoBuscado, pasa com o tercer parámetro y las cambia por el texto indicado en
textoReern plazo , textoReemplazo
texto
[,veces] El cuarto parámetro (opcional), veces, se envía por referencia y alma-
) cenará el número de reemplazos realizados
strjreplaceí Idénti ca a la anterior, pero n o disting ue entre m ayúsculas y
textoBuscado, minúscul as
textoReemplazo,
texto [,veces]
)
substrj-eplaceí Coloca en el texto original, el t exto indicado como textoReemplazo ,
texto, de modo qu e sustituya a todos los caract eres desd e la po sici ón indi-
textoReern plazo, cada como pos/nidal, hasta el fin al o hasta el número indicado con
poslnicial [,posFinal] el parámetro posFinal
)
202 IMPLANTACiÓN DE APLICACION ES W EB
FUNCIÓN SIGNIFICADO
strtr( Cambia byte a byte (usando for ma to ASCll) cada carácter del
te xto, texto reemplazando el pr imer carácter del string origen por el pri-
ori gen , mer carácter del string de stino, el segundo por el segundo y así
destino) sucesiva mente
strtr( Hace reemplazos múltiples de carac teres en el texto y devue lve el
texto , texto resulta nte de realizar esos reemplazos
array'I'raducción
El array qu e se usa como segun do parámetro, contien e datos de
forma qu e cada índi ce se bu scará en el texto y se reemplazará por
su valor.
st rtr Ejemplo:
(conti nuación)
$array=ar r ay ( "a"= >"á","e"= >"é" ,"i "= >"í",
- >"ó") ,.
"0"-
ec ho strtr ( "es t e texto t iene", $a rray)
Escribe:
és té t éxtó t íéné
strip_tags( Retira del text o todas las etiquet as de tipo HT ML o PHP que haya
texto contenidas, excepto las qu e se indiquen en el paráme tro noRetirables,
[,noRetirables] qu e es un string qu e conte n drá las etiquet as qu e no qu erem os reti-
) rar seguidas. Ejem plo:
Elimina del texto todas las etique tas qu e haya excepto p y stronq
st ri pslash (text o) Elimina en el texto todos los caracteres back slash (\). Es mu y útil
para texto pro cedente de lengu ajes de pro gram ación
FUNCiÓN SIGNIFICADO .
substr( Extrae del string que se pasa como pr imer parámetro, el texto que
texto , va desde la posición indicada (em pezando a contar por cero) hasta
poslnicial el final. O bien , extrae de sde dicha posición el número de caracteres
[,tam añ o] indicados por el parámetro tamaño
UNIDAD 4. N O CIONES AVANZADAS SOBRE EL LENG UAJE PHP 203
, FUNCiÓN SIGNIFICADO r
st rs t r (texto, textoBusq ) Busca un str ing den tro de otro y devuelve los caracteres desde su
primera aparición hasta el final. En la respuesta incluye el tex to bus-
cado. Ejem plo:
$a ="Esta es la co mu nidad de Casti l la León";
ec ho s trs tr($a, " Cast i lla" ) ;
l/escribe: Castilla León
st ris tr(t exto, textoBusq ) Igual qu e la anterior pero no tiene en cuen ta ma yúsculas ni
minúsculas.
strtok(st r ing [,token ]} Permite ext raer un text o en base a un a serie de carac te res , de modo
que primero coge el primer texto den tro del st ring ori ginal (primer
token ) y en las siguie ntes llam adas irá devolviendo el resto de to kens
(en las siguientes llam adas no se usa el pr imer parám etro) hasta que
tras devolver el último retorna el valor falso.
Ejemplo:
$s= " es t e es e l texto , l e va mos a par ti r ";
$t ok=strtok ( $s , " , " ) ;
wh il e ($ t ok !=fa lse ) {
echo $tok . " \ n" ; $tok=s trtok (" , ");
}
Escribe:
este
es
el
texto
le
vamos
a
parti r
str_repeat(texto, veces) Devuelve un stri ng qu e contiene el texto indicad o repetido las veces
que se indiquen en el segundo par ámetro.
stcshuffie(texto) Devu elve una copia del texto donde cada carácter se ha movido alea-
toriamente. Es decir, form a un anagrama.
strrev(texto) Devuelve un st ring que contiene el texto original al revés.
st r jsplitít ext o Devuelve un array en el que en cada elem ento hay un t ro zo del texto
[,tam año]} origina l. El text o se troce a por tam a ño de caracteres; si n o se indica
tamaño se divide carácter a carácter; si, por ejemplo, tamaño vale 3,
se divide de tr es en tres caracte res.
204 IM PLANTA Ci ÓN DE APLICACION ES W EB
exp lode ( Devuelve un array donde cada eleme nto del mismo es una subca-
delimitador, den a qu e pro cede de separar el tex to ind icado, en base a un delimi-
texto tador. El parám et ro lím ite indica el máxim o número de cadenas a
[,lím ite] extraer. Ejemp lo:
Escribirá:
Array ( )
( [0 ]=>soy una f r as e
[1 ] =>con unas
[2 ]=>c ua ntas
[3] =>comas
•
lt ri m(t exto, [caracter es]) Elimina los caracte res indicado s qu e esté n al inicio del texto . Si no
se indican caracte res, se eliminan los espacios en blanc o
UN IDAD 4. NOCIONES AVANZADAS SOBRE EL LENGUAJE PHP 205
FUNCiÓN SIGNIFICADO
rtrim(texto, [car acteresj) Igual que la anterior, pero elimina los caracteres al final del texto
trim(text o, [caract eresj) Sin usar el segundo parámetro, elimina del texto los espacios en
blanco del principio y el fina l. Elimina ta mbién saltos de línea,
retorn os de carro , tabul ador es, nulos y caracteres de salto vertical
FUNCiÓN SIGNIFICADO
chr(códigoASCll ) Devuelve el carácter correspondiente al código ASCII
indicado
ord(carácter) Inversa a la anterior. Devuelve el código ASCII del carácter
indicado
FUNCiÓN SIGNIFICADO
money_format ( Devuelve un string resultan te de aplicar al número que se recibe como
formato, segundo parám etro el formato de moneda indicado median te el pri-
número mer parám etro. Solo funci on a en ento rn os compatibles con la función
strfmon de lenguaje C (Wind ows n o lo es)
El parám etro form ato es, a su vez, un string que contiene símbolos
especiales para dar formato. Esa expresión está precedida po r el sím -
bolo % al que le pueden seguir un o o más de estos otros sím bolos
FUNCIÓN SIGNIFICADO
mo n ey_fo rmat Hace que siempre apa rezca el signo del número
+
(continuación)
( Números negativos entre paréntesis
! Quita el símbolo de la moneda
#n Indica la anc hura de la par te entera del número
.p Número de decimal es a m ost rar
- El número se alinea a la izqui erda y no a la derecha
number formati Devuelve un string que contien e al número que se indi ca formate ado
número de modo qu e aparece el separa dor de mil es
[,decimales
[,caracterDecimal El segundo parámetro (opciona l) per mite indicar cuántos decimales
[,caract erDeMiles]]] vamos a ut ilizar para mostrar el número. Los otros dos parámetros se
) utilizan para ind icar cuál es el carácter de separador de decima les y el
de miles. Ejemp lo:
4.5 CIFRADO
PHP in corp ora numerosas fun ciones para hacer labores de cifrad o. En el caso más habitual,
lo qu e se pr et end e al cifrar es esconder un a contraseña u otros textos que deseamos oculta r a
alguien qu e quiera espiar la comunicación entre nu estro servi dor PHP y el cliente.
La forma de soluci onar el prob lema es utilizar fun cion es qu e convierten la con trase ña en un
texto hash obtenido a través de un algoritmo de cifrado. Lógicamente la idea es que el hash sea
ind escifrable; es decir, que a tr avés del ha sh no pod amo s obtener el texto origina l.
En su lugar se reco mien da el uso de Blowfish. Por for tu na, Blowfish es actualmente el algo-
ritmo predeterminado por PHP en sus fun ciones de cifrado para contrase ñas.
Además es mu y recomendable utili zar un a sal (del inglés salt) que es un pequeño dato aña dido
que complica la obtención del texto original. Sin ese dat o, se pu ede obt ener el texto original a
partir del hash utilizando las llam adas tablas rainbow en la que se almacenan textos originales y
sus hash correspond ientes y luego se cruzan con el hash que deseamos descifrar. Como los usua-
rios ut ilizan claves qu e, fácilme nte, ot ros usuarios han utilizado, su hash puede estar disponible
U N IDAD 4. NO CION ES AVAN ZADAS SO BRE EL LENGUAJE PH P 207
en esas ta blas. La sal dificulta enorme me nte esta técni ca al a ñadir un segundo dato qu e, además,
pu ede ser aleatorio.
Hay que tener en cuenta qu e para que este funcionamiento recomendab le de PHP sea posible,
debemos tener instalada una versión de PHP almenas igualo superior a la 5.5.
La función escrib e:
$2y$1 0$123456789ABCDE FGHI J KL.Ys li XtCFs/ v7Qo2e LjF KjWUt nf ZRpd.
En el propio texto están espec ificadas las características del algor itmo uti lizado :
• $2y$. Este texto inicial indica el algoritmo utilizado. En este caso es el códi go del algo-
ritmo Blowfish.
La idea es utilizar esta función para cifrar inicialmente la contrase ña y así almacenarla. Cuando
un usuario utilice una contrase ña para verificarse, la cifraremos de la misma form a y comparare-
mos el resultado con el que tenemos almacenado a través de password_verify.
• algoN ame. Nom bre del algoritmo, por ejem plo bcr ypt
• POSIX (de Portable Operating System Interface) I003. 2 correspondie ntes a un están dar
aceptad o por el or gani smo IEEE (The Institute of Electrical and Electronics Engineers)
muy influyente en no rmas electrónicas y qu e se basa en la sintaxis de l siste ma Unix. Las
funciones compa tibles con este formato co m ienzan por la palabra ereg.
• PCRE (Perl Compatible Regular Expressions). Incorporad o a PHP desde la versión 4 .2,
procedente del len guaj e Perl, lenguaje pr ecisamente fam oso por su uso de las expre-
siones regulares. Este es el formato qu e más se usa, de he cho , se recomienda no utilizar
UNI DAD 4. NO CIONES AVAN ZADAS SO BRE EL LENGUA JE PHP 209
el anterior. Las funcio nes que uti lizan este formato de expresión regulares comi en zan
por la palabra preg. Por otro lado, este formato es compatible con Unicode, por lo que
también es má s recomendable par a lenguas que usan símbolos fuera del ASCn original
como el cast ellano.
En el ejem plo, la variable $expReg enci erra un a expresión regular. Como se observa al ser un
texto, va entrecomillado ; dentro de las com illas hay otro delimi tador, la barr a de dividir, para
marcar la expre sión reg ular.
Los símbolos y expre siones qu e se pue den utilizar den tro de la expres ión regular son :
SíMBOLO SIGNIFICADO
c Un carácter cualquiera: por ejemplo a, H, ñ, etc. Dentro de un a expresión regu-
lar, obligar ía a qu e apare zca ese carácter en la posición en la que se indica
cde Siendo c, d, y e caracteres, indi ca que esos carac teres deben aparecer en ese
orden en la expres ión. Por ejemplo, ola obligaría a que el texto que se está com -
prob an do te nga dentro ese mismo texto
(x) Permite indicar un subpatrón dentro del paréntesis. Ayuda a formar expr esio-
nes reg ulares complejas
Cua lquie r carác te r. El punto indi ca que en esa posición puede ir cua lquie r
carácter. Por ejemplo amigovalidaría com o tex tos válidos a amigo y a amiga
/\x Come nza r por. Indic a el Str ing debe empezar por la expresión x. Por ejem plo
/\H obliga a qu e el texto empiece por la letra H
x$ Finalizar po r. Indica que el Str ing debe terminar con la expres ión x
x+ La expresión a la izquierda de este símbolo se puede repeti r un a o más veces
x';' La expresión a la izquierda de este símbolo se pu ede rep etir cero o más veces
x? La expresió n a la izquier da de este símbolo se puede repetir cero o una veces
x{n} Significa que la expresión x debe aparecer n veces, siendo n un número entero
positivo
x{n,} Significa qu e la expresión x debe aparecer n o más veces
x{m,n} Significa qu e la expres ión x debe aparecer de m a n veces
210 IM PLANTACi Ó N DE APLICACIONE S W EB
SíMBOLO SIGNIFICADO
xIY La barra indica qu e las expresion es x ey son opcionales, se puede cum plir una
u otra
c-d Cum plen esa exp resi ón los carac teres qu e, en orden ASCn, vayan de l carác te r e
al carácter d. Por ejemplo a-z representa todas las letras minúsculas pr esentes
en el código As c n
[ede] Indi ca qu e es válido cua lquie ra de los caracteres e, d ó e
[e-d] Indica q ue es válido cualqui er cará cte r Asc n ent re los car act eres c y d. Por
ejem plo tA-Z ] signi fica que valer cualquier letra m ayú scul a
No es válido ninguno de los caracteres qu e cumplan la expresión x. Por ejem-
plo [/\dft] indica que no son válidos las caract eres d, f ó t
\d Dígito, vale cua lquie r dígito numérico
\D Todo menos díg ito
\5 Espacio en blanco
\S Cua lq uier caráct er salvo el espacio en blan co
\w Word, carácte r válido den tro de los qu e PI-lP cons idera par a identificar varia-
bles. Es dec ir, letr as, número s o el guion bajo
\W Todo lo que no sea un carácter de ti po Word
\n Nueva lín ea
\t Tabulador
\e Permite representar el carácter e cuando este sea un carácter que de otra
manera no sea representable (com o [, ], / , \ ,oo .). Por ejemplo \ \ es la for ma de
represe ntar la prop ia bar ra invertida
\ xff Per mite in dicar un carácte r Un icode m edi ante su código h exadecimal.
\ p{xx } Indica un carác te r que cumpla la pro piedad Un ico de indicad a co n los códigos
xx . Algunos códigos interesantes son :
CÓDIGO SIGNIFICADO
L Letra (incluye Ll, Lm, Lo, Lty Lu)
Lu Letra may úsc ula
Ll Let ra minúscula
Lt Letra tipo título (primera letra m ayú scula, resto minúsculas)
Lm Letr a modificadora
Lo O tra let ra (que no sea Ll, Lu o Lm )
Lt Letra de título
Lu Letra mayúscula
c Carácter de control
s Símbolo (ma te máticos, m on eda, vi ñetas, bor des, etc.)
UNID AD 4. NOCIONES AVANZADAS SOBRE EL LENGUAJE PHP 211
Debería escribir verdadero (en pantalla sale el valor r), sin embargo, lo habitual en cualquier
in stalación de PHP, es qu e escriba falso (un cero o incluso nada). La expr esión sexp debería vali-
212 IMPLANTACiÓN DE APLICACIONES WEB
dar cualquier string que contenga letras en cua lquier alfabeto, pero no con sidera qu e el carácte r
ñ sea una letra. Realm ente la expresión solo sue le funcionar para letras del código ASCll, es decir,
letras del alfab eto inglés.
Afortunadame nte ten emos solución. Si escr ibim os el te xto C'UTF8) justo tr as el delimitador,
indicarem os que la validació n se debe hacer cons iderando que estamos utilizando el formato
Unicode UTF8, realmente el habitua l hoy en día .
despI perm ite indicar el índice dentro del Str ing por el qu e se empe-
zará a bu scar el patr ón (si n o se in dica este parám etro comenzamos
a buscar por el prin cipio
pregjnatch allt Igual que la anterior, solo que cuando enc ue ntra el patrón, sigue
patrón, string buscando en el resto del texto para buscar la siguie nte aparición .
[, arrayResult][, flag] Esto la hace más ú til para usar arrays de resultados
[,despl]
)
pregspliu Divide el st ring indicado según el patrón de expresió n reg ular in di-
patrón, string cado y devue lve un array que contiene cada trozo obtenido del
[, límite string. Ejemplo:
[, flags]]
$s ="texto a d i v i dir, pal a bra a pa la br a";
pr i nt_r ( preg_s p l it("/[\s,]+I", $s»;
U NIDAD 4. NOCION ES AVAN ZADAS SO BRE EL LENGUAJE PHP 213
FUNCiÓN SIGNIFICADO
preg split Sale :
(continuación)
Ar r a y
(
[0 ] = > t exto
[1] => a
[ 2] = > di vidir
[3] => pa l ab r a
[ 4] = > a
[5 ] = > palabra
)
FUNCiÓN SIGNIFICADO
pre~grep En el parám etro flags se puede indicar la constante PREG_GREP_
(continuación) INVERT, en cuyo caso se devolverán los valores qu e no cumplan la
expresión regular
4 .7 FUN CI ON ES DE FECHA
PHP prop orciona num ero sas fu nciones qu e no s facilitan el trabaj o con fecha s. En PHP se usa
el form ato de fecha y hora del sistema Unix, por lo que mu chas fun cion es requieren las fecha s en
este form ato. Hay otras muchas funcione s que nos ayudan a crear fechas en ese formato a parti r
de un texto que representa un a fecha , utilizando un formato más humano.
FUNCiÓN SIGNIFICADO
tirne í) Devuelve la fecha y hora act ual en el formato na tivo (Unix) de
PH P
st r ft ím e(format o[,fecha]) Devuelve un texto qu e repr esenta la fecha actu al (o la qu e
se indique como segundo parámetro) en el formato regional
establecido con la función setl ocale. El formato pu ede incluir
estos símbolos:
%a Día de la semana (tr es letras)
%A Día de la semana (completo)
%d El día del mes con dos dígitos (del 01 a131)
%e El día del mes (de 1a 31)
%j Día del año, 3 dígitos (del 001 al 366)
%u Día de la semana (del 1 al 7)
%w Día de la semana (del o al 6)
Número de sema na del a ño, come nza ndo con el pri-
%W
mer Domingo como la primera semana
%b Nombre del mes con tres let ras
%B Nombre del mes completo
%m Número del m es en dos cifras (del 01 al 12)
%C Número de siglo (por ejemplo 21)
%y Año en dos cifras
%y Afio en cuatro cifras
%H Hora en formato 24 horas (del 00 al 23), con dos dígito s
%k Hora en form ato 24 horas (del o al 23), uno o dos dígito s
%1 Hora en form ato de 12 horas (01 al 12), dos dígitos
%1 Hora en form ato de 12 horas (01al 12), uno o dos dígito s
%M Minutos en dos cifras (01 al 59)
UN IDAD 4. NO CION ES AVAN ZADAS SO BRE EL LENG UAJE PHP 215
FUNCiÓN SIGNIFICADO
strft ime %p 'AM' o 'PM' en MAYÚSCULAS basados en la hora dada
(continuación)
%P 'am' o 'prn' en minúsculas basados en la ho ra dada
%S Segundos en dos dígitos (del 00 alS9)
Repres entación preferida de la ho ra basada en la confi-
%X
gur ación regional, sin la fecha
Ejemplo:
setloca 1e ( LC_ALL, " es p_ES P") ;
ec ho str f t i me ( " %d/ %B/ %Y", ti me ( ) );
l/Sa l e por ejemp lo : 1/Mayo/2015
mktime( Crea una fecha y hora (en form ato UNIX) a partir de los pará-
[hora l,minuto metros indi cad os. Los que no se indiquen , se toman de la
l,segun do [,mes fecha y hora act ua les
[,día [.año [época]]]]]]]
) El último parám etro (época) indi ca con un 1 qu e esta mo s en
horario de veran o y con un -1 en el de inviern o
strptime(fecha , form at o) Devuelve un array asociativo que contie ne como valores los
datos de la fecha indicada . El forma to cumple los posibles
valor es del parámetro formato de la funci ón st r ft im e expli-
cada anteriorme nte
Iocalttmet Devuelve la fecha actual (o la que se indique com o primer
[fecha [,asociativo]] parám etro) en form a de array en el que cada elem ento con-
tiene cada parte de la fecha y hora
FUNCiÓN SIGNIFICADO
checkdate(m es, día , añ o) Devuelve verdade ro si la fecha indicada de esta forma es válida
datejdefaultjtimezonejgett) Devuelve la zona horaria en uso (por ejemplo Europej Berlin )
date_default_timezone_set( Establece la nu eva zona horaria. El texto debe ser está n dar,
zona por ejemp lo (EuropejBerlin)
)
UN IDAD 4. NOC IONES AVANZADAS SOBRE EL LENGUAJE PHP - PRÁCT ICAS 217
Para solucionar esta práctica, creamos primero un formul ario. En este formulario usamo s
como índice del array el nombre del artículo seleccionado y como valor el precio del mismo.
Hemos optado por enviar los datos med iante la acción POST de http. El código po dría ser este:
Por lo tanto, este formulario envía un array llamado articulo. Cada elemento del array con -
tiene como clave el nombre del artículo asociado al precio del mismo.
De esta form a, los cálculos son fáciles, basta recorre r el array (comprobando primero que real-
mente lo hemos recibid o) e ir mo strando cada índic e y valor, a la vez qu e los valores se acumulan
en una variable (llama da $su ma) cuyo valor final mostraremos tras la lista . El código del archivo
practicar.php encarga do de mostrar lo que hem os comprado (adem ás del precio tot al de la com-
pra), sería:
Solucionaremos la práctica con un solo archivo. Se creará un arra y con la clasificación (no
hace falta que esté ord enado) y despu és ordenaremos por los puntos. Cuando dos equipos tengan
los mismo s puntos nu estro programa no será fiel a la clasificación real ; pero de otro modo ten-
dríamo s que ha cer un arr ay más complicado, no lo haremos en esta práctica.
Tras esa or de nació n, generamo s un segundo array que contiene como valores , los nombres
de los equipos orden ados según la clasificación qu e hemos hech o. Finalm ente el array origina l
le volveremos a orden ar, esta vez en orden alfabético qu e es como le mo straremos a tr avés del
cuadro combinado. El código es el siguiente (sun on emos oue el archivo se llama uracticaz.nhn):
<?php
$listaEquipos=array(
"F .C . Barcelona"=>94,
"Real Madrid"= >92,
"Atlético Madrid"= >78,
"Valencia"= >77,
"Sevilla"= >76,
" Vi l l a r r e a l"=>60 ,
"Málaga"= >50,
" Es pa nyo l "= >49 ,
"Athlétic Bilbao"= >55,
"Celta"= >51,
" Rea l Sociedad"= >46,
"Rayo Vallecano"= >49,
"Getafe"= >37,
"Eibar"= >35,
"El che"= >41,
"Deportivo"= >35,
"Almería"= >29,
"Levante"=>37,
"Gra nada"= >35,
"Córdoba"=> 20
);
arsort ($listaEquipos );
/* l a lista de equ ipos s e ordena por puntos, el a rray clasificac ion ten-
drá la lista ordenada de equ ipos por puntos pero los puntos en sí */
$clasificacion=array_keys ($listaEquipos ) ;
?>
220 IMPLANTACiÓN DE APLI CACIONES WEB
- - ~ n _
--
En principio el probl ema de crear lOO franj as aleato rias no ti ene por qu é requ erir utili zar
arrays, pero al repetirse los colores, entonces deb emo s almace na r los ro prim eros colores y lo más
cómodo es utilizar el array. Códi go:
<?php
/*cá l c u l o de la s 10 primeras franjas el array contendrá 10 capas ( d i v)
usando el at ributo sty le con el co lor aleatorio de ca da franja */
for($i= 0 ; $ i <1 0;$i ++){
$rojo=mt_rand(0 ,255);
$ve r de=mt _ran d(0 ,255);
$az ul =mt_rand(0 ,255) ;
$a r ra yco lor[$ i] ="background-color :rgb($ro jo,$verde,$azu l) ";
}
?>
222 IM PLANTA CiÓN DE APLI CACIO N ES W EB
índice valores
Palencia 80000
Valladolid 306000
Murcia 439 0 0 0
Albacete 17°000
A Coru ña 25°0 00
Se expone, a continuación , el código de la función y el código de una página web con ejemplos
de su uso (se utiliza el array de la tab la anterior)
<?ph p
function dibuja r ($ array ) {
ec ho "<table ".
"style=' border: 1px sol id black; border-collapse: collapse' >" ;
ec ho "\t<tr style='background-color :black;".
"color:white ;border:1px solid black'>\n";
echo ,,\t \t<th >Índices </th ><t h >Va l or es< / t h>\ n" ;
echo " \ t </tn \n" ;
foreach ( $arr ay as $ i= >$v ) {
ec ho " \t <tr style='border:1p x solid black'>\n";
ec ho " \t\t<td style='background-color:gray '>$i </td >" ;
ec ho " \t\t<td>$v</td >\n";
ec ho " \ t </ tn \ n" ;
}
echo " </table >";
}
?>
<!doc t ype html >
<ht ml l a ng="es " >
<hea d>
<me t a charset="UTF-8" >
<t i t le> Doc ume nt</ t i t l e >
</hea d >
<body>
<?php
$ local idades=array("Palencia"= >8000, "Valladolid"= >306000,
"Murcia"=> 439000 ,"Albacete"= >170000,"Ba rcelona"= >160000,
" A Coruña"= >25(00);
dibujar ($local idades );
224 IMPLANTAC iÓN DE APLICACIONES WEB
?>
</ body >
</ ht ml >
o 1 2 3 4 5 6 7 8 9 10 II 12 13 14 15 16 17 18 19 20 21 22
T R W A G M Y F P D X B N J Z S Q V H L C K E
- En el caso de los NlE, para calcular la letra final se hace lo mism o, pero sus ti tuye n do la letra
X ini cial por cero, si es Y por uno y si es Z por 2 .
La mayoría de las validac iones a realizar se puede n hacer median te expresiones reg ulares. El
cálcu lo de la letra del DNI o NlE requiere otro tipo de accio nes . Inicialm ente aparecerá un for-
mu lario, el cual es un documento html (suponemos que se llama [orm-pra cticas.htmli los dat os
se envían a la página practicas.php.
Archivo [orm-practicas.html:
<body >
<fo r m acti on="practi ca5 .php" method="POST" >
<l a be l for="nombre" >Nombre </label >
<i nput type="text " id="nombre " name="nombre" ><br >
<l a be l f or=" ap ellido1 " >Primer apellido </label >
<i nput type="text" i d=" a pel l i do1" na me="apellido1" ><br >
<l a be l for="apel li do2 " >Segundo ape llido </ labe l>
<i nput ty pe="text" id="ape 11ido2" name="ap ell i do2 " >cbr»
<l a be l for =" us ua rio" >Nombre de usu ari o </l ab el >
<i nput t ype="text" id =" us ua r io" name="usua rio" ><br>
<label for=" nif" >Número de i dentificación ( DNI o NI E) </l a be l >
<i nput type="text" id ="nif" name="nif" ><br >
<l a be l f or="telefono" >Teléfono </label >
<i nput type=" text" id ="telefono" name="te lefono" ><br >
<but t on t ype=" s ubmi t"> Va l i da r< / but t on>
</ f or m>
</bod y>
</ html >
else{
ec ho "<p class='error'>Faltan datos</p>";
}
?>
<a href="form-prac tica5.html ">Volver al formulario </a >
</ body>
</ ht ml >
...
4.9 PRACTICAS PROPUESTAS
Práctica 4.6: Encriptación tipo César
• Crea un a página web con la apariencia que se muestra a continuación:
Escriba la cl<r..e :2 ~
---
Enviar
• Des de el formulario se invoca a un a págin a que se enca rga de encriptar el text o (o dese ncrip-
tar, dependiendo de lo qu e elijamos). La encriptación se basa en suma r el número elegido
(que debe de estar entre 1 y 99) a cada caráct er del text o. El desenc riptad o se hace igual, pero
restando. Hay qu e validar qu e el texto elegido te nga más de 10 caracteres (de otro mo do se
in form a del error) y que la clave sea un número entre 1 y 99.
• Nota: Es muy interesan te usar las funciones ord y chr.
- Número de Identificación. Basad o en las reglas del NIF (que in cluye los núm ero s de DNl,
NIE YNIF especiales) que están disponibles en la URL:
http://es.wikipedi a.or g/wiki/N%C3%BAmero de identificaci%C3%B3n fiscal
- Nombre y apellidos. Al menos deb e de tener do s let ras tanto el nombre como cada ape-
llido. No se admiten números en el nombre ni en los ape llidos .
- Correo elect rón ico. Validaremos qu e ten ga un símbolo de @ y además que pertenezca al
domin io hotmail.com o bien gma il.com.
- Descri pción de la avería. Obligatoriamente hay qu e escribirla.
- Número de Modelo. Consta de tres letras (ASCll) mayúsculas seguida de 4 números.
- Número de serie. Empieza por las letras S o Z:
., Si empieza por S. En tonces le siguen tres números y luego dos letras (ASCII) mayúsculas.
'.' Si empieza por Z. Entonces le siguen 4 números, el último número solo puede ser 3,5 o 7,
Al final se indica una letra que puede ser B,C o D. Si la letra es la D le seguirá otro número
de l 1 al 3. Después (independientemente de si es B,C o D) hay dos letras (ASCll) más .
• Al valida r si hay err ores se vue lve a la págin a del formulario m ar cando de color roj o los
eleme ntos no válidos. Se debe conseguir qu e los dato s introducidos no ha ya que volver a
añadirles .
• Si los datos son correctos, simplemente se indica este hecho.
230 IM PLANTACiÓN DE APLICAC IO NES W EB
• Las fun cion es se pueden almacen ar en archivos que luego podemos in corporar con
ayud a de la instrucción include.
• PHP dispone de arrays clásicos escalares y de arrays asociativos qu e permit e crear estruc-
turas de pares clave/valor. Se adm ite todo tipo de dat os en los arrays.
• Dispon emos de un a estructura de control especial llamada foreach que facilita el reco-
rrido de cada eleme nto de un array.
• Además, el len guaje proporciona un a librería de funciones muy exte nsa para facilitar y
potenciar el trabajo con arr ays.
• Los Strings son las estruc tur as de dato s que proporciona PHP para almac ena r texto . Hay
operadores especiales para trabajar con strings y, además, disponem os de una librería
que facilita enorme mente el trabajo con strings.
• PHP dispon e de fun ciones para cifrar texto. En la versión S'S han m ejorado notablemente
sus prestaciones gracias al uso del algoritmo de cifrado BlowFish. El uso de estas fun -
cione s es obligatorio para tratar con textos en los que es imp rescindible su encriptación.
• PHP dispone de funcione s especiales para crear y operar con datos de tipo fecha. Además,
aporta funci on es que permiten per sonalizar la forma de mo st rar fechas (y números).
UNI DA D 4. NOC IONES AVANZADAS SOBRE EL LENG UAJE PHP 231
INTERCAMBIO DE INFORMACiÓN
ENTRE PÁGINAS WEB CO N PHP
OBJETIVOS CONTENIDOS .
5.1 LIMITACI ON ES DEL PROTOCOLO HTT P
Descubrir el problema de http como
5.2 FORMAS D E GENE RA R UN ESTAD O O
protoc olo sin estado
SES iÓ N
5.2.1 USO DE LA D IRECCiÓN IP
- Asimilar los mecanismos de PHP 5.2.2 PASO DE PARÁMETROS M EDIAN TE
para inte rcambios datos en tre CAD ENA DE CO NSULTA
diferen tes páginas 5.2.3 PASO DE PARÁMETROS MED IANTE
MÉTODO PO ST
5.2.4 COOK IES
Identificar los problemas de las
5.2.5 SESIO NES
cookies y las sesiones 5.2.6 BASES D E DATO S
5.3 USO DE CO O KIES DESD E PHP
Enume rar los riesg os de l uso de 5.3.1 FUN CI ON AM IENTO DE LAS COO KIES
cookies y ses io nes 5.3.2 A LMA C EN A M IENT O D E COOK IES
D ESD E PH P. SETCO OK IE
- Asimilar el func ionam iento de las 5.3.3 ACCED ER A LOS DATOS DE LAS
cookies ujy sesiones COO KIES
5.4 USO DE SES IONES EN PHP
- Almacenar datos en cookies y 5.4.1 VENTAJ A S Y DESVENTAJ AS
5.4.2 FUN CI O NAM IEN TO
archivos de sesión
5.4.3 INIC IO DE SESiÓ N
5.4.4 USO D E LA SESiÓN PREVIAM ENTE
Leer dato s de cookies y sesiones INI CI AD A
5.4.5 O BT EN ER DAT O S DE LA SES iÓ N
Borrar cookies y dat os de sesi ó n 5.4.6 U SAR VAR IA BLES D E SES iÓ N
5.4.7 BORRAR DATOS DE LA SES iÓN
5.4.8 ELIM INA R LA SESiÓ N ENTERA
5.5 PRÁCTICAS RESUELTAS
5.6 PRÁCT ICAS PROPUESTAS
5.7 RESUMEN DE LA UN IDAD
5.8 TEST DE REPASO
234 IMPLANTACiÓN DE APLICAC IO NES W EB
El problema está en que http es un protocolo sin estado (o sin memoria), cada transacción es
independiente de la ante rior.
Al principio, los desarrollador es de aplicaciones web no estaban preocupados por esta cir-
cunstan cia ya que, esencialme nte , los servidores web servían páginas estáticas que contenían
in formación sim ple. Además esa informació n era la misma para cada usuario. Sin embargo en la
act ualidad, debido a que desde http se sirven todo tipo de servicios, necesitamos otorgar memoria
a nuestros desarr ollos.
El caso más evidente par a entender por qué necesitamos me mo ria está en un a aplicación web
que nos pida usuario y contrase ña para despu és mostr arnos nue st ra págin a perso nal dentro de
ese servicio. Esta portada puede ser nu estro buzó n de mensa jes, nuest ra pared en un a red social,
nu estro carrito de la compra, etc. La cuestión es que esa zona per sonal debe recordar quién es
somos y para ello lo qu e hacemos en la pan talla de conexión (login) debe de generar un estado.
Lueg o tenemo s un problema. Si el protocolo http no tiene estado y nec esit am os ese estado, la
úni ca manera es enviar la información nec esaria para gene rar el estado dentro del propio paquete
http. Como veremo s a contin uación hay numerosas técnic as para hac erlo , el probl ema estriba
en qu e alguien pueda capturar el envío del paqu ete y hacerse con esa información confidencial.
SESIO N
5.2.1 USO DE LA DIRECCiÓN IP
En PHP disponem os del array L SERVER que pro porcio na mucha información intere san te.
Así, en ese array, $_ SERVER ["REM O TE_ADDR'1 nos per mite obten er la IP del cliente. En el caso ,
por ejemplo, de acceder a una zona de segur idad pu ede ser un método de autentificación. Pero no
es un método seguro, ya que el usuarioja pu ede acceder desde servidores proxy o utili zando otras
tecn ologías que no nos permita n identifi car con segur idad su dir ección IP.
mát icam ente se no s most rar án páginas que, según Google, se relaciona n con PHP. Usado con
habilidad es un mét odo interesante para pasa r datos de un a página a otra.
En rea lidad, esta forma de tra bajar se relaciona con el método GET de los formularios.
Así po demos enviar parámetros usando direcciones URL como por ejemplo la siguiente:
http ://miservidor.com/prueba.php ?id=2309&precio=24 de modo qu e a la págin a prueba.php le
pasamos los parámetros id (con valor 2309) y precio (con valor 24). Es un m étodo muy utili zado ,
pero ti ene la desventaja de qu e se lee perfectamente en la barr a de direccion es lo que esta mos
enviando, por lo que no es válido para enviar información confide ncia l (a no ser que la cifremos).
Muchas veces se usan controles de formulario ocultos para pasar información adicion al sin
que el usuario la perciba. El truco para ello es utilizar controles de formular io con el código
HTML: <i nput t y pe=" hid den" , de modo que el usua rio no los vea y cuando los datos visibles
se envíen, tambi én se estarán enviando los datos ocultos.
5.2.4 COOKIES
Se explica en detalle en esta misma unidad . La idea es que en el ord enador del usuario se alma-
cena la información que necesitamos en forma de archivo de texto.
236 IMPLAN TACiÓN DE APLICAC IO NES W EB
En realid ad un a cookie es un par nombre/ valor (al igual que los parám et ros GET o POST), de
mod o qu e a un det erminado nom bre o clave le asignamos un valor (que siempre es text o).
Lo malo es que el usuario puede bloquear las cook ies o borrarlas yeso está fuera de nuestro
control por lo que es un a técnica que tiene ta mbién sus riesgos. Además hay técnicas para inte n-
tar obtener las cookies del usuario con la finalidad de conse guir información confide ncial. Por
este último tema, las cooki es son motivo de controver sia, de hecho , estamos legalmente obliga-
do s a avisar al usuario de qu e estamos grabando coo kies en su ordenador.
Sin embargo cuando en PHP se habla de sesiones, se denomina así a la técnica, que se explica
en detalle más adelante, por la que se almacenan dat os de usuario, al estilo de las cookies, pero en
el servidor. La técnica se basa en que al usuario se le asigna un id entificador de sesión, por el cual
relacionaremos su archivo de sesión en el servidor.
Ese número de sesión es el cuello de botella de la segur idad en esta técni ca, obtenerlo por parte
de tercero s es un a actividad habitual de aquellos qu e intentan un robo de sesión (o hijacking)
sobre un usuario, para hac erse con su inform ación confid enci al.
Lo bu eno es qu e toda la gestió n y man tenimiento de los dato s lo rea liza un softwa re especia-
lizad o en ello, descargando a PHP de esa respon sabilid ad. Lo malo es qu e para dato s de sesión, se
convierte en un a técnica difícil de man ten er, por lo qu e en la práctica se combina n las sesione s y
las bases de dat os.
Las cookies son archivos de texto que almace na n infor mación sobre el usuario y que se guar -
dan en el propio ordenador del usuario . La información alma cena da asocia un valor (de tip o
string ) a un nombre. Al igual que el paso por GET o POST , el uso de cookies es otra técnic a de
alm acenaje de información mediante par es nombre/valor.
U NIDA D 5. IN T ERCA M BIO D E IN FO RM ACi Ó N ENTRE PÁGINAS WEB CO N PHP 23 7
DIRECTORIO
DE COOK IES
.>
Figura 5.1: Esqu ema de fu n cionam ien to d e las cookies
La idea conce pt ua l es la que refleja la Figura 5.r; en cua nto, desde un a página PI-J. [), grabarnos
dat os mediante cookies, nu estras peticiones y res puestas llevan anexas los dat os de [as cooki es
que hemo s almacena do y, por lo tanto, podrem os ut ilizar en cualquier momen to dichos datos.
y General
Rem ot e Ad dr ess: [ :: 1] :s e
Req uest URl : nt tc : l/ l e ce.tt c s ";. /pru eb as !ctra. :.'I hp
Reqcest Method: 6::1
St atus Cede: - 2a\} OK
y Respon se Heeders
Ccnn ect iom s ee o- At í ve
Co ntent- Lenqth: 2~5
Conten toType: r e x't ,' t-,t-. l j ,t' a~::. e : " UlF -8
Date: Sun , a 7 jl,H'< 2015 15 :5 7: 26 e lT
Keep -Aüve: t í .seour e s , !"'<;x : ? 8
Serven ;" ~ ~c ~ e !2. ':.lD O¡i r·32) O¡;en 5SL/ L e . 1i P.--;;>;S.f.:
x -Powered-By: ;lH::'/ 5.6 .3
...Req uest Headers
Accept. ";. e xt. / r;t "11 } e ~pl ic a t io :'l ;' y. htr'ü "'):,:, l, C::l; : :' c~ tion /x;,l ; Q "~. 9} i 1'!: a ge f lo.-ebOJ ~!. ; c : f? S
Ac ce p t -En co d in g : 5:' :' ;;', d ':"flc: e, se d e n
Accep t- Lanqueqe: e 5- fS ~.:e s ; c-e .8~ en ; q-e . 5
Con nec t tom c eeo- el áve
Coo kie:: n~re "' Joree; a pellidol rSSC3SA1nche z
Host : lo calr.C's -:
Ref e re n :1 ~ t;:¡ : ! J1occlhO$ t /r' r lJ et. c ~ 1 cr-cet -accce ie . er-o
Use r-Aqent. f'c : :"ll a / 5 . í) ( !.'': nÓCI''s /;T 6.3; ;Oh"~) ;' pp l e ~ :e t t\ :.'t /53 7. 36 ( K hn~ :... , li l<e e e ckc ) Ct-,jo~ ':" / ':' 3 .C. 23 5 7.81 Saf ar ': / 537.35
Figura 5.2: Ext rac to de la ca becera http de u n paquete que contiene cookies, visible a travé s de las herramien-
tas de in spección de Google Chrome
valor. Valor que le damo s a la cookie. Si no indic amos valor alguno, entonces esta remos
borrando la cookie.
expiración. Por defecto to ma el valor cero, que significa qu e la cookie caduca en cuanto
se cierre el navegador co n el que se creó. Otra posibilidad es indicar una fecha en formato
Uni x. Por ejemplo, ti me ( ) +600 ind icaría que la cookie expira dentro de ro minutos
• dominio. Si no se indica nada to ma como dom inio en el que se aplica la cookie el domi-
nio actua l, pero se puede indicar otro.
segura. Por defecto vale false, si ind icamos true; entonces indic a qu e la cookie solo se
almac ena si esta mos comunicándonos median te un protocolo seguro.
Ejemplos:
Ejemplo:
Podemos ta mbié n eliminar cookies más antiguas indicando una fecha de caducidad anterior
a la actual, por ejemplo:
Por ello, todos los programadores para almace nar dat os binarios, como los arra ys, en [as coo-
kies, crean mecani smos para convertirles en texto . En general al pro ceso de convertir dat os bina-
rios en form ato de texto , se lo conoce bajo el término de serializar; traducción excesivamen te
literal del inglés serialize.
Podemo s idea r nuestro propio mecanismo de serializa cion, pero en PHP hay una función que
no s ayuda a automa tizar este proces o. Se trat a de la fun ción serialize . A esta función se le pasa un
dato binario y se convierte a un form ato de texto equivalente. De ese modo, si queremos almace -
nar en una cookie llamad a notas un array llam ado sarrayt, la in strucción sería:
• Pued en fun cionar aunque el usuarioja desactive la posibilid ad de cookies. Aun que hay
que tener en cuenta qu e para ello deb emos pasar el iden tificador de sesión mediante
GET; es decir, el identificador de la sesión será visible en la barra de direccio nes del
240 IMPL AN TACiÓN DE APLICACION ES W EB
navegad or. Ademá s, por defecto PH P usa cookies para pasar el identificad or de sesión, si
n o lo queremos pasar por cookies, debemos modificar varios par ámetros del arc hivo de
configuración de PH P.
• Almacenan más in formación qu e una cookie y, ade más, son capaces de almacenar datos
binarios.
• Son más segur as pu esto qu e los datos que se alma cena n de la sesión lo hacen en el serv i-
dor y n o en el cliente. En principi o, la seguridad de los ser vidores es m ayor qu e la de los
orden adores de los usuarios
Desventajas:
Son sus ceptibles al ataqu e con oci do como secuestro de sesion (session hijacking),
mediante el cual un usuario se pued e hacer con el ide ntificad or de sesión de otro us ua-
rio y hac erse pasar por él. El paso de ese identificad or es el cuello de botella del sistema
de sesio nes.
• El iden tificador de sesió n se almacena normalm ente m edi ante cookies, por lo qu e si no
nos damos cuenta, podríamos ten er la misma dep end enc ia con el u su ario qu e en el caso
de las cookies. Si el usuario las desacti va, no podremos utilizar sesiones.
5.4.2 FUNCIONAMIENTO
El m anejo de sesiones se basa en asigna r un identificador a cada sesión . PHP dispone de la
posibilidad de calcular dich o n úm ero de sesión par a que sea único en cada sesión de usuari o.
Tras lo cual pod em os identificar de form as unívoca a cada sesión. Ese identificad or es el que se
relacionará con los datos del usuario.
[1] Cuando deseamos gen erar una nueva sesión , se invoca a la fun ción session j startf). Esa
función gene ra un nuevo ide ntificador de sesión (SESSlüN_lD).
[2 ] Ese iden tificador de sesión se almacena en una coo kie o bien se envía co mo parámetro
GET dentro de cada pe tición del clien te. Que se utilice uno u otro m étodo dep enderá de la
configuración de PHP.
[4] Si queremos grabar un dato de sesió n , debe mos utilizar el array LSESSlüN al qu e le in di-
caremos el nombre y el valor (que puede ser bin ario ) a almacenar.
[5] En una págin a en la qu e desee m os recoger dat os almacena dos de la sesión actua l, debemos
invocar pr im ero a session j st ar t f) y lu ego, m edi ante el array L SESSlü N, podremos leer,
modificar o a ñadir datos de la sesión .
Veamos el proceso con un ejemp lo. Este cód igo crea una página que inicia una sesió n y graba
en ella un parámetro llama do nombre asociado al valor Jorge :
<?php
sessi on_start ( );
$_SESSION[ " nombr e "] =" J or ge" ;
?>
<!doc t ype html >
<html lang =" es" >
<he a d>
<meta c harset=" UTF-8" >
<t i t l e>Doc ume nt </ t i t l e>
</ hea d>
<body >
<p>Se ha iniciado la ses ión </p >
<a href=" pa gi na2 . php" >Ir a la pági na 2 </a >
</ body>
</ ht ml>
En este código se crea un a nu eva sesión y se asigna en ella el n uevo valor Jorge asocia do al
iden tificad or nombre. Además, se muestra el tex to Se ha iniciado la sesión y un en lace a la página
paqinaz.php,
Suponga mos que hacemos d ic en el enlace y que el código de paqinaz.php es este:
Se mostraría en pan talla el texto Hola Jorge, resul tad o de acceder correctamente a los datos
de la sesió n .
Lo fundamenta l a recordar es el uso de la función sess ion_start cada vez que utilicemos sesio-
nes en PH P. Esta funció n gestiona el paso del iden tificado r de sesión, además, reto rna verdadero
si la sesión se pudo rea lizar. Otro detalle es conseguir qu e esa instrucción sea la prim era en el
242 IMPLANTACiÓN DE APLI CACION ES W EB
código PHP, la razó n es que es una inst ru cción que maneja cabeceras del protocolo http, y por
ello, no tiene sentido colocarla en el cuerpo con el riesgo de que no se ejecute debidamente.
En realid ad las sesiones son más sencillas de manejar que las cook ies. Pero queda pendiente
la cuestión sobre cómo se pasa el identificador de sesión de petició n en petic ión . Las dos posibi-
lidades son :
Mediante una cookie. En este caso en cuanto se genera la sesión mediante la función
session_s tart, se crea una cookie cuyo nombre es el no mbre de la sesión y cuyo valor es
el identifi cador de la sesión. En PH P es la opció n por defecto. Como se ha come nta do en
el apartado dedicado a las cookie s, éstas se envían en la cabecera del paqu ete http, por
lo qu e se pueden interceptar en el caso de qu e un tercero tenga acceso a los datos qu e
esta mos enviando mediante un ana lizador de paquetes o sníffe r. La solución más inme-
diat a es qu e la comunicación esté cifrada de alguna manera, por ejemplo, con ayuda del
proto colo https.
5) Se usa el ID de
sesión para leer los
dat os correspondientes
a esa sesió n
3) Se ent reg a el có digo HTML
y se pas a la cook ie con e l ID
de sesión
CLI ENTE
Para que esta opción sea la que fun cion e (si no fuera así) hay que modifi car el arch ivo de
configuración php.ini y colocar estos valores:
sessio n.use_c ookies 1
sess io n. use tra ns sid 0
• Mediante GET. En este caso se pasa el identificador de la sesión acompa ñando a cada
peti ción a ñadiendo un a cadena de consu lta GET a la URL. Es decir, que si nuestr a sesión
UNIDAD 5. INTERCAMBIO DE INFORMAC iÓN ENTRE PÁGINAS WEB CON PHP 243
5) Se usa el ID de
ses ión pa ra lee r los
dat os co rrespondie nt es
a e sa ses ión
PAGINAl.PHP?PHPSESSID=...
CLIENTE
4) Se hace elic I
Se pide la pag~::a~ enlace de la página2
: : ~esJh'ón present/e"::iaep
' s.ervidor Usa ~I ID
ec o e/ie agma en la que se
6) Se de vuelve el
código HTML la URl. de la página
PAGINA2.PHP?PHPSESSID=...
co nte nd rá.e l ID d e ses ión
Figura 5.4: Funcionamiento de una sesión gestionada a través de una coo kie
Normalmente, la sesión caduca en cua nto el usuario abandona el navegador. Se puede hacer
(sobre todo si el identificador es una cookie) que dure más, pero no es lo recomendable. Las
sesiones debe n caducar cuando el usuario cierr a la sesión, de otro modo hay más posib ilidad de
inseguridad. Es la forma habitu al de usar sesiones .
Si necesitamos qu e los dato s de la sesión perduren , lo lógico es usar coo kies o bases de dato s
que son las técnicas de almacenamiento de información que está n pensadas para esa finalidad.
[1] Crear un identificad or aleatorio de sesión ; salvo qu e a través de la funció n session_id (se
explica má s adelante) seamos n osotros los que generemos un identificador.
244 IMPLANTACiÓN DE APLICACION ES W EB
[2] Crear en el servidor un archivo asociado a ese identificador, en el que se almacenarán los
datos de la sesión .
[3] Crear la variable superglobal L SESSION qu e es un array (al estilo de L GET, L POST o
L CO O KlE) en el que se almacenarán los dato s de la sesión.
• Se permite el uso del array $_SESSIO N qu e contendrá los dat os de la sesión, los cuales
pu ed en ser modificados, leídos e incluso podr emo s a ñadir más datos.
RECOMENDACiÓN
• En resume n, siempre que deseem os traba jar con sesiones debemos ut ilizar la función
sess ion_start .
• Como esta función man ipula cabeceras http, debemo s intentar qu e sea el primer código de
la página PHP, antes inclu so que la etiqueta HTML de cabecera, mOCTYPE.
• session_id . Si la invocam os sin parám etros, devuelve el identifi cado r de sesión actual.
Admite que le pasemos un identificador de sesión nosot ros, con lo que ese se convierte
en el iden tificador de la sesión actual. Poner números de sesión propios es peligroso, en
cuanto a que si no tenemos un buen algor itmo de cálcu lo del identi ficador podríamos
tener dos sesiones con el mismo identificador y; por lo tanto, in distinguibles y, lo que es
peor, podríamos provocar que una sesión vea los datos de otra.
• session_name. Si la invocamos sin parám etros, devuelve el nombre de sesión actual (por
defecto la sesión se llama PHPSESSID). Admite qu e le pasemos un nombre de sesión
nosotros. Esto es útil para que no sea tan claro que estam os usando sesione s PHP ya qu e
el nombre de sesión por defecto: PHPSESSID, es conocido por todos los pro gramadores
PHP, lo qu e facilit a el robo de la sesión.
Otra opción para cambiar el nombre de los identificadores de sesión es utilizar la direc-
tiva session. name dentro del archivo de con figurac ión de PHP (no rma lme nte php.ini).
A esta dir ectiva se le pu ede asignar otro nombre para las sesiones.
Como hemos comentado, es posible incluso almacenar datos bin arios dentro de las variables
de sesión, lo que convierte a las sesiones un método de trabajo más versátil que las cooki es.
Para elimina r todos los datos, hay que hacer esta secuencia:
unset($ _SESSION);
$_SESSION =array(); l l i mpr es c i nd i b l e , sino la sesión queda
inutilizable
,
5.5 PRACTICAS RESUELTAS
Para facilitar el tr abajo vamos a crea r un archivo llam ado practicat -comprobar.php. En este
archivo solo vamos a escribir el código de dos fun cion es: una fun ción llam ada hay Cookie que va a
devolver verdad ero si existe n las cookies con las preferen cias de usuari o y ot ra casi igual llam ada
hay Get que devuelve verdadero si están llegando parám etros vía GET con las preferenci as de
usuario, correctamente. El código de ese archivo es:
<?php
function hayCookie ( ) {
return iss et ($_COOKI E[" nombr e" ) ) && isset($_COOKIE["apellidos") )
&& isset ($ _COOKIE[ " fondo") ) && i sset ($_COOKIE[" f r e nt e" ) )
&& isset($_COOKI E["letr a")) ;
}
function hayGet ( ) {
r et urn i s s et ($_GET[" nombr e" ) ) && isset($_GET[" apell i dos "))
&& i s s et ( $_GE T[" fondo" ) ) && i s s et ( $_GET[" f r e nt e" ) )
&& i s s et ( $_GET[ " l et r a") ) ;
}
?>
UN IDAD 5. INTERCAMBIO DE IN FO RM ACi Ó N ENTRE PÁGINAS WEB CON PHP - PRÁCT ICAS 247
<?php
/***** ***************** pr ac t i c a1- s a l udo . php*********** **********1
include "practica1-comprobar .php" ; I / ca r ga las f unc ione s de comprobación
$ha yPreferenc ias=
true; / I nos d i c e si t e ne mos pre ferencias de us ua r io
$array=nul l; l / acc ede al array, sea GET o POST con las preferencias
if(hayCooki e ( )==fa lse ) {
if ( hayGet ( )==fa lse ) {
$ha yPr e f e r en ci a s =f al s e;
}
e lse {
$array=$_GET ;
}
}
else {
$array=$_COOKIE ;
}
i f ($ ha yPreferenc ia s== fa lse )
l/s i no tenemos preferencias, vo lvemos al formulario
header ( " l oc at i on : pr ac t i c a1 - i nde x . php" );
el se{
// Recor r e mos el array con los datos de usuario
Il y creamos una variable con cada nombre de preferencia
fo reach ( $a r r ay as $indice= >$valor ) {
$$ i nd i ce=$va l or ;
}
I l gr a ba r cook ies con las preferenc ias de usuario
setcook ie( "nombre", $nombre,t i me()*60*60*24*30);
setcookie( "a pe ll i dos" , $apell idos , t i me( h 60*60* 24*30 ) ;
setcookie("fondo", $ f ondo,time ( )*60 *60 *24*30) ;
setcookie ( "fr e nt e", $ fre nt e,time ( )*60 *60 *24 *30 );
setcookie( "letra" , $ l e t r a,t ime ( ) *60 *60 *24 *30);
}
?>
<!doct ype htm l >
<ht ml lang=" es " >
<he a d >
<me t a cha rset =" UTF-8" >
<t i t l e>Sa l udo</t i t l e>
<!- - Ca r ga de las letras desde Google fonts -- >
<l ink
href=' ht t p:/ / fonts.googl eapi s. com/ css ?famil y=S hadows+Int o+Li ght IS l abo+27pxIRobot o'
rel='stylesheet ' type='text /css' >
UNIDAD S. INTE RCAM BIO DE IN FORMACi Ó N ENT RE PÁG INAS W EB CO N PHP - PRÁCT ICAS 249
<s t y le>
body {
background-col or : <?=fon do ?>;
co l or: <?=$frente?>;
font- f amil y : <?=$ l e t r a ?>;
}
a{
backgr ound - co l or:white ;
}
</ s t y l e >
</ hea d>
<body>
<h1>Ho l a <?=" $nombre $apellidos"?> </h1 >
Finalm ente, el código del archivo practicat-borrar.php es el enca rgado de borrar las cookies (y
por lo tanto las preferencias de usuario ) y pedi r las prefer enci as de usuari o en el formulario. Este
código se invoca cuando se hace d ie en el enlace Volver a cambiar las preferencias en la página
anterior.
<7php
l/ bor r a l as co okies y nos de vue lve a l form ul ario
s etcoo kie("nombre" , f a l s e) ;
s e t cook i e ( " a pe ll idos" , fa lse ) ;
setcoo ki e (" fondo" , fa 1s e) ;
s e t cooki e ( " f r e nt e" ,false );
setcook ie("letra" ,false);
header ( " l oc at i on: pr ac t i c a1- i ndex . php" ) ;
7>
• Nota. Se pueden utilizar cookies o sesiones, pero la contrase ña se deberá almacenar cifrada
para una mayor seguridad, especialmente si se utili zan cookies.
Sin embargo al crear aplicaciones web, se necesita en mu chas ocasiones que lo realizado
en un a peti ción influya en las siguientes.
• Los m ecani smo s para conseguir grabar informaci ón de estado o sesión son:
Utilizar la dire cción IP del cliente.
Enviar información usando la cadena de cons ulta de la URL (paso por GET).
Enviar in form ación utilizando controles de for mulario ocultos (paso por POST).
Almacenar información mediante cookies .
Almacenar información mediante archivos de sesión en el servidor.
Almacenar información en ficheros o ba ses de datos.
Las cookies en PHP :
Se alma cenan mediante el método setcookie.
Se recogen utili zando el arr ay global LCOOKIE.
Permiten almacena r solo valores de tipo texto . Para almacenar otro tipo de valores
ut ilizam os las funcio nes serialize y unserialize.
El m étodo setc ookie sirve tambi én para borrar cookies
• El peligro de las cooki es es que alguien acceda a sus datos, ya que se envían en el paquete
http.
CONTENIDOS
6.1 BASES DE DATOS 6.6 .2 OB TEN ER EL NÚMERO D E FILAS
6.1.1 VENTAJ AS D E LA S BASES DE DATOS M ODIFICA DAS EN INSTRUCC IONES
6.1.2 PROCESO DE ACC ESO A UN SIST EMA DML
D E BASES DE DATOS DESD E PHP 6 .6.3 GESTi ÓN D E ERRO RES A L EJECUTAR
6.1.3 PROCESO DE ACCESO A LAS BASES DE INS TR U CC IO N ES SQ L
DATOS D ESDE PH P 6.7 OB TEN ER INFORMACiÓN MEDIANT E
6. 2 GES TiÓN D E ERRO RES INSTRUCCIONES SELECT
6.2.1 IM PO RTAN CI A DE LA GESTiÓ N DE 6.7.1 U SO D E LA SENTENC IA Q U ERY PA RA
ERROR ES EJECUTA R IN ST RU CCIO N ES SELECT
6.2.2 CO N FIG U RAC iÓ N DE REPORTE DE 6 .7.2 RECOG IDA DE LO S RES U LTADOS
ERRORES 6.7.3 FU N C IO NES IN T ERESA NTE S D E LO S
6.3 USAR MYSQL DESDE PHP CONJUN TOS D E RESULTADO S
6.3.1 CON EXiÓN A MY SQ L DESDE PH P 6.7.4 CODIF ICAC iÓN DE CARAC TE RES
6.3.2 USO DE M YSQLI . ¿FU N CIO N ES U 6 .7.5 PROBLEMAS D E SEGUR IDA D.
O BJET O S? INY ECC IO N ES DE SQ L
• Uso del lenguaje SQL. Las bases de datos relacionales (toda vía hoy en día son las mayo-
ritarias) poseen el lenguaje estándar SQL para manipular los datos. Es un lenguaje muy
conocido por todos los profesionales de la información y proporciona una poderosa sin -
tax is para gestio nar la información.
Hay que te ne r en cuenta que también hay bases de datos NoSQ L, es decir, bases de datos
no relacio na les qu e utilizan otros lenguajes para man ipular sus dat os como es el caso
de MongoDB , Cassandra, CouchDB o HBa se. La mayoría de ellas también se pu eden
utili zar con PHP, aunque ciertame nte no es lo habitual.
sea PHP) requiere lo mismo , un software (o incluso varios) que conecten al servidor web con el
de la base de dato s.
El proceso de cone xión de un servidor PHP con un servidor de bases de datos suele conll evar
estos pasos:
[1] Instalar un software de acceso al sistema gestor de bases de dat os en el servidor web. No
siem pre este paso es obligatorio. Por ejemp lo para acceder a servidores de bases de datos
Orade deberemos ins talar el software conocido como Orade Instant Client.
[2] Colocar la librería PHP qu e contiene el API (Applications Programming Interface, inte rfaz
de programación de aplicacio nes) de acceso al servidor de bases de datos, en el directorio
de extensiones de PH P, que es donde se guardan las librerías. Un API no es má s que el
conjunto de funciones qu e permiten acced er y manipular las base s de datos del servidor
corres pondiente.
[3] Modificar el archivo php.ini para asegurar que se carga la librería que hemos instalado.
[4] Reiniciar el servidor Apache y comprobar que dispon em os del API de acces o a la base de
dat os.
Realmente, cada base de dat os supone su propi o pro ceso de instalación , las más popul ares
poseen docume ntació n oficial en la dir ección:
http://esI.ph p.net/m anual/es/r efs.dat abase.ven dors.php
En el caso de MySQL es muy fácil ya que dispon e de una integración excelente con PH P. La
instalación de MySQL se ha explicado en el Apartado 2.6 "Instalación Y Configuració n de my SQL",
en la página 77.
[1] Conectar con la ba se de da tos. Lo que suele implicar un a fun ción a la qu e se le pasa la
llamada cadena de conexión con la base de datos. Esa cadena suele ten er estos eleme ntos:
• Puerto de acceso. La conexión requiere indicar con qué puerto debemos comunicar
con la base de datos. Si n o se indica, se tomará el pue rto por defecto. MySQL utiliza por
defecto el 3306 .
260 IMPLANTACiÓN DE APLICAC IONES WEB
Usuari o y cont raseña. Evidente me nte, si el siste ma de bases de datos tiene un mínimo
de segur idad, el acceso esta rá restr ingido a aquellas personas que tenga n permi so. Para
verificar este derecho, se requiere aute ntificar a dicha person a.
Nombr e de la ba se de datos. Esto difiere según la base de dat os. En MySQL no es obliga-
torio para con ectar, pero sí para acceder a los datos, ya que están organizados en bases de
datos. Ora cle, por ejemplo, tie ne ot ro tipo de organización en la que cada usuario posee
su propio esquema de datos.
[2] Preparar la instrucción SQL que deseamos lanzar sobre la base de datos. Esto supone que
el servidor pre pare los recursos necesarios para el acceso a sus datos. A veces, tambi én se
realizan ta reas de seguridad, como por ejemplo evitar ata ques por inyección de SQL.
[5] A veces se requiere volver al paso 4 ya qu e los datos se van recuperando poco a poco .
[6] Cerrar la instrucción. No es obligatorio en todas las bases de dato s, pero en las que lo per-
miten, se liberan los recursos que el siste ma ha ut ilizado para ejecu ta r la in strucción.
Al utilizar bases de dat os hay mucho s posi bles errores qu e pueden ocurrir. Ejemplos de erro res
son :
• Fallo al realizar la conex ión: porq ue el servidor de bases de datos no está en funcio na-
mien to, por fallo en la red, por in dicar ma l los datos de cone xión , etc.
• Fallo en la ejecución de una instru cción SQL: por mala sintaxis, porque la instrucción
incumple reglas de validación de datos, etc .
en la página web. Esto es un error gravísimo, ya que esa infor mac ión no ayuda en nada al usuario ,
el cual se asustará por un m ensaje que no entiende en absoluto ; además ese tipo de mensajes
puede dar pistas a aque llas perso nas que intenten atacar nuestro sistema porque sabrán qué ser-
vidores estamos utilizand o y, sabiendo sus vulnerabilidades, utilizar esa información para rom-
per el sistema.
Todas las API de acceso a la base de datos poseen funciones con las que podemos capturar los
errores y obr ar de forma más apropiada con ellos. Es muy importante cono cer esas funci on es.
Inicialm ente cuando estamos en proceso de depuración de nu estro código, nos interesa mo s-
trar todo lo que ocurre, pero cuando pasamo s a producción, solo lo más grave debería mo strarse.
Por ello debemo s calibrar bien la directiva errorj'eporting a nu estras ne cesidades. Sus posibles
valores son:
• E_ERROR : Solo se mostrarán los errores fata les (errores irrecuperables, graves).
• E_WARNING. Se muestran las advertencias(warnings) que son errores más leves.
• E_CORE_ERROR. Igual qu e E_ERROR pero solo muestra los errores procedentes del
núcleo de PHP.
• E_CORE_WARNING. Igual qu e E_WARNING pero solo mu estra los erro res proceden -
tes del núcleo de PHP.
• E_RECOVERABLE_ERROR. Error fatal, pero que no imp idió la ejecuc ión del motor
PHP al no considerarse inestable tras el fallo.
• E_ALL. Muestra todos los err ores (salvo los E_ST RICT ha sta la versión 5-4 de PHP).
Inicialmente el valor de erroerepor ting en el archivo php.ini sue le esta r establecido de esta
forma:
Por lo tan to se mu estran todos los errores. Si quere mos mostrar solo los errores graves pode-
mos utilizar:
En lugar de cambi ar la directiva error reportinq en el arc hivo de configur ación de PHP O,
pode mos util izar la func ión errorj'eporting, que permite modificar el nivel de errores que se
muestran, pero en tiempo de ejecuc ión. Es decir, desde el momento en el qu e se invoca a la fun -
ción decidiremos qué err ores se mostrarán independientemente de la configuración de php.ini.
Ejemplo:
error_reporti ng (E_ERRDR);
Se consi deran activas las dos últ imas. La recom en dada act ua lme nte es mysqli. Tanto PDO
como mysqli utili zan objetos, pero mysqli per mite ta mbién el acces o mediante funciones sin
usar objetos , aun que la mayor part e de pr ogram adores utilizan objetos por ser más versát iles.
La conexión entre PHP y MySQ L median te mysqli requiere que se cargue con PHP la libre-
ría php_mysqli (en Windows php_mysq1.dll y en Linux php_mysq .so). Para hacerlo hoy en día
basta con quitar el comentario (si lo hubiera) referi do a esa libr ería en el arch ivo de configuración
php.ini, o bien añadir a mano esta línea (Windows) :
extens ion=php_ mysqli .d ll
Por sup ues to, debemos tener disponible esa librería en el directorio de extensiones. Lo nor-
ma l es qu e en la mayoría de instalaciones no haga falta tocar nada, bien porque las instalacione s
por paquetes o las de software completo, como XAMPP, viene n ya preparadas con mysqli. En
la ins talación en Linux mediante código fuen te, se suele compilar el código PHP con la opción
UNIDAD 6. ACCESO A BASES D E DATO S MEDIANTE PHP 263
--with -m ysqIi (véase la Unidad 2 para más información), lo que asegura la instalación correcta
de la librerí a
Sin em bargo, los amantes de la programación ori entada a objetos se en con trarán más cómo-
dos trabajando con esta librerí a usando sus capac ida des con los objetos. Para difer enciar las do s
form as veam os este ejemplo:
Esta es la forma pro cedimental de acceder , muy parecido a la librerí a clásica de acceso a
MySQ L. La form a or ienta da a objetos sería:
usuario . Nombre del usuario de la base de datos con el qu e nos conec tamos (y que , por
lo tanto , al men os tendrá permiso de conex ión). De no indicarl o, se recoge de la directiva
PHP mysql.defaultuser.
contraseña . Contr aseña del usuari o con el qu e nos conecta m os. Si no se indica se re coge
de la dir ectiva mysql.default_pw (por defecto vale nulo).
• base de datos. Ind ica el nombre de la base de datos con la que se tra bajará en MySQL.
Si no se elige, lo deberemos de hacer luego porqu e no se pu eden ejecutar la mayoría de
instruccion es SQL en MySQL sin seleccionar un a base de dat os.
• puerto. Puerto de conexió n con MYSQL. Por defecto es el 3306 (puerto habitu al de
MySQL) qu e es el establecido en el parámetro mysql.default_port.
Ejem plo:
$mysqli=new mysqli ("127.0.0.1", "a ndrei", "12345", "prueba ") ;
En el ejemplo conectamos con el servidor local de MySQL utilizando el usuario andrei con
contrase ña [2345 y conectamos usando la base de datos prueba.
Si la conexión es correcta, la fun ción devuelve como res ultado el objeto de conexión (el enlace
a dat os) que se sue le asignar a una variable (en el ejemplo anterior se los queda $con). En el caso
de que falle deberem os comprobar los errores como se explica en el Apartado 6+2 Control de
errores en la conexión.
Las conexiones persistentes ahorran recursos en el servidor de base de datos pero requiere de
una mayo r de dicación a cada con exión. Que se use o no persistencia depende de esta s directivas
del archivo de configuración (php.ini) de PHP :
• mys qli .max_persistent. Máximo número de conexiones per sistentes que se pueden
crea r. Con valor o son ilimitadas.
conne cterror. Recoge el error si lo ha habid o (de otro modo valdrá falso).
• connect j errno. Devue lve el número del error
11 errorJist. Muestra la lista de todos los errores que han ocurrido desde que se reali zó la
conexió n
Ejemplo:
Hasta la versión 5.3 de PHP no se podía utili zar la versión orientada a objet os de estas dos
funcione s por lo que se debía hac er así: •
$mysqli=ne w mysqli ( ' loc a lhos t ', ' a ndrei ' , ' 12345', 'prueba ' );
i f (mysqli _connect_e r ror()) {
error "Er r or al con e c t a r : " . mys q l i_connec t_errno ( )." "
my sqli _conn ec t _e r ror();
}
Por último, el mét odo errorJ íst , que es accesi ble me diante my sql i _e r ror _ li stO o con
$mys q 1 i - >error _1 i s t) devu elve la lista de to dos los errores provocados desde la conexión.
Ejem plo:
El método devu elve t rue si no han ocurrido err ores al elegir la base de da tos y false en caso
con trario.
$mysqli-> query (
"CREATE TAB LE personas (id_pe rson a I NTE GE R, nom br e VARCHAR( 25)) " ) ;
Est a in strucción crea , si el usuario con el qu e se h a conectado ti ene permisos, una tabla en
la base de datos en uso ac tua lmen t e, de MySQL. Para com u n icar con MySQL usa la variable de
conexión smysqli que , se su po ne , se creó anteriormente.
Si la instrucción no func iona, entonces query devue lve falseo Si la instrucció n es exitosa los
resu ltados que devuelve dep enden del tipo de in strucción SQL:
• Con cualquier otro ti po de instrucción, devu elve true si ha sido exitosa y fal se de no ser
así.
Ejemplo:
$sql= "UPDATE pe r son as SET salari o=salario*1 .1 WH ER E cod_depart=9" ;
if ($mysqli- >query($sql ) ) {
ech o "Se ha actualizado la tabla de personas" ;
e l s e{
ec ho "Ha fallado la instrucción" ;
}
Ejemp lo:
$sql= "CREATE TABL E notas(cod_persona INT(11 ) , not a DECIMAL( 5 , 2 ) ) ";
if ( $mys qli ->query ( $sql ) {
ec ho "Tab l a creada " ;
}
else{
ech o "Fallo al crear la tabla: " .
$mysqli ->error . " nQ " . $mys q l i- >e r r no ;
}
Gen eralm en te no debem os m ostrar los mensajes de error de MySQ L, más bien det ectar qué
err or ha ocurrido (sea por el mensaje o por el número) y mostrar información que sea más enten-
dibl e por nuestros usuario s.
268 IM PLA NTACi Ó N DE APLICACIO NES W EB
Un conjunto de resulta dos es un a est ructura que almace na resultad os que tienen fo rm a de
tabla (filas y columnas). De forma práctica pode mos decir que es un a variable capaz de recoger el
resultado de un a cons ulta SQL. Un ejemplo sería:
Sres es la variable que recogerá el conjunto de res ulta dos (valdrá false, si falla la instrucción
SQ L).
Por lo tanto, si la instrucción anterior req uiere almacena r mucha inform ación , lo correcto
sería :
Es decir, la for ma habi tual de recorrer los resulta dos de un SELECT desde PHP es:
[1J Usar query pa ra lanz ar la in strucción SELECT. Su resultado será un objet o de tipo result set
al qu e le asigna re mos una variable.
[2J Usar el método fetch_asso c de esa variable, el cua l devuelve un array asoc iativo en el que los
índices son los no m bres de las columnas y los valores so n los valores de la primera fila de la
cons ulta resultad o de la instrucción SELECT. Si no hay resu ltados, devuelve fal seo
Durante el proceso de lectura no se pueden ejecutar otras sen ten cias sobre esa conexión. Por
lo qu e, tras leer los datos deseados, ten emos qu e invocar al m étodo clase del obj eto de resultados,
y así liber ar los recurso s de esa in strucción y, en definitiva, cerra rla.
[1J Ejecutar la inst rucción SELECT uti lizando el m étodo qu ery y asign ar el resultado a una
var iable. Si va a hab er much os resul tad os, util izar com o segun do parám etro de query, la
constante MYSQL_USE_RESULT.
[2J Comprobar si la variable no tien e el valor false , que in dica ría que ha fallado la ins trucción,
y por lo tanto, ges tionar los errores (se explica más adelante como co nt ro lar los errores de
la funció n query).
[3J Leer la primera fila de re sultados utilizando la función fetch_assoc perten eciente a la varia-
ble en la qu e h em os almacenado el conjunto de resultados y almacen ar ese re sultado (un
array) en una variable.
[4J Co mprobar que la variable qu e almacena la fila no tiene valor fa lse oSi vale false es qu e ya
no hay más valores que leer.
[5J Mostra r o manipular la forma deseada los dat os de la fila act ual.
[7J Volver al pa so 4.
[8J Si hemos salido del bucle invocar al m ét od o clase de la variable qu e almacena el conjunto
de resulta dos, para cerrar y liberar la in strucción.
270 IMP LANTACi Ó N DE APLICAC IO NES W EB
Veamos , por ejemplo, como mostrar los nombres y apellidos de un a tabla de personas en
forma de tab la:
<!doct ype html >
<ht ml lang="es" >
<head >
<me t a c harset="UTF-8 ">
<tit le >Doc ument </tit le >
</ hea d>
<body >
<?php
$mysqli = new mysqli("127.0.0 .1", "root", "345Gtfa") ;
if ( $mys q l i - >connect _e r r or) {
echo "Er ro r al rea l iza r la con ex ión ";
}
e lse {
$mysq l i - >sel ect_db("trabajo");
$sq l= "SELECT nombre,apellido1 FROM personas";
$res =$mysqli ->quer y ($sql,MYSQLI _USE _RES ULT );
i f ( $res ) {
ec ho "dable >c t r » c t h»Nombre</th> ct h s Ape l I ido</th ></tr> " ;
$fila=$res->fetc h_assoc ( ) ;
while ($ f i l a ){
echo "<tr><td >{$ f i l a [ "nombr e " ]}</td >";
ec ho " <td> {$fila ["apell ido1 "]} </ t d></ t r> " ;
$fil a=$res ->fetch_assoc ( );
}
ec ho " </table >" ;
$res- >cl ose ( ) ; l/ c i e r r e de la in s t r uc ci ón
}
else{
echo "Fallo al obtener la lista de pe rsonas " ;
}
$mys q l i - >close(); l/c i e r r e de la conexión
}
?>
</ body>
</ ht ml>
indicar las filas, ya que el cálcu lo exacto depende de que se hayan cargado todas las filas.
En todo caso es más recomendable utilizar búferes.
data_seek. Función que permite colocarlo s en el número de fila que indiquemos. Por
ejemplo, si Sres es la variable qu e representa al conjunto de resultad os, para colocarn os
en la ultima fila de los resu ltados, ut ilizaríamos la expresión:
$res- >data_seek($res- >num_rows-1 );
Lo nor mal hoy en día es que las páginas web se codifiquen en formato UTF-S de Unicode.
Para conseg uir mostrar texto de otras codificacio nes en ese format o, pod em os utilizar la función
utfS_en cod e. Si, por ejemplo, en la lectura de datos del apart ado ante rior tu viéramos problemas
con la codificación. Podríamo s cambiar el bucl e while de esta form a:
El mét odo fun cion a, pero resulta un tanto pesad o. Para evitar ten er qu e invocar a esta función
contin ua me nte, lo lógico es hacer qu e todos los dat os esté n en form ato ut f-8 en MySQ L y además
qu e la comunicación con MySQL utili ce ese form ato para codificar el texto.
Esto último impli ca modificar el archivo de configuración de MySQ L (my.ini o m y.cnf nor-
ma lme nte). Hoy en día MySQL suele te ner un apartado referid o a UTF-8 en ese archivo, pero lo
tiene en tre come ntarios. En todo caso para asegurar que la comunicación realmente es en UTF-8
en el apartado [mysqld] del archivo de configuración deberán aparecer estas líneas:
[mysq l d]
Si nuestra página PHP utiliza Unicode UTF-8 (es lo recomendable hoy en día), y estam os
teniendo siempre la precau ción de qu e dentro de MySQL trabajamo s en Unicode, los datos se
verán siempre de form a correcta.
272 IMPLANTACIÓN DE APLI CACION ES WE B
Como ejemplo sencillo y básico para hacern os idea de la importancia de te ner en cuenta las
inyeccion es SQL, supongamos que hemos reali zado una página de autentificación de usuarios a
través de este formu lario :
<!doc t ype ht ml>
<ht ml la ng="es " >
<hea d>
<meta c ha r s et="UTF-8 ">
<t i t l e>For mul a r i o de acceso </tit le >
</ hea d>
<body >
<h1 >Datos de acceso </ h1 >
<for m act ion="acceso.p hp" me t hod=" POST" >
<la be l for="usuari o" >Us uari o </ l a bel >
<i nput type= "text " name="us ua r i o " i d="us uari o "/ ><br / >
<labe l for =" pas s" >Cont r as e ña </ l a be l >
<i nput type= "text " name=" pas s " i d=" pas s" / ><br / >
<button>E nviar </b utton>
</ for m>
</body >
</ ht ml >
El form ulario envía el usuario a través del parám etro POST de nomb re usuario y la contraseñ a
con el n om bre pass. La página acceso.php hará una consulta a la ta bla de usuarios y si existe un
usuario con ese nombre y contrase ña dirá qu e el usuario es correcto; pero si no, nos dirá qu e es
incorrecto. Supo nga mos que hem os crea do este código para la página acceso.php :
<!doc t ype html >
<ht ml l an g=" es " >
<he ad>
<me t a c ha rset= "UTF-8 " >
<t i t l e>Pág i na de usuario </t i t le >
</ hea d>
<body>
<?php
if ( isset ($_POST["us ua r i o "] ) && isset ($_POST[ "pas s" ] ) ) {
$us uario=$ _POST [ "us ua r i o"] ;
UNI DA D 6. ACCESO A BASES DE DATO S M EDI ANT E PHP 273
Datos de acceso
Usuario jorge
Contra seña 1'12
""1"""3"'-
4""'5 -or..,-'1..,-
'=.,-
'1 - - - -
Enviar
Entonces el u suario en tra, sin hab er introducido contrase ña alguna. La ra zón es qu e esta
en trada gen era la in strucción SQL:
SELECT nombr e , pas s FROM usuarios WHERE nombre='j or ge' AND pas s = ' 12345
OR ' 1 ' = ' 1'
El WHE RE de esta in strucción siempre es verdadero porque la condición 'r'='r' siem pre lo
es. Luego este código es muy problem ático y está a expen sas del ataque de t erceras person as. La
cu estión es cóm o evita r este problema.
274 IMPLANTACiÓN DE APLICAC IONES WEB
• No utilizar la función multi- quer y. Esa instru cción es una variable de query, que adm ite
ejecutar varias in strucciones SQL a la vez si se separa cada una de ellas con un punto y
coma. Ante una eventual inyección de código SQL estaríamos en serio peligro porque si
podemos ejecutar varia s instrucciones a la vez, entonces, podemos a ñadir una instruc-
ción SQL completa y ma lévola.
• Conectar, si es posible, con un usuario que tenga los mínimos privilegios posibles. Es
mu y mala idea conectar con el usuari o root. Lo lógico en una web que accede a una base
de dat os solo para examinar la información , es crear un usuario con privilegios de lec-
tura sobre las tablas qu e deseamos utili zar.
• Verificar o conve rtir los datos qu e se esperan sean nu méri cos. Teniendo en cuenta que
éstos en SQL no utilizan comillas, la función reaLscape_string no nos ayudaría. Por lo
que antes de incrustar ese dato en nuestra instrucción SQL realmente habría que com -
probar que es válido.
• Cifrar contrase ñas y ot ros datos, ta nto al almace nar la información como al enviarla
duran te la com unicació n entre la base de dat os y el servidor PH P. Para más información
sobre cifrado de dat os, véase el Apar tado 4.5 "Cifrado", en la página 2 0 6 .
MySQL soporta transacciones solo en bases de datos y tab las gestionadas por motores com-
patibles con el uso de transacciones. El motor actual, InnoDB, soporta transacciones de form a
completa, lo que se conoce como soporte ACID de transacciones. ACtO son las siglas referentes a:
• Atomicidad. Asegura qu e una instrucción no se pueda ejecutar a med ias, o se ejecuta del
todo o no ha ce ninguna labo r.
UNIDAD 6. ACCESO A BASES DE DATOS M EDIA NT E PHP 275
Consistencia. Asegura que el manejo de una transacción nunca deje a la base de datos
en un estado incoherente.
Aislamiento (lsolation). Asegura que las operaciones de una transacción no afec-
tan a otras operaciones que se estén produciendo en la base de dato s, permanecen
indepe ndientes.
Persistencia (Du rability). Asegura que cuando confirme m os o anulemos un a tr an sac-
ción, ese estado sea rea lme nte definitivo y no te mp ora l.
6.8.2 AU T O COMMI T
Por defecto en PH P tod as las instruccion es DML se confir ma n (COMMIT) al instante de
forma au to mática, por lo qu e no pue den ser revocadas. Este estado es el habitu al ya que es el más
cómodo para evitar que un a transacción que de abierta demasiado tiempo, ya que las transaccio-
nes son costosas de mantener por parte del servidor de bases de datos.
$mys q l i -> que r y( " I NSERT I NTO ventas VALU ES(12 , 300 , 'Samsung galaxy S4')");
/ / . ..
l/s upongamos que hemos detectado que hay que anular esa inserción:
$mysqli->roll back ( ) ; / / a nul a la transacción
rovincias
id_localidad n_provincia id _comunidad
nombre nombre nombre
población superficie id_capital
n_provincia id_capital max. provincias
id_com u nidad
• La práct ica consiste en encon trar un a localidad eligiendo prim ero la comunidad en la que
está , luego una pro vin cia de esa localidad y finalm ente elegir la localidad de un a lista de las
localidades de esa provincia,
• Para ello un primer formulario nos muestra la lista de com unidades.
• Tras elegir la com unidad, un segundo formulario nos muestra las provincias de esa
comunidad.
• Finalmente un te rcer formu lario no s mu est ra una lista con las localidades de la provi ncia
elegida.
• Cuando elijamos la localidad deseada, se no s enseña la pob lación qu e tiene esa localidad. Eso
se hará debajo de la lista de localidades, la mism a página no s muestra ese resultado .
• Si acudimos a la provincia sin haber pasad o vía GET una comunidad , se nos devolverá al
formulario de las comun idades. Si vamo s a las localidades sin haber pasad o un a pro vincia, se
no s enviará al form ulario de provincias.
Tras descargar los archivos de scripts (son crearTablas.sql y datos. sql) se ejecuta n desde cual-
quier programa qu e admita la ejecución de scripts, com o MySQL Workbench o PHPMyAdmin.
Incluso se pued e desde la línea de comandos. Supongamo s que hemos descargado los archivos en
el dir ectorio bin de MySQL Si nos situamos en ese dir ectorio desde la líne a de comandos (indi -
UNIDAD 6. ACCESO A BASES DE DATO S MEDIANTE PH P - PRÁCT ICAS 277
ferentem ente de si esta mos en Windows o en Linux) y ejecutamos las instruc ciones de la página
siguiente.
r- . . .
r ./rnysql -u root -p < crearTablas.sql
· . / rnys q l -u root -p < datos .sql . ._._,, .._ .. .. __ .. " _. ..: .
Tras cada instru cción ten drem os que in dicar cuál es la contrase ña del usuario root, pero tras
la ejecución (el segundo script tarda bastante en ejecutarse) tendremo s los datos listo s. Conviene
cre ar un usuario al que solo permitamo s la lectur a de las tabla s por segur idad. En el códi go de
ejemplo a ese usuario le hemo s llam ado geo.
<?php
}
else
ech o "<p class='error'>No se pudo obt e ne r la lista de
".dat os< / p>" ;
}
e lse{
e c ho " <p class= 'er ror' >Fallo de conexión </p >";
}
?>
</ body>
</ ht ml >
Se pu ede observar que se incrusta varias veces código PHP dentro del código HTML, facilita la
escritura del código, pero complica un poco su lectura. A continuación se presenta el código del
formulario de provincias-practicar.php, es muy parecido al anterior solo que la instrucción SQL
necesita bu scar en dos tablas (por lo qu e es un poco más compleja) y que se detecta si se envía por
GET el nombre de la comunida d (si no se recibe, se vuelve al formulario anterior):
<?php
if(isset ($_GET [ "comuni dad " ] )==false)
hea de r("Location:comunidades-practica1.php ");
else $comu nidad=$_GET [ l c omuni dad " ] ;
?>
< ! doctype ht m1>
<ht ml l an g=" es" >
<he a d>
<me t a c harset=" UT F-8 " >
<t i t l e>El ecc i á n de la co mun idad autá noma </t i t le >
<l i nk rel ="stylesheet" href= "estilos .css" / >
</ head >
<body>
<?php
$mysqli=new mysqli ( "127 . 0 . 0 .1 " , "ge o " , "t 1234Fa " , "geogr a f i a " ) ;
if ($mysqli ) {
$sql="SELECT p.nombre provincia,c .nombre comunidad"
"FROM provincias p ".
"JOIN comuni da de s c USI NG( i d_comuni da d) "
"WH ERE c . nombr e =' $comun idad , "
"ORDER BY provinci a";
$res=$mysqli- >query($sql);
i f( $res) {
?>
UN IDA D 6. ACCESO A BASES DE DATOS MEDIANTE PHP - PRÁCTICAS 279
"datos</p>" ;
?>
</ body>
</ ht ml>
}
}
}/ / f i n if de conexi ón
else
echo "<p class='error'> No s e pudo conec tar< /p>";
}/ / f i n else inicial
?>
</ body>
</ ht ml>
El código del primer formulario es senc illo. Es una página html en la que simp leme nte se pide
el nombre de la pro vin cia y se envía dicho código a la página listado -pr acticaz.php que será la
encargada de realizar todo el pro ceso de gestión del listado de las localidades.
282 IMPLANTACiÓN DE APLICAC IONES WEB
La página que calcula el listado primero comprue ba qu e la provincia existe. Para ello ejecuta la
consulta SQL y si ésta no devuelve resultados, entonces es que la provincia no existe.
Para la paginación la idea es que a la página le podremos pasar un parámetro tipo GET llamado
pg en el que ind icam os la página que qu eremos ver. Si no se recibe página algu na , entenderemos
que quere mos ver la primera. Los enlaces con el número de página y el anterior y el posterior,
simplemente apuntan a la misma página, pero a ñadien do en la cadena de cons ulta el pará me tro
pg y el de la provincia que estamos viendo, es fundamental qu e no se nos olvide reenviar conti-
n uamente el nombre de la provincia .
Este es el arm azón complejo de la práctica, pero hay qu e te ner en cuenta que es mu y habitu al
pagin ar resultad os, ya qu e el usuario agra dece mostrar así los resultado s, por lo qu e merece la
pena el esfuerzo.
La última cuestión es el cálculo de las páginas , para lo cual está la funció n num_rows que
devue lve el número total de filas, así como la función seek nos perm ite situarnos en un número
de fila concreto. Fina lme nte, es im port an te que los resulta dos se carguen en modo búfe r para lo
cua l la funció n qu ery debe ut ilizar la constante MYSQ LLUSE_RESULT.
.pagina {
backgrou nd- col or : lightgray ;
f ont-size: . 7em;
}
tab le {
borde r - coll ap s e: co l l a pse;
width: 100%;
}
t d{
border:1px so l id bl ac k ;
}
td : fi r s t - o f- ty pe {
font-we ight:bold;
}
td :last-of-type{
text-align : right;
padding-right:10px;
}
t h{
bac kgr ound- col or : black ;
co lor: wh ite ;
}
. pa g i na Act ua l {
bor der:1px solid bl ac k;
}
</s t y le>
</ hea d>
<body >
<?php
if(i s s et ($_GET[ "pro v i nc i a "] )==false)
he ader("Location :form-practica1.php") ;
else {
$mys q l i = ne w mysqli ( "127. 0. 0. 1 ", "geo" , "4fRw2", "geografia");
if ( $mys qli) {
$provincia = $_GET[ "pr o v i nc i a "] ;
l/ pa s o a mayúscu las de la prov i nc ia
$provincia=str t ouppe r ( $pr ovi nci a ) ;
l / a hor a cambiamos l os acentos , de otro modo fallan
$provincia=s t rtr ($provincia , ' áé í ó úü ' , 'ÁÉÍÓÚ Ü') ;
$sql = "SELECT l.nombre localidad, poblacion "
"FROM localidades 1 " .
"JOI N provincias p USING( n_pr ov i nc i a ) "
"WHERE UPPER ( p . nombr e ) = '$provincia ' "
"ORDER BY localidad";
284 IMPLANTACiÓN DE APLICACIO N ES W EB
- - -- -- - - -- - --
• Es imperati vo contro lar los erro res para qu e el usuari o sepa lo qu e ocurre en cada mom ento
Esta es una pr áctica exce len te para crear una aplicación que in corp ore la mayor parte de ele-
mentos de PHP vistos en este manua l: sesio nes , paso de parámetros por GET, uso de bases de
daztos, for mular ios, expresiones reg ulares, etc.
Antes de trabajar n ecesitamos crear la estructura de base de datos. Par a ello crearemos una
base de datos llamada mensajes dos tablas: una para los us uarios y otra par a los me nsajes. Este
sería el código SQL necesario:
28 6 IMPLANTACiÓN DE APLICACION ES W EB
La ges tión de er ro res la h a remos de forma qu e cu ando una págin a reali za una acc ión (por
ejem plo, dar de alta a u n usu ario ) si ésta falla, que devu elva un có digo de error (vía GET, que
es m ás có m odo) a la pá gina qu e invocó el servicio. Par a ce n traliza r y qu e sea m ás ente n dible el
código , el docu m en to errores-practicat.php ti ene este código:
<?php
l/cons t a nt es para errores
const ERRO R_CONEXION=1 ;
c onst ERROR_OOS_PASSWORO=2 ;
c o ns t ERROR_USUARIO_EXISTE=4;
c onst ERROR_USUARIO_NO_EXI STE=8 ;
c o ns t ERROR_USUAR IO_PASSWORO=16 ;
c o ns t ERROR_US UARIO_I NVALIOO=32;
c o ns t ERROR_GRABAR=64 ;
const ERROR_PASSWORO_CORTA=128 ;
Los núm eros de error se po nen en potencias de dos (r,2,4,8,r6,etc) de modo que podam os, si es
n ec esario , co n un m ism o número en viar varios mensajes de error. Así el número 5 indicaría que
el u suario existe (error nú m ero 4) y u n fa llo de conexión (error número r) a la vez .
A la página in icial, la llam aremos index-practicat.php y simp lemente co ntiene dos formu larios
(cada u no oc u pa la mi ta d de la pantalla) el primer o para ir a nuestro bu zón si ya estamos da do s de
alta y el segun do para darnos de alta.
<i nput type= "password" name=" pa s s wor d " maxl e ngth ="30"
p laceholder="contraseña"> <br >
<input type="password" name=lpassword2" maxlength="30"
placeholder="Repita contraseña" required ><br>
<but t on> Al t a de usuario </button >
</ fo r m>
</ d i v>
<di v id="error" >
<?php
include lerrores-practica3.php" ;
i f ( isset ( $_GET l "error 11 ] ) ){
Vemos ahora el código para añadir un nu evo usu ar io. La cu estión es qu e ese usu ario puede ya
existir. Además, validam os qu e el nombre de usuario t en ga solo letras y/o número s. La contra-
se ña debe tener al me nas 6 caracte res ta mbié n . Del usu ario cogere m os los 30 primero s car act e-
res , al igu al qu e de la contrase ña (por si nos han intentad o env iar m ás caracteres). La co ntrase ña
se guarda cifr ad a.
Si el usu ario ya existe env iaremos de nu evo el flujo a la página index , lo m ismo si la con trase ña
se repite o hay otro tipo de erro r. Si los datos son cor rec tos, el flujo se diri girá al bu zón del nuevo
usuario, habiendo creado una sesión y graba n do el usuario como variable de sesión. Por eso, el
código de la pá gina (se llama nuevo-practicaj .php) es solo PHP:
<?php
s es si on_start ( ) ; l / s opor t e de sesiones
i nclude "errores-practica3 .php ";
$error=0 ; / / c e nt i ne l a de errores
if (i sset ($_POST[ l us ua r io " ] ) &&
i sset($_POST [ "pas s wor d" ] ) &&
isset($_POST[ l pa s s word 2 "] »
{
l/ r e cog e mos l os pa r á me tros asegu ran do que cogemos como
l/muc ho el má ximo t a ma ño pe rmitido
$us uario=substr ($_POST[ "us ua r i o "],0 , 30 );
$password=substr ($ _POST [l pas s wor d"], 0, 30 );
$password2=s ubs tr ($ _POST [ l pas s wor d2"] , 0, 30 );
if (preg_match ( "/ ( *UTF8) A[\ p{L}\ p{N}] {1,30}$/" , $us ua r i o » {
if ($pas s wor d == $password2 ) {
if (strl en ($password »=6 ) {
UNIDAD 6. ACC ESO A BASES DE DATOS MED IANTE PHP - PRÁCTICAS 289
$mys q l i = new mysq l i ("127 .0 .0 .1" "mensajes ", "e ds FG1 " ,
I
"mensajes " ) ;
i f ($mys q1 i ) {
$c ifrada = pas sword_hash ($ pa s sword,
PASSWORD_DEFAULT );
$sql = " I NSERT I NTO usua rios(usuario ,pass) "
"VALUE S( ' $usuario ' , ' $ci fra da ' ) " ;
if ( $mys ql i - >quer y ( $s ql ) == fa lse ) {
//1062=cód i go MySQL de índice dup l icado
if ($ mysql i- >err no==1062)
$error= ERROR _US UARIO_EXISTE;
else
$error = ERROR_GRABAR;
}
else
$_SESSIO N[ "usu ar io "] = $usuario ;
} else $error=ERROR_CONEXION;
}
e lse $error=ERROR _PASSWORD_CORTA;
}
el se $error=ERROR_DOS_PASSWORD;
}
el se $error=ERROR_US UARIO_I NVALIDO;
}
e lse {
header("Location :index-practic a3 .ph p");
}
i f( $error !=0)
header ( "Loc at i on : i ndex- pr act i ca 3 . php ?e r r or =". $error );
e lse
hea der("Loca tion:buzon-practica3. php" );
?>
<?php
sess ion _sta rt();
include "errores-practica3.php ";
if ( isset ( $_POST[" us ua rio"]) &&
isset( $_ POST[" password"] ) )
{
$usuario=subs t r ($ _POST[ "us uar i o "] , 0 , 30 );
$pa s sword=subs t r ($ _POST[ "pas s wor d "] , 0 , 30 ) ;
290 IMP LANTACI ÓN DE APLICACIO NES W EB
i f( pr eg_mat c h ( "/ ( *UTF8 )" [\ p{L}\ p{N}] {1 , 30}$/ " , $us uar i o ) ) {
i f( s t r l en ( $pas s wor d » =6) {
$mysql i = ne w mysqli ( "127 . 0 . 0 . 1 " , "mensajes ", "edsFG1" ,
"me ns a j es ") ;
i f ($mysq1 i ) {
$s q l = "SELECT usu ar io , pass FROM usuari os"
"WHERE usu ar i o= ' $us uar i o ' '' ;
$res =$mys ql i - >query ($ sql );
if ( $r es == fal s e)
$error = ERROR_CONEXION;
else{
$f ila=$res- >fetc h_assoc ( ) ;
i f( $ f i l a){
l/ ver i f i camos contrase~a
i f( pas s wor d_veri fy ($password , $ f il a[ "pas s "] ) ){
l / cont r as eña co r rec ta , pr ep aramos ses i ón
$_SESSION["us uar i o "] =$fi la ["us uario" ] ;
$res - >c lose() ;
}
el se $error=ERROR_USUARIO_PASSWORD ;
}
else $e rror=ERROR_USUARIO_NO_EX ISTE;
}
} else $error = ERROR_CONEX ION;
}
e lse $error =E RROR_PASSWORD_CORTA;
}
else $error=ERROR_US UAR IO_INVALIDO;
}
else{
header ( "Locat i on : index- pr act i ca 3 .php" );
}
if ($error!=0 )
header ( "Location : i ndex--pr act ica3 . php 7error=" . $error );
else
head er ("L ocati on: buzon- pr act i ca3 . php" ) ;
7>
dentro de una capa DIV a la hora de cre ar esta página es bu en o ir soluciona n do cada función por
sepa ra do. El código qu e propon em os para esta págin a, buzon -practica.php es:
<?php
s essi on_start ( ) ;
include "er r or e s - pr ac t i c a3 . php";
i f(i s s e t ($ _SESSrON [" us ua r i o " ] )==f al s e )
l/s i no ha y ses ion de usuario vamos a l for mulario
head e r ( "Loca t i on:index-pr ac ti ca3. php " ) ;
e lse
l/ bus camos a ve r s i ese usuari o existe
$usu ar io=$ _SESSrON["us ua r i o "] ;
$mysqli = new mys q l i (" 1 27 . 0 . 0 . 1 " , "me ns a j es " , "e ds FG1" , "mensa jes") ;
if ( $mys q l i ) {
$sql = "SEL ECT us ua r io , id_us uar i o FROM us uarios " .
"WHERE usu ar i o='$us uario''' ;
$r es =$mys q l i - >que r y( $s q l);
i f ($res){
i f( $r es - >num_r ows ==0)
l/no se ha encontrado al usuario, a lgo ra ro pasa
l / de vo l vemos e l flujo al formular io de entrada
he ader("Location:index-formulario3 .php");
else{ l/recogemos el id_usuario
$fila=$res- >fetc h_assoc();
$i d_usua r i o=$ fil a[" id _usua r i o "] ;
l/ce r r amos i ns tr ucción , pero l a co nex ión s ig ue abierta
$res- >close() ;
}
}
e lse
heade r ( "Loc a t i on : i ndex- pr ac t i c a3 . php ?e r r or =" .ERROR_CONE XION );
}
else
header("Location:index-practica3.php?error=". ERROR_CO NEXION);
?>
<!doc t ype htm l >
<ht ml lang="es " >
<he ad>
<me t a charset="UTF-8" >
<t i t l e>Buzón de mensajes </t it le >
<l i nk re l="stylesheet" hr e f ="es t i l os - pr ac t i c a3. cs s " / >
</ head>
<body>
<h1> Ho l a <?=$usu a rio? ></ h1 >
<d i v i d="i zd a" >
292 IM PLANTA CiÓN DE APLICACION ES WEB
El código de la página de envío de mensajes env io-practica.php se enca rga de com probar qu e
tiene todo s los datos. Se debe asegura r que el destinat ario existe, de otro m od o se prepar a un
código de err or para que el bu zón de men sajes le muestre. Si ese destin atario existe, recogem os
su identificador y como ten emo s el del remite (que hem os pasado ocu lto desde el bu zón) simple-
mente a ñadimos una nu eva fila a la tabla de mensajes. Esta página solo mu est ra mensajes si todo
ha ido bien , en caso contrario, entrega el error al bu zón para que se enca rgue de mostrar el tex to
de error.
<?php
include "error e s- prac t i c a 3 . php" ;
if(isset( $_ POST["id _remi te"] ) && i s s et ($ _POST [ "t e xt o " ] )
&& isset( $_POST["destinatario"])){
$id_remite=$_POST [ " i d_r emi t e " ];
$destinatario=$_POST [ "de s t i nat ar i o "] ;
$texto=$_POST [" t ext o" ];
$e r ror =0;
$mys q l i = new mysqli (" 1 27 . 0 . 0. 1" ," me ns a j es" , "eds FG1 " , "mensajes ") ;
i f ($ mysq 1 i ) {
l/ bús queda del destinatario
$sql = "SELECT usuario, id_usuario FROM usuarios
"WHERE usuario= ' $des t i nat ar i o''' ;
$res=$mysqli - >query ($sq l ) ;
i f( $res ){
if ($res - >num_r ows==0)
$error=E RROR_U SUARIO_NO_EXISTE ;
el s e {
l/e l usuar io existe, tomamos su i d y a~adimos el mensaje
$ f i la = $r e s - >f etc h_as s oc();
$id _destino=$ f ila [ " i d_us uar i o " ];
$res- >close() ;
$texto=$mysqli- >r eal _escape _s t r i ng ($texto ) ;
$sql= " I NSERT INTO mensajes (texto, id_remite, id_destino) "
"VALUES ( ' $t ext o' , $ i d_r e mi t e, $ i d_de s t i no)";
if ( ( $mysqli- >query ($sq l ) )==false )
$e r ror= ERROR_GRABAR;
else
$mys ql i- >close() ;
}
}
294 IM PLAN TACi ÓN DE APLICACIO N ES W EB
i f ( $error !=0) ;
head er ( ILocat ion :bu zon-practi ca 3 .p hp ?error=" .$error ) ;
?>
<!doc t ype html >
<ht ml l a ng=" e s >11
<head>
<met a charset= IUTF-8" >
<t i t l e >Doc ume nt </ t i t l e >
</ head>
<body>
<h1 >Mens a je e nv iado</ h1>
<p><a href=l buzon- pr act i ca3. php" >Vo lver a l buz ón </ a ></p >
</ body >
</ ht ml>
Solo falta el códi go de la hoja de estilos, qu e es claramente mejorable, pero qu e permite hacer-
nos una idea de como se ven las diferentes áreas. Código del archivo estilos-practicaj.css:
# izda {
floa t : l eft;
width :50%;
max-heig ht :600px;
ove rf low- y : a ut o ;
}
#dc ha{
fl oat: l eft;
UN IDAD 6. ACCESO A BASES DE DATOS MEDIANTE PHP - PRÁCTICAS 295
widt h :50%;
}
#c e r r a r {
float: left;
wid th: 100%;
}
#e r ror {
fl oat : l eft ;
width:100%;
background - col or : r ed;
co lor : wh ite;
ma r gin- t op : 4em ;
}
. e r r or {
fl oa t: l e ft ;
co lor:red;
}
h1{
text- a l i gn : center;
}
Lista de cursos
Cursos disponibles Plazas totales Plazas disponibles
~ 4-8 o
Gu itarra acústica 20 8 Añad ir plaza
Gui ta rra espa ñola 15 11 Añadir plaza
Historia de Palencia 15 12 Añadi r plaza
Marc ha nó rdica 15 1 Añadir plaza
Montañismo 15 15 Añad ir plaza
NalaeiéR f3ara bebés .t{) O
NataeiéR para Ile~ .t{) O
Natac ión-avanzado 18 14 Añadir plaza
Natación·bá sico 30 7 Añadir plaza
Padd le 15 6 Añadir plaza
~ 45 O
Runn ing avanzado 25 1 Añadir plaza
Spinning 15 12 Añad ir plaza
Yoga 15 7 Añad ir plaza
El acceso a las bases de datos desde PH P requiere cargar un módulo qu e contiene la API
de acceso a la base de dat os concre ta (por ejemp lo mysqli) al arrancar PHP. En ocasion es
se requiere también in stalar un software conector en el servidor (por ejem plo el Orac le
Instant Client para conectar con servidores Oracle Database).
Los dat os necesarios para conec ta r con un a base de datos son: la IP o nombre del ser -
vidor de base de dat os, el puerto que utiliza, el n omb re de la base de dat os a utili zar, un
usuar io y su contrase ña de acceso.
Para acceder a MySQL las librerías recomendadas son rnysqli y pdo . La prim era es la que
más se utili za actualme nte.
[2] Ejecutar la ins trucc ión SQL con ayuda del método query.
[3] Recoger los dato s de la instrucción si es de con sulta con ayuda del m étodo
fecth_assoc. Si no es de consulta basta con comprobar si se ha ejecuta do bien.
Es posible ut ilizar instrucc iones de transacción con MySQ L, siempre y cuando el motor
de la base de datos lo permita.
298 IMPLANTACiÓN DE APLIC ACIO NES WEB
SISTEMAS DE GESTiÓN DE
CONTENIDOS
OBJETIVOS CONTENIDOS
7.1 VENTAJAS Y CA RACTE RíST ICAS DE LOS
Identificar las ventajas de los CMS
CMS
7.1.1 ¿QUÉ ES UN C MS?
Reconocer la utilidad que aportan los 7.1.2 HI STO RIA DE LO S C MS
CMS a la implantación de aplicaciones 7.1.3 VENTAJAS DE LOS CMS
web 7.2 EST RUCT URA DE UN CMS
7.2.1 VISTAS D E U N CMS
- Clasificar los diferentes tipos de CMS 7.2.2 ELEMENTOS DE UN CMS
según su funcionalidad 7.2.3 TECNOLOGíA SUBYACENTE EN LO S
CMS
Si esos conte nidos tienen que actualizarse a menudo, si además pueden ser crea dos por dife-
rentes person as y, sobre todo, si queremo s qu e puedan publicar directam ente conte nidos per so-
nas sin conocimie ntos técni cos, ento nces claram ente estamos obligado s a utilizar un siste ma de
gestión de contenidos.
Con un CMS podemos, adem ás, diferenciar entre los contenidos y la estru ctura del sitio web:
me nús, enlaces, almace na miento físico, cód igo, administración de usuari os, etc. Esta estructura
es lo qu e se conoce como el back-end. Por otro lad o, la visión que tienen los usuarios, tanto los
que publi can contenidos, como los que simplemente lo ven, se le conoce como front-end.
Poco a poco a fina les de los 90 muchas empresas, especia lmente de noticias, utilizaron sis-
tem as de gest ión de conte nidos. A la vez aparecieron CMS ta nto come rciales como de código
abierto como Allaire Spec tra, Typo 3 o Mambo .
Quizá el primer CMS que obtuvo rea lmente éxito entre los creadores de aplicaciones web, fue
PHP-Nuke. Se trata de un sistema de gesti ón de sit ios de noticias muy utilizado a principios de
este siglo.
El éxito de los CMS, realmente, em pezó en torno al a ño 200 7 cua ndo productos como Joomla!,
Drupal o Wordpress maduraron y empezaro n a utili zarse extensam ente. En esto contribuyó
enorme me nte el éxito de los blogs; sitios web donde los conte nidos se orga nizan en base a su
U NIDAD 7. SISTEMAS DE GESTiÓN DE CONTENIDOS 301
fecha de publicación, formando una especi e de cuaderno de bitácora. Este tip o de sitios propició
qu e personas sin conocimientos avanzados en las tecnolo gías web, pudieran crea r conte nidos de
aparie ncia muy profesion al y fácilme nte con ayuda de estos CMS.
Poco a poco han ido mejorando las pre sta ciones de todo s los CMS y aho ra tenem os un a
exte nsa oferta tanto de sistemas de código abierto y gratuito como de sistemas de pago , que se
adaptan a casi cualquier necesidad concreta .
• Actualización de contenidos más rápida. Tiene que ver con la ventaja anterior, como
es fácil a ñadir contenidos y éstos se publican al insta nte, el resultado es una web mu y
din ámica donde los contenidos pueden cambi ar mu y a menudo.
• Facilidad para determinar el diseño. Hacer un sitio web con un di se ño profe sional es
una tarea difícil. Los CMS proporcionan numerosas plantillas de aspecto profesional que
se aplican rápida y fácilmente . Lógicamente la pega es la falta de libertad para d ise ñar.
• Posi bilida d de personalizar el ent orno. Esta es una capaci dad que pretende aliviar el
problema de la falta de libertad come ntada en el apartado anterior. Al fina l, los CMS uti -
lizan los len guajes habit uales de creac ión de aplicaciones web: HT ML, CSS, ]avaScript ,
PHP, etc. Por lo que , para aque llas person as con conoc imientos avanzados, disponemos
de la posibilidad de adap tar el di se ño a nuestras necesidades.
• Ada ptaci ón a la necesid ad con cre ta. Muchas veces los sitios y aplicaciones web de
Intern et ofrece n un servic io muy concreto : un blog, una plataform a educativa, una
tien da on line, una revista o periódico , etc. La cuestión es que disponemos de CMS espe -
cializado s para ese tipo de tareas : hay CMS que facilitan la escritura de blogs, CMS que
sirven para crear sitios de tipo wiki, etc.
• Consistencia visual. Ante una gran cantidad de páginas en un sitio es dificultoso man-
ten er la misma apar iencia visua l y política esté tica de la empresa concreta. Los CMS
3 02 IMPLAN TACiÓN DE APLICAC IONES WEB
con struyen un armazó n com ún para los contenidos. Gracias a lo cua l que no tendremos
sensación de caos o de falta de profesionalidad .
Facilida d para añadir nuevas funcionali dades. Casi todos los CMS disponen de la posi-
bilidad de a ñadir, extensiones, plugins o compo nentes, en definitiva, que apor tan nu evas
funcionalidades. Podemo s, fácilme nte, incluir módul os rea lizado s por otras person as y
qu e aporten valor a nu estra aplicación
El back-end. Visión relegada a los admi nistradores. Mediante esta vista se generan los
aspectos ocultos al usuar io, pero fundamentales en la gestió n del CMS. Entre ellos están:
La organización de gru pos y usuarios
La estruc tura física de los archivos y directorios del CMS
La organización lógica de menús, enlaces y compone ntes
• Tareas de limp ieza
Copias de seguridad
• Aspectos de posicion ami ento en bu scadores
Etc.
• El front-end, Visión del sitio qu e ti enen los visitantes y ta mbién los usuarios registrados
sin privilegios administr ativos (editores de contenido). Desde esta vista se puede ver el
resulta do final de la aplicación web y ta mbién modificar el con tenido (si tenem os per-
miso para ello).
Administrador de usuarios. Vista , dentro del back-end, que no s permite crear, modi-
ficar y eliminar usuarios. También no s perm ite organ izarles en gru pos y, fundamental-
mente, designa r sus permisos y pri vilegios.
1111 Editor de menús, categorías o jerarquía del sitio. Es parte del back-end y con él gene-
ramos la estructura organizativa. Sin duda es un o de los aspectos más determinantes,
clave de la facilidad de uso del sitio que esta mos construyendo. Además, en mu chos
CMS, podemos hacer que ciertas secciones de la organización sean editables por ciertos
usuarios y otras no .
Editor y adm inist rador de temas. Es el componente que se enca rga de gestionar los
temas; es dec ir, la apariencia visual del entorno. Sue le encargarse de elegir un tema y
de dotar las herramientas para crea r tem as propios o bien modificar o person alizar los
existe ntes.
• Adm in ist ra dor de extensiones y plugins. Encargado de aña dir, modificar o eliminar
componentes externos al sitio web.
• Gestor de re des sociales. Cada vez más presente en el CMS. Permite que los contenidos
puedan ser fácilmente enlazables a las redes sociales, o bien autentifi car median te las
cue ntas de las redes más populares a los usuarios qu e quieran hacer com entarios, etc.
• Gestor de taxon omías. Perm ite gest ionar los te mas y palabras claves de los contenidos.
De esta forma , podremos hacer búsquedas en base a esas palabras para enco ntrar conte-
nidos rela ciona dos con ellas.
En definitiva, un CMS aporta num erosa s herramientas para cubrir todo lo qu e se necesita en
la gestión de un sitio web donde hay muc ho contenido.
En cuan to al sist ema de bases de datos, es absolutam ente dominante MySQL. Pero hay bas-
ta ntes CMS que utilizan SQL Server (especialmente los que son de pago y creados para la plata-
forma .NET de Micro soft), Oracle, PostgreSQL, SQLite o DB2.
El resultado final, como en to da aplicación web, son ins trucciones HT ML, CSS y ]avaScript
que cualquier navegador puede traducir y mostr ar. Así pues , estamos ante una aplicación típica
de tres niveles (véase 1.5.3 "A rquitectura de tres niveles", en la página 25 ). En la qu e cabe destacar
304 IMPLANTACiÓN DE APLI CACIONE S W EB
que la capa de presentación se ha ido reno vando en casi todos los niveles para dar cabida al nuevo
está ndar HTML Sy a las librerías JavaScript más populares com o jQuery.
En gene ral, la arquitectura de fun cionamien to de un CMS se pu ede esquema tizar de esta
form a:
M ÓD ULO S,
EXT ENSIO N ES Y PLUG INS
PLAN TI LLAS ~
MOTOR D E
- -
T RANSFO RM ACiÓ N
-
---~ = =
-
--
- -
-
-
CAPA DE ACCESO
RESULTADO VISUA L
BASE DE DATOS
7.3 T IPOS DE C MS
Hay que te ner en cuenta qu e hay CMS que son de código abierto y además gratuitos y CMS
que son de pago . La mayor parte de los CMS de pago aporta n soporte por parte del fabricante y
valore s a ñadidos a los CMS de códi go abierto. Al ser producto s comerciales trabajan mucho la
apariencia y la robustez.
No obstante, los CMS de código abierto poseen un a comunidad de desarrolladores y usuario s
enor me que contin uame nte rea lizan mejoras al producto , con lo qu e no solo no tiene n mu cho
que envidiar a los de pago, sin o qu e incluso les su peran en muchos aspectos.
Al final la elección del CMS te ndrá qu e ver con la n ecesidad concreta qu e ten gam os y el pre-
supues to. Hay CMS que solucionan muy bien ciertos aspec tos, pero no otros, por lo qu e lo mejor
es est udiar el qu e más nos in terese.
Por otro lado , hay que tener en cuenta que, pues to qu e un CMS es una aplicación web, po de-
mos crearla nos otros mismo s (eso sí con mucha pericia) o bien pedir a una empresa qu e nos cree
un CMS a m edida. Eso es lo que ocur re, por ejemp lo, en los gra ndes sitios de noticias donde
decenas de periodistas crea n contenidos que rápi dame nte apa rece n , y en la ubi cación adecuada,
en la web. Crear un CMS por parte de la propia empresa solo está a disp osición de empresas con
UNIDAD 7. SISTE MAS DE GESTiÓN DE CO NTENIDOS 305
un departamento de desarrollo de aplicacio nes. Crear un CMS a me dida también imp lica poseer
un importante pres up uesto para esta materia.
El presupuesto es un factor clave y tenie ndo en cuenta que las necesidades de la mayoría de
em presas y entidades no suelen ser excesivas, un CMS de código abierto es un a excelente opción.
Hay CMS que incluso tienen una versión gratuita, con funcionalidad más limitada, pero a
veces suficiente para nuestras nece sidades, y otra de pago con más funciones posibles.
Su objetivo es impl ementar webs donde vario s tipos de usuarios generan contenido y la estruc-
tura de la publicación de conte nidos es mu y jerárquica e implic a una administ ración avanzada.
Revist as, periódicos, sitios corporativos, entidades públi cas, sitios orientados a publ icar eventos
y, en definitiva, sitios donde predomina la información estruc turada en temas y categorías , en la
qu e ciertos usuarios pu eden escribir en ciertas part es, pero no en otras.
7.3.1.1 JO OM LA!
Es gratuito y de código abierto y muy utilizado en docencia como ejemp lo fundam ental de
CMS. Se ha creado con PHP, MySQL y Apache , lo que le hace cómodo para modificar por parte
de muchos desarrolladores.
Permite, control de usuarios, una bue na administración y gest ión del back-end, una buena
interfaz para publicar en el front -end, nume rosos plugins y me joras ,etc. En definitiva, hay poco
que le podamos pedir a un CMS que ]oomla! no aporte.
Ha te nido pro blemas serios de seguridad en algunas versiones que , au nque se han ido solucio -
nando, le ha n causado cierta ma la fama .
Su virt ud es la facilidad de uso, que permite crear sitios complejos rápidamente. Quizá el cue-
llo de botella (comparado especialmente con Drupal, su principal rival) es la dificu ltad para hacer
sitios escalables.
Todo esto en teoría, porque ]oomla! es el CMS con el que se han muchas webs de alto nivel en
Internet: la cadena MTV, Barnes and Noble, Aeropuerto de Heathrow, La torre Eiffel, etc.
Pero la virtud de Drupal es la escalabilidad. Pod em os definir sitios mu cho más versátiles y con
mucha s m ás posibilid ades. Como ocurría con loornlal, no hay tarea que deseem os de un CMS que
no esté pr esente en Drup al. Incluso podemos ir más allá, ya que Drup al prop orcion a un marco de
trabajo para desarrolladores que permite personalizar totalmente el resultad o final y que además
está construido de una forma mu y atractiva para los desarrolladores.
Al igual qu e looml al está creado en PHP y la base de dat os suele ser MySQL, aunq ue se admi-
ten PostgreSQL o SQLite.
Ejem plos de sitios que usan Drupal son: Twitter, Pinte rest, El gobierno de EEUU, la cadena
NBC, Box.com, Nokia.com o Tesla.
7.3.1.4 T Y P03
Fue uno de los primeros CMS y sigue sien do bastante usado. Es de código abierto, creado
para PH P y MySQL. Proporciona las mismas pos ibilidades que los anteriores, pero tiene unas
exte nsiones me nos logradas. Muchas universidad es alema nas, la em presa Bayer, Loewe y ot ras
mu chas, utilizan este CMS. La FAO, Koni ka Minolta y Volkswagen son ejemp los de webs creadas
con la ayuda de Typ03.
7.3.1.5 PLON E
Este CMS también es vete rano y, a diferen cia de los anteriores, se ha crea do en Pyth on . Presume
de facilidad de uso y rapide z. Como los anteriores posee todas las carac terís ticas exigibles a un
CMS, pero dispone de mu chas meno s plan tillas y extens iones. La Univers idad Humboldt de
Berlín, Correos de Brasil y ACM son ejempl os de webs que usan Plon e.
Muchísimas de las web que hay en Intern et son blogs , tuv iero n un éxito im presionan te en la
déca da pasada y todavía ahora se considera una de las formas comunicativas más importa ntes
de Internet. Normalmente los usuarios del blog no solo leen las entradas , sino que se les per mite
publicar para comentar dichas entradas.
Entre las necesida des que se le pide a un CMS especializado en blogs, está n:
7.3.2.1 W O RDPRESS
Indudablem ente se trata del CMS más exitoso. Utilizado inicialm ente solo para const ru ir
blogs, su facilid ad de uso, or ientación semántica, el hecho de ser cód igo abier to construido en
PH P, respeto a los estándares, así como su exte nsa y diná mica com u ni dad de usuarios son qu izá
las claves de su éxito .
En la act ua lida d ha ampliado sus capac ida des y ya se considera ta mbién un CMS para crear
todo tipo de sitios web , co n lo que compite directam en te con loornla l o Dru pa/. Es también, sin
duda, el CMS qu e posee más exte nsiones y plantillas para crea r las págin as web . Además, tie ne
ta mbién grandes posibilidad es para ser utili zada como plat aforma de creación de ap licaciones
web.
Según las estadísticas de la página \V3tech.com, una de cada cuatro páginas de Intern et está
creada con WordPress. No solo se utiliza en el ámbito personal, gran des sitios como el siti o web
de la revista New Yorker , Son y Music, Google Ven tures, Mark & Spencer, o la página social de
Ford, por poner unos ejemplos, utilizan WordPress. En el caso de los blogs corporativ os, se usa
casi un ánimemente.
7.3.2.2 BLOGGER
Actualmente es propiedad de Google . No es un software CMS que requiera instalación , sino
que es un servicio de alojamiento de blogs on line oEs competidor, como servicio, de Wordpress
aportando facilidad de uso y, sobre todo, al ser parte de la red soci al de Goog le, facilidad de
creación.
Tie ne éxito en blogs de tipo personal. En todo caso es una buena opción para crea r un prime r
blog de forma sen cilla.
Es gratuit o para la creació n de blogs per sonales, pero se paga si el uso es comercial o institu-
cional. Es muy fácil de utilizar y con tien e todo lo qu e se podría pedir a este tipo de productos.
308 IM PLAN TACiÓN DE APLI CACION ES W EB
Tiene men os facilidad para la personalización así como un catá logo mucho menor de plan ti-
llas que WordPress.
Su punto fuerte es la con strucción de la apar iencia del sitio a partir de unas pot en tes plantillas
PHP, fácilme nte personalizables. Presume de un a gran potencia y facilidad de perso nalizació n del
resultado final. Es una clara alternativa a Word Press. Es un CMS gratuito en su versión básica,
pero de pago cuando aumentan sus prestaciones. Tiene opción de soporte por un pago mensual.
Ford, Disney o Nike figura n entre sus clientes.
Se le reconoce un a gran robustez y segur idad debid o en parte a su m od elo de dat os (EAV) ya
los requisitos que impone en su impl emen tación. Es mu y interesante, a nivel comercial, la capa-
cidad de integrarse con software de tipo ERP (siste mas de planificación de rec ursos).
Sus críticos apunta n que no es un CMS mu y rápid o (debido a la comp lejidad de su modelo
de datos). Su código fuent e también es eno rme mente críptico. Posee una versión gratuita
(Com m unity Edition ) y un a versión comercial (Enterprise Edition ) con todas las funcion alidades
de esta plataforma.
7.3.3.2 PRESTASH OP
Es el competid or más importante de Magento. Cada año aumenta su número de usuarios , por
lo qu e poco a poco se va acercando a los niveles de Magento. Es gratuito y de código abierto y está
construido en la típ ica tecnología PHP+MySQL, au nq ue en el lado del cliente utiliza intensiva-
menteAJAX.
UN IDAD 7. SISTEM AS D E GEST IÓ N DE CONTENIDOS 309
Su instalación e imp lantación es mu y sencilla y consume pocos recursos. Por sus característi-
cas, es un producto que tiene una comunidad mu y dinámica, por lo que encontrar documenta-
ción es mu y fácil.
Las wikis aportan rapidez y son una interesante herramienta edu cativa para fomentar el
aprendizaje colaborativo. Los CMS especializado s en este área apor tan facilidad de creaci ón de
contenidos, así como herramientas avan zadas par a la revisión de los con tenidos que requ iere
además de varias cate gorías de usuarios para conseg uir qu e algunos tengan más pod er, sobre
todo , para el caso de qu e se discuta la verac idad de los conten ido s.
7.3.4.1 M EDIAWIKI
Software de código abier to escrito en PHP y qu e permite utilizar MySQL, SQLite o PostgreSQL
como base de datos. Es el softwa re con el que se ha implem entado la wikipedia, por lo que el
aspecto es mu y famil iar par a todo s los usuarios y no requiere apre ndizaje de manejo por parte de
los usuarios qu e visita n sitios creados con esta herr am ien ta.
7.3.4.2 DO KU W IKI
Alterna tiva a la anterior qu e se sitúa como segun da opció n en el mercado para imp leme ntar
aplicaciones wiki . Está escr ita en PHP pero utili za fichero s plan os para almacenar datos; es dec ir,
no ut iliza un servidor de base de datos para guardar los contenidos. Esto le permite req uerir
ún icamente un servidor PHP para fun cionar, por lo qu e su implementación es extremadam ente
sencilla. Posee plantillas para exte nder su funcionami ento y una gestión de usuarios basada en
listas de control de acceso. Fuera de la pop ularidad del motor de la Wikipedia es la opción más
utilizada.
310 IMP LANTACiÓ N DE APLICACIONES WEB
7.3.4.3 TI KI WI KI O TI KI
Aunque se orien ta a las páginas wiki, realm en te aporta caracte rísticas suficientes para ser con-
siderado como un a opció n para crear sitios de to do tip o, por lo qu e se asienta en un a zona más
cercana a \VordPress, joomla! o Drupa!. En todo caso su número de usuarios va en claro descenso
y su elección como motor de wikis está claramente marcada si deseamos que nuestra página sea
algo más que un a página wiki.
Es ta mbié n una solución gratuita y abierta creada en PHP con base de datos MySQL.
Indudablem ente pu ed en ser un a buen a herr amienta educativa o utilizarse como sitio web
orientado a comentarios sobre productos o cultura: libros, música, cine , etc.
Muchos CMS de este tipo utili zan el lenguaje eti queta do BBCod e, para los come ntarios del
foro. Es un lenguaje espec ialme nte pensado para foros de debat e qu e se parece a HT ML, pero qu e
facilita la creación de formato en estas páginas. No es traducible po r un navegad or, por lo qu e es
el propio CMS el que le tr aduce al HTML corres po ndiente .
7.3.5.1 PHPBB
Software de código abierto escrito en PHP y que permite usar MySQL, Ora cle, PostgreSQL
o SQLite como base de dat os. Se mantiene desde hace a ños como líder dentro de los CMS para
foros de código abierto .
Posee todas las características deseadas: organización de foros y subforos, posibili dad de men-
sajes privados , búsqueda avanzada, organización avan zada de usu arios, agrupación por te mas de
los comentarios, etc.
7.3.5.4 D ISCUZ!
CMS creado en PHP para MySQ L, actualmente propiedad del gigante chino Tence nt , es el
CMS de gru pos de debate que más crece. Dispone de un a versión gratuita y ot ra de pago. No
tiene versión oficial en otro idioma que no sea el chino , pero eso no ha minado su creciente
popularidad.
7.3.6.1 M O O D LE
Es el CMS más conocido par a crear cursos en línea. Incorpora to dos los eleme ntos comenta-
dos para esta labor. Su instalación es sencilla y dispone, gracias a su popularidad, de numerosos
plugins y plantillas. Admite importar cuestionario s de todo tip o de form atos. Está creado tam-
bién en PHP con base de datos MySQ L. Es de código abierto y gratuito.
7.3.6.2 DO KE OS
Lejos todavía de la popularidad de Moodl e, es una clara opción ya qu e ofrece prácticam ente
las mismas características. Incorpora algunas funciones extra comparado con Moodle, pero tiene
m en os plugins y exte nsione s, debido a que su comu nidad de usuarios es más peque ña,
7.3.6.3 CA NVAS
Es un LMS creado en Ruby on Rail s con PostgreSQL como base de dato s, prop iedad de la
empresa ln str ucture. Es un software propietario, pero pod em os ut ilizarle gratuitamente para
crear cursos si som os un institució n educativa. El código ha sido recientemente liberado.
Sin emb argo, la solución conocida com o Canvas Network es un servicio en la nub e or ientado
a crear MOOCs, Massive Online Open Courses curs os masivos abiertos de aprendizaje, curs os
312 IMPLANTACiÓN DE APLICACIONES WEB
en la nube en los qu e pu eden apuntarse miles de usuario s. La crea ción de cursos en esta herr a-
m ien ta on line es gratuita para instituciones académicas. Es un softwa re pot ente, fácil de manejar
y administrar que, además , se utili za por parte de numerosas entidades.
7.3.6.4 BLACKBOARD
Es el software de pago más popular para crear cursos on lineo Es un LMS fácil de utilizar, con
una gran apar iencia creado en Java y que ut iliza como bases de dat os Oracle o SQL Server. Se jazta
de su robustez y gran capacidad de gest ión como sistema gestor de herr amien tas de apre ndizaje
com pleta.
7.3.6.5 O PE N EDX
Versión de código abierto del software que utili za la pop ular plataforma de cursos de tipo
MOOC EdX auspiciada por las Universidad de Harvard y el MIT. La idea es que sea utilizada por
in stitucione s académicas.
Ayudan a gestionar flujos de trabajo, grupos y usuarios, docume ntación colaborativa, contac -
tos y comunicación con sist emas ERP (siste mas de plani ficación de recursos).
7.3.7.1 ALFRESCO
Se tr ata de un software empresarial qu e tien e un versión Community, gra t uita y de código
abier to. Tiene capac idad para gest ionar todo el conteni do empresarial, así como organizar y publi -
car conte nidos en un sitio web. Es una solución completa que, en su versión pr opi et aria, ofrece
capaci dades completas para hacer toda la gestión empresarial. Está cread o en Java. Genesys, NHS
Education, la página de la PGA(asociación de golf), la cade na Fax o el grupo Ama deus son ejem-
plos de empresas que ut ilizan este CMS.
7.3.7.2 N UXEO
Es un software ya veterano que está crea do en Java y que hace especial hincapié en crear apli-
caciones internas para la gestión documental y la colaboración digita l entre trabajadores.
7.3.8.1 GALLERY
Es de código abierto, nu evam ente, se creo en PHP usando como siste ma de base de datos
a MySQL. Actualme nte el pro yecto se ha cerra do , aunque ha t ravés de foros pod em os seguir
teniendo soporte. Ha sido, indudablem ente, el CMS para galerías de fotos más popular.
Los tres CMS a nivel gene ral más populares son WordPres, Joomla! y Dr upal. Pero su nivel
de impl ementación es muy desigual. Según los datos de W3techs, el 4 0% de los sitios web de
Intern et utiliza algún CMS. Esto da una idea del éxito de este tipo de softwa re. Pero de los CMS
que se uti lizan en Intern et la cuota se reparte de esta forma:
7,1% loornla l. Es el segundo CMS más popular, pero a una gran dista ncia de WordPress
• 5,2% Drupal.
2,9% Magento . Primera solución come rcial, orienta da a las tiendas en línea
2,8% Blogger
1,6% Typ03
y así hasta un a infinidad de CMS todos ellos con cuotas del 0,5% o el 0,6%. La popularidad de
nu estro CMS es un factor clave, por que si mucha gente lo utiliza tendremos el sopo rte de la pro -
pia com unidad de usuarios, que se muestra día a día má s importante para tener una experiencia
grata con el producto.
7.4.2 PRECI O
Una de las grandes virtudes de los sistemas CMS es que hay muchas opciones, y de gran cali-
dad, totalmente gratuitas . Las em presas se suelen plantear implantar sistemas de pago cuando
el soporte es un factor crítico, porq ue la aplicació n construida a través del CMS es básica para
nu estro negocio.
En ese sentido las tie ndas on line no suelen arriesga r y por eso en ese sector los siste mas de
pago , como Magento, tienen más éxito. Otras acu den a software de reputada fama por la empresa
que lo gestiona, como es el caso ,por ejemplo de Adobe Expression Manager, que cuenta con el
aval y la exper iencia de la empresa Adobe , aunque el precio del producto sea más caro .
Realmente necesitamos una fase de aná lisis det allado porque las cosas no son tan sencillas.
Tenemos que decidir detalles sobre la audiencia del sitio, si va a tener que colocar contenidos de
todo tipo, si solo es texto , si necesita foros de debate, si algunos usuarios utilizarían chat, si el
dise ño es fundamental,etc . Estos detalles (y por supuesto muchos má s) nos irán empujando hacia
un CMS concreto.
UN IDA D 7. SISTEMAS DE GEST iÓN DE CONTEN IDOS 315
En los grandes siste mas CMS esto es perfectam ente posible. Drupal es especialme nte famo so
por este hecho, pero ta mbién muchos otros como WordPress y loornlal apo rta n posibilidades en
este sentido.
7.4.5 EXPORTACiÓN
Realmente al fina l la decis ión va depender de factores mu y personales . Además, al prin cipio no
te ndremos la exper iencia de conocer cuá les son los problema s de cada CMS. Pue de ocurrir que
con el tiempo deseem os cambiar de CMS.
La cues tión es qu e si ut ilizam os otro, ¿qué pasa con el conte nido que hem os hecho ? Es bueno
que conozcamos de antemano las posibilida des de exportar la información . Desgraciadamente
este es un factor poco cuidado por parte de los CMS, pero es crítico , ya que pue de anclamos al
mismo sistema indefinid am ente al no pode r perm itirnos perder el contenido.
No obstante hay que recordar que la mayoría de CMS usa MySQL como base de datos, estu-
diando sus tablas podremos obtener el con te nido. Es una labor difícil, pero posible.
Solo empresas de gran tamaño con un departamento de desarrollo mu y bien formado sería
capaz de acometer algo así. Aunque tampoco se trata de crear un software tan comp lejo como
Wor dPress o Dru pal, sino algo mucho más sencillo qu e se adapt e a una necesidad más completa.
Eso sí, to do el manten imi ento, arreglo de errores y responsabilidad corre de nu estr a par te.
316 IMP LANTACiÓN DE APLICACIO NES W EB
7. 6 RE SUMEN DE LA UNIDAD
Los CMS pert en ecen a una categ oría de software orientada a facilitar y orga nizar sitios
web qu e expone n gran cantidad de conte ni do.
Permiten definir el front-end (visión qu e los usuarios tienen del sitio web) y el back-end
(estructura del sitio: usuarios, menús, apariencia, etc.)
• Las tecnologías funda mentales que utili zan los CMS son Apache+PHP+MYSQ L. Pero
ha y todo tipo de tecnologías que usan .
• Además, dispon emos de la opción de crea r un CMS propio para adaptarlo a nuestr as
necesidades.
U N IDAD 7. SIST EM AS DE GESTiÓN DE CO NT EN IDOS 317
~ ~ ~ ~~ ~~~~~ ~
INSTALACiÓN DE SISTEMAS
DE GESTiÓN DE CONTENIDOS
OBJETIVOS
- Reco nocer los elementos fundamentale s de un CMS utilizan do a Wo rd Press y Drupa l
co mo eje mplos
Reco noce r los requisitos de instalació n de un CMS to ma ndo co mo ejem plo a Wor d Press y
Dru pa l
Dist inguir entre las diferentes maneras de instalar un C MS
- Crear la base de datos en la que se almacenan los datos del CMS y el usuario con el que se
en lazará con la base de datos
Instalar los CMS Drupal y WordPress asimilando las distintas formas y pasos necesarios
Establecer pau tas que mejoren la seguridad de la instalación
Identificar la forma de acceso y utilidad de los paneles de administración
CONTENIDOS
8.1 CARACTERíSTICAS DEL CMS 8.5.2 ELEMENTOS FUNDAMENTALES DE
W O RD PRESS DRUP AL
8.1.1 INTRODU CCi ÓN A WO RDPRESS 8.5.3 ESTRUCTURA FUNC IONAL DE
8.1.2 DOCUMENTACi ÓN DRUP AL
8.1.3 TÉRMINO S RELAC ION ADO S CON 8.5.4 DOCUMENTACiÓN DE DRUPAL
WORDPR ESS 8.6 INSTA LACi Ó N DE DRUPAL
8.2 IN STA LACi Ó N DE WORDPRESS 8.6.1 REQUISITOS PREVIOS
8. 2.1 CREACiÓN DE UN SIT IO ON LlNE 8.6.2 PREPARACiÓN DEL D IRECTORIO DE
8.2.2 IN STA LACIÓ N M ANU AL DE DRUPAL
W ORDPR ESS 8.6.3 PREPARACiÓN DEL USU ARIO Y BASE
8.2.3 DESINSTAL AR W ORDPRE SS DE DATOS DE DRUPAL
8.6.4 PREPARACiÓN DEL ARCHIVO DE
8.3 CONF IGURACiÓN BÁSICA DE
CONF IGURAC iÓN
W O RD PRESS 8.6.5 PREPARAR LA INSTALACiÓN EN OTRO
8.3.1 EL PANEL DE ADMI N IST RACi ÓN DE IDIOMA
WORD PRESS 8.6 .6 EJECUTA R LA IN STAL ACiÓN
8.3.2 M ODI FICA R LOS AJU STES GENE RALES 8.6.7 A CC IO N ES TRAS LA INSTALAC iÓN
DE WORD PRES S
8.3.3 AJUSTE DE PERMA LlNKS 8.7 CO NF IGUR AC iÓN BÁSICA EN DRUPAL
8.3.4 ELECCiÓ N DE TE M AS 8.7.1 PA NEL DE AD M INISTRACiÓN
8.7.2 INSTALAR TE M AS
8.4 EXTENDER LAS CAPACIDADES DE 8.7.3 PERMITIR URL LIMP IA S
WORDPRESS . PLUGINS 8.7.4 GESTiÓN DE M Ó D U LO S EN DRUPA L
8.4 .1 ¿Q U É SON LO S PLUG IN S?
8.4 .2 EXA MI NA R PLUGI NS IN STAL AD OS
8.8 PRÁCTICAS RESUELTAS
8.4. 3 IN STALACi ÓN DE PLUGIN S 8.9 PRÁCT ICAS PROPUESTAS
8.5 CARACTERíSTICAS DEL CMS DRUPAL 8.10 RESUMEN DEL CAPíTULO
8.5 .1 INTRODU CCi ÓN A DRUP AL 8.11 TEST DE REPASO
320 IMPLANTACiÓN DE APLICACIONES W EB
WordPress ha dejado , ad emás, de ser un CMS orientado solo a blogs y se utiliza par a crear todo
tipo de webs. Su comunida d de usuario s y desarrolladores, mu y en tusiasta y dinámica, mejora
casi día a día sus prestaciones y está con siguiendo qu e WordPress se utili ce cada vez más com o
Frame wor k de desarrollo de aplicaciones web, compitiendo dir ectam en te con Drupal, qu e siem -
pre ha sido con siderado el mejor CMS en ese cam po.
A este respecto , WordPress aporta un a API (interfaz de desarrollo de aplicaciones) qu e se pu ede
utili zar para person alizar absolutamente el uso de Wordpress y crear sitios aprovecha n do las ven -
tajas de WordPress y la versatilidad de trabajar directam en te con nu estro código.
Seguram ente los puntos fuertes de WordPress qu e le permi ten seguir siendo el CMS más
popular son:
• Facilidad de instalación y de gestión. WordPress se jacta de qu e su instalación no lleva
más de 5 minutos. El panel de gestión también es consi derado muy intuitivo y práctico.
• Diversidad de opciones de hosting. WordPre ss está pre sente como opción pre insta-
lada en prácticamente to dos los prove edores de hospedaje en Intern et. Además la pro -
pia página oficial de WordPress , nos permite dir ectamente gestiona r nuest ra web en su
n ube en lugar de in stalarlo en nuestro sitio personal.
• Gran número de plugins o exte ns iones. Existen miles de te mas, componentes, m ódu-
los, etc. Lo cual no s facilita enorme me n te el trabajo de gestión y personalización de
nuestro sitio web.
UNIDAD 8. IN STALACiÓN DE SISTEM AS DE GESTiÓN DE CONTENIDO S 321
• Esté tica. Muc hos creadores de contenido acaba n decidiendo entre cada producto por la
apariencia estética. Esto no es una decisión poco profesion al, la esté tica es fundamental
y es clave en el éxito de la mayoría de sitios web en Int ernet. WordP ress, casi al instan te,
consigue crear sitios de gran apariencia estética.
8.1. 2 DO CUMENTACiÓN
Como se ha comentado antes, en la dirección htt ps:ljcod ex.word press.or g/ WordPress
dispon e de docume ntación extensa sobre todos los aspectos de trabajo con este CMS. En
https :ljcodex.wordpress.org/es :Main Page se dispone de la documentación tr aducida al espa ñol.
Cada post tiene almace na da su fecha exacta de publi cación (fundamental para la orde na -
ción de [os post). Además , posee un título y un conteni do qu e, ade más del texto, puede
in corporar todo tipo de eleme ntos multimedia: enlaces, imágen es, vídeo , aud io, etc.
• Página (page). En la nom enclatura de Wor dPress es fundame ntal diferenciar una página
de un post . Una página no tien e asigna da un a fecha de publicación , no se orde na por esa
fecha . Dich o de forma más llan a: no es una entrada de un blog, sino qu e se trata de un
contenido estático dentro del sitio web. Los post se publican cons ta nte mente, las pági-
nas se crean a un ritmo muchísimo me nor.
• Página de inicio (Home page). Se trata de la página que se muestra cuando el usuario
accede a la raíz del sitio web. Está presente en cua lquier sitio web, no solo en los ges-
tionados por Wor dPress. Es la página que hay que cuidar más , ya que da esa primera y
fundame ntal impresión, sobre nuest ro sitio web .
Por defecto WordPress la configura al estilo de los blogs, mos trando inicialmente los
post más mo der nos . Naturalmente po demos modificar comp letamente su forma y
fun ciona lidad.
• Com entari os (Com ments). Son los text os qu e los usuarios que leen el blog pueden incor-
porar al mism o para publi car sus pro pias im presion es sobre cada entrada. En definitiva,
otorgan interactividad y el uso social de la web.
322 IMPLANTACiÓN D E A PLICACIO N ES WEB
Categorías. Temas por los que pod emos organ izar los conten idos de la web.
• Etique tas (Tags). Palabras claves qu e se asigna n a los post y mediante las cuales, permi-
ten a los lectores encontrar post relacionados con esas palabr as.
• Menús. Relacionado con los dos eleme ntos ante riores, se trata de un elemento organ i-
zador del contenido de una web. WordPress les ha incorporado recientem ente (desde la
versión 3)ya qu e permiten un a mejor orga nización del sitio web, haciendo que WordPress
se convierta en un CMS con posibilidad de gestión de sitios web qu e no estén orientados
a la pu blicación de blogs.
• Metadatos (meta data) . Se trata de los datos asociados a cada publicación, fundamental-
mente a cada post , qu e proporcionan info rm ación sobre la misma y qu e puede ser útil
para gen erar taxon omí as u otras labores de cons ulta . El autor, la fecha de publicación ,
el tipo de codificación del texto , et c. son met adatos habituales. Algunos de esos met a-
datos pro vocan qu e el código fuen te HTML incorpore eleme ntos de tipo meta, para dar
cabida a esa información.
• Temas (Them es). Se trata de form ato s de maquet ación de la web que se pueden uti-
lizar para dar una apariencia concret a a nu estra web. Hay miles, mu chos disponibles
en la dir ección https://wordpress.org/th emes/ bajo el aval del propio WordPress. Hay
qu e ten er en cuenta que me dian te tem as para WordPress, se pu eden incorporar códigos
da ñinos. Hay también numerosos tem as premium , de pago, construidos por empresas
privada s qu e aportan un resultado muy profesional y vistoso.
• Plugins. Extensiones que se a ñaden a WordPress para mejorar sus pre staciones.
sión m ejora la gestión de usuario s, permitiendo un a mayor diferen ciación de las tareas
de cada usuario.
Roles . Perm iten agluti nar capaci dades de modo que al asignar un determinado rol a un
usuario, éste ten drá disponibles todas las capaci dad es de dicho rol.
El proceso para crear nuestro sitio web on line es muy sencillo. Bastará con darse de alta como
usuarios de Wordpress .co m, elegir la dirección de n uestro sitio web y elegir también la apariencia.
Otra opc ión es utili zar los asistentes on line de los que disponen mucho s proveedores de hos-
ting. En realidad es hacer una ins talación ma nua l sobre el servidor en el que tenemos alojado
nu est ro sitio web, pero me diante un asiste nte qu e automa tiza la instalación .
Una mu y mala práctica es utilizar como usu ario pa ra Wor dPress el usuario root de la base
de datos MySQ L. Este usuario podría incluso elimin ar la base de dat os. Por otro lad o, tampoco
convien e dar como nombr e de la base de datos ni para el usuario, el típico n ombre wordpress.
Cua lquier at aque sobre nuestra base de dat os, in te n taría sonsacar la contraseña de ese usuario.
Por ello debem os procurar qu e los nombres de la base de datos y del usuario no sean típicos.
Como tareas pr evias en MySQL, comunican do con ella, bien desde un entorno visua l (com o
MySQL Workbench o PH PMyAdm in) o, bien desde la lín ea de com andos, debemos rea lizar las
siguientes :
[1] Crear una base de datos par a WordPress . Por lo dich o anteriormente, debe mos evitar n om -
bres como por ejemplo wordpress o blog.
[2] Crear un nuevo usuario con un nombre también críptico. Si adem ás sabemos qu e el servi-
dor de bases de datos y el servidor web está n en la mi sm a máquina, hacer qu e ese usuario se
asocie a localhost y de ese modo solo cuan do acc edamos desde el servidor local, podremos
acceder a la base de dato s.
Si el servidor de base de dat os y el servidor web son máqui nas disti ntas, en to nce s, se debe
crea r un usu ario asociado al hos t cuya IP coincida con la del servidor web. Solo desd e ese
servidor se podrá acceder a la base de datos.
[3] Asignar al usuario anterio r una contrase ña lo más com pleja posible.
[4] Dar todos los privilegios al usu ario ante rior sobre la base de dat os creada en el punto 1
Ejemp lo de pr eparación de base de dat os para Wor dPress desde la cons ola del siste ma.
Supone mos qu e h emos accedido a MySQ L con un usu ario admini strat ivo:
Median te est e código se crea en MySQ L una nueva ba se de datos llam ada dbA3D, y un usuari o
llama do usradmin/ql) con permisos totales sobre esa base de datos (pero que n o podrá accede r a
ninguna otra base de datos).
UNIDAD 8. IN STALA CiÓN DE SISTEM AS DE GESTiÓN DE CO NT EN IDOS 325
Si deseamos realizar la instalación en espa ñol, la página oficial es https://es.word press.or gl.
Ha y qu e tener en cuenta qu e la tradu cción al espa ñol de Wor dPr ess no siempre está al día y que
puede contener algun as erratas.
Si esta mos en un sistema que trabaj a en modo consola de Linux, la descarga de la última ver-
sión (en inglés) podría hacerse con el comando:
r--- - . ... ~-_._- - ~. -~_.~--------- -------~.-_._---_.- _. - -_ .....---- "
!wget http://wordpress.org/latest.tar.gz . :
Tras la descarga , el archivo descargado se debe descomprimir. El resultado de esa operación es
un directorio que se llamará wordpress.
Ese dir ectorio wordpress se deb e colocar en el servidor web . La ubicación exacta dependerá de
qué URL queremo s asignar al servicio WordPress. Podemos hac er que el directorio wordpress sea
la raí z de nuestro sitio web, en cuyo caso todo el sitio web será de tipo WordPress, pero pod emos
colocarlo a otra ubicación para formar una URL tipo http://www.misiti o.com/wordpress.
Para ub icar el directorio wordpress, po demos subirlo a nuestro servidor mediante FTP o rea -
lizar la copia desde la consola, si tenemos acceso a ella; en defin itiva, dependerá de la forma de
acceder a nu estro servidor que tengamos a nuestra disposición.
Una vez más , por razones de seguridad, no s conviene cambiar el nombre del directorio de
WordPress para que sea menos vulnerable.
• wp-admin. Contiene los archivos que permiten a WordPress rea lizar las principales
labores administrativas, como son:
Conexión a la base de datos
• Funciones del panel de adm inistración de WordPress
Administración de páginas y post
326 IMPLANTACiÓN DE APLICACIONES WEB
• Nombre y contrase ña de un usuario con permi sos de lectura y escritura sobre esa base
de datos
a Cod ificación del texto de las tab las de WordPress (10 aconsejable es UTF-8)
• Prefijo qu e se le pondrá a todas las tablas de WordPress (suele ser wp_)
Todos esos dat os se pu eden cambiar ya que, el archivo de con figur ación ,es un archivo PHP
que define un a serie de consta ntes (a través del coma ndo de fine ) mediante las cuales se modifi can
todo s esos parám etros. Ejemplo de archivo de configuración:
- - .
define('DB_NAME' 'wordpress');
I
define('DB_USER' 'user_wordpress');
I
Ot ra opción, en lugar de modificar a man o este archivo, es directame nte, tras la descompre-
sión y copia del dir ect orio con el código WordP ress en el servi dor web, acudir a la dir ección de
WordP ress en el servidor web. Ento nces se lan zará un asiste nte que no s permitir á determinar
estos parám etros a través de un formulario.
Hay un a razón para modificar a mano el archivo y es modificar la configurac ión del cifrado
de claves de los usuarios de WordPress. Se trata de un apartado del archivo referido a las claves
de aute ntificación y códi gos salt que, en el archivo inicial de confi guración, tendrá este código:
.. - --
!define ( ,AUTH_KEY' I 'put your unique phrase here' );
define('SECURE_AUTH_KEY' I 'put your unique phrase here' );
define('LOGGED_IN_KEY' I 'put your unique phrase here') ;
define('NONCE_KEY' I 'put your unique phrase here') ;
i
idefine ( 'AUTH_SALT' I 'put your unique phrase here' );
jdefine ( 'SECURE_AUTH_SALT' 'put your unique phrase here') ;
Idefine ( ' LOGGED_ IN_SALT' I 'put your unique phrase here') ;
Idefine ( 'NONCE_SALT' I 'put your unique phrase here') ;
Mediante estas líneas podemos indicar claves aleatorias de cifrado y códigos salt (véase el
apartado 4.5 "Cifrado", en la página 206, para más información sobre el cifrado en PH P), a fin
de increme ntar la seguri dad de WordPress . Lo más sencillo es generar claves y cód igos aleatorios
a través de la dirección: https:/Iapi.wordpress.or g/secret-k ev/u /salt / la cual nos pro porciona las
líneas que debemos sus tituir en el archivo wp-c on fig.php a fin de que el cifrad o de claves en
WordPress sea más segur o.
328 IMPLANTACiÓN DE APLICAC IONES WEB
Hay otras opciones más avanzadas qu e podemos indicar en el arc hivo de configuración, algu-
nas de ellas se rellenan automáticamente al modificar la con figuración desde la propia página
Wor dPress.
Tambié n hay qu e indicar qu e pod emos no rellena r a mano el arc hivo de con figuración. Si
accedemos, m ediante su URL, a la raíz de WordPress de sde el navegador (por ejem plo, con
http: //misitio .com /wo rdpre ss) na da más haber copia el directorio de WordPress en nuestro ser -
vidor, WordPress detecta que no hay archivo de configuración y un asistente nos ayudará a relle-
na rlo pidiéndo nos los dat os necesarios (base de dat os, usu ario , etc .) des de un for mulario. No
es lo más recomendabl e porque dejaríam os sin rellen ar las opciones sobre el cifrado de claves
comentadas anteriormen te, con lo que dejam os me nos pro tegida la instalación.
Si los pasos an te riores se han realizad o correcta me nte, al invocar la dir ección URL de
WordPress en nuestro servidor, por ejemplo: http://www.mi ser vidoL com /wo rdpress, apa recerá
el llamad o Asistente en 5 minutos de WordPress. Dich o asistente sim pleme n te reque rirá esta infor--
mac ión, la cual se almacenará en la base de dat os MySQL que he mos asociado con WordPress:
11 Con traseña. Para el acces o del usuar io an terior . Evide nte me n te com o m edida de segu-
ridad , se deb e indicar una contrase ña compleja.
• Privacidad. Ma rcada, hace que nuestro sitio quede accesible a los bu scadores, como
Google por ejem plo. Desmarcada, el sitio qu eda fuera de to da pos ibilidad de búsqueda
del m ism o a través de Int ernet.
Simpleme nte con esta información, el asiste nte in dicar á que WordPress ya está in st alado .
wp_commentsmeta
me t a id b¡ ¡nt (2o)
comme nt id bigint íao ) ~
dom a in varch ar 200 ) meta kev var c har 2r;
path varch arü oo ) m et a v alu el lo ng te xt wp xommen ts
title Io n text com m ent id bigin t ízo)
varch art é o) comm ent.post.Jd blg mt (2Q)
use rjem ail
registe re
ac t ivate d
active
ac t iva ti on_key
varcha rüoo)
aatet ime
catenmc
tln )'int{l)
varch artgo)
comm ent author
co mm ent aut hor em ail
com m ent_ autho r_u rl
commen cauthor_IP
t mvte xt
varch arüoo)
varchartzoo )
va rc ha rü c o)
Gr+ id
post author
pos t dat e
wp_posts
b¡ mt íao)
bigintiao)
date t ime
H---
I~
va reha r{25S) use r_ id bigint (20 )
post name varch a rjao)
vareh ar(255J t ex t
to ping
in _ esc ript ion vare a r(255)
pinged text
lin k_vi s ible varchartao) wp _users oost modified datet ime
.u, id bieint 20) 4n- post modified gmt da teti me
int ür } user_logi n varch ar tóo ) post co ntent filtered to na t cxt
da t etíme user ass varchar 64) bi int (20) ~
varch ar (255)
wp _usermeta post parent
use r nicename va rcharfyo) gui d va rc ha r(2S5)
me dru mtext umeta id bi int 20 varch arú oo )
user e mai l menu o rder tntüi)
varch ar(255) user id bigint íao) f-'i>O- user ur va re arüoo) po st t ype var chan ao )
meta kev var ch ar 2C;C;
user _r egiste red dat et ime po st mime tvoe varcha rü oo )
meta val u é lonetext
use r ac t iva t ion _key varcha r(6o ) eomment count bigint (20)
wp_options use r stat us int ür )
d is la na me varch ara tago)
o pti on id bigint (20)
o ptio n na me varc han e a )
ootion va lue lonetext
autoload varcha rtao)
wp_terms wp _te nn_taxonomy
~
wp j.ermsj-elationship
JL
t erm id b¡ int (20) te rm taxono my_ id biai nt 20
name varcharfzo o) te rm _id bigint lzo) o blect.jd Iorgmt20
slue va rc ha r 200 ta xonomv varchar 2 te rm_taxo no my id ] brgmttzo)
term g roup b¡ int üo) description longt ext term_o rder l 'nrl 11)
term order ;nt (40) pa rent bigint (20)
eount i int tao
11 wp_options. Contiene la información general del sitio web , la cual se indicó durante el
proceso de instalació n.
wp_postmeta. Contiene los metadatos que asignamos a cada post. Estos son dat os extra
de nuestra cosecha que deseam os almace nar sobre cada post a fin de do ta rles de más
semántica.
wp_terms. List a de to dos los térmi nos taxon óm icos crea dos en WordPress.
wp_terms_relationships. Tabla encargada de asociar cada página o post de l sit io con los
t érminos taxonómic os qu e deseem os.
[2] Elim in ar la base de datos y el usuario creados para Wo rd Press en MySQ L. Por ejem plo,
mediante los coman do s:
I _. . . .._- -_. - _ . . - _. ... .
Irnysql > DROP DATABASE wordpress; ,
' my s q l s DROP USER user_wordpress@localhost; ..
Estas acc ion es elimin an WordPress comp letame nt e, in cluye n do to do s los post, come n tarios,
con figur acion es, usuarios, etc. Si no deseamos pe rde r esos datos, debem os realizar copia de ellos.
Si solo realizam os el pr im er paso, al volver a in stalar WordPres s e in dicar el m ism o usua rio y
base de dat os, dispondre mo s de to da la in formación que teníamos previamente.
ACTIVI DA D 8.2:
• In stala Wo rd Pre ss en u n servidor web local realizando los pasos de la Práctica 8.2.
• Tras realizar esa prácti ca, de sins ta la Wo rd Press elim inan do su direct ori o dent ro de la car-
pe ta de do cumentos de Apa che y ad em ás elim ina la base de dat os y el u suario creados en
MySQL para WordPress.
• Realiza la Práct ica 8.3, qu e realiza una ins ta lación m anual más segura.
UNIDAD 8. IN STALACiÓN D E SISTEMAS DE GESTiÓN DE CO NT EN IDOS 331
Escrit o r io
-:J :'
Actividad
'M5&N
Desde el escritorio se pue den rea lizar to das las tareas administrativas, el menú izqu ierdo con -
tiene todos los elementos de gestión del entorno WordPress.
• Modificar el título del sitio (Site title), el cua l in icialme nte se indi có duran te la insta la-
ción de WordPress.
• Indicar una descripción corta del sitio (Tagline). Tanto ese dato como el anterior son
im portan tes de car a a que el texto realmente descr iba correctamente el sitio y, a través
de dicho texto , el sitio sea fácilme nte localizado por los buscadores.
• URL de WordPress (WordPress address). Dir ección que po see el servicio Wordl'ress,
• Dirección del sit io (Site Address). Normalm ente tie ne el mismo valor que la URL ante -
rior, pero se puede in dicar otra dir ecció n, la cua l se conve rtirá en la página de inicio de
nuestro sitio.
• Dirección de correo electrónico (email address). A ella irán todas las notificaciones de
WordPress.
• Idioma.
Además, hay un archivo .htaccess en la raíz de Word Press que contiene los ajustes necesarios
par a que func ionen los permalinks (además de otros ajustes). Por lo tanto , en el archivo de con-
figuración de nu estro servidor Apache, debemos asegura r qu e se ha permitido el uso de arc hivos
.htaccess a través de la directiva AllowOverride (véase 2-4-5.2 "A rchivos .htaccess", en la página
59) a la que dare mos , por ejemplo, el valor All.
Op cional
~ . t;F'. f t: r~" :>li l ..,t r:;:l ~: ,·"o. · t::r",:¡,rJ: :H"::'*.a' :¡:H : = ' ~ ·i: u :.• ! ee t., ¡" ,::".i:";: {" ' i.~ :' } c-: i t"C;: ":.I.:¡-. Ct;o ~ .. u ::: "'": " :'lF ' -" ~~:,¡ ,¡' o! .:'~ 'l :1 ~ " ;2 :!:
dtO: tl~: ;' : . t l '1 i ~G> { ~,,,~ ~ ~ ~ ". " "" a l "" . '!;!H ....:;.,..-..; l.ru .¡n·,.u, :-io . ~ ;:t.¡H t~:,~ t 'l c'e -c c se I.'H-i,-, los aJ~ ¡:!' pe.... 6,,'~1~
IMjP# ,l. .¡
Figura 8.4: Zona de ajustes de Permalinks o en laces perm an entes del pane l de ajustes de WordPress
La for ma de estos en laces, por defecto, es de tipo : http ://mis itiowordpress.com /p= 2014 de
mod o qu e se añade a la ruta a la raíz de nu estro Wor dP ress una cadena de consulta con un a
variab le llam ada p a la que se le asigna un número que es el que per mite acceder a un elemento
concreto de nues tro WordPress.
Podemos util izar otra estructura si desde la zona de administración vamos a Ajustes (Setti ngs),
Enlaces permanentes (Permalinks ).
Como nos recuerda el propio panel, es más fácil para los usuarios que los enlac es a las entra-
das de WordPress, utilicen una estructura más entendible para acceder a un determinado post.
Podemos incluso utilizar una estructura personalizada a través de variab les predefinidas. Las cua-
les son:
%year%. Año.
• %postname%. Versión normalizada del título del post. Si el títu lo es m i primer post, la
versión postname será mi -primer-post.
• Aume nta n el posicionamie nto del sitio web en los bu scad ores gracias a aportar URLs
más semánticas.
Estructuración del sitio web qu e facilita su navegabilidad. Además de que esa estruc tura
de enlaces pueda ser fácilmente replic able a otros motores CMS como [oornla o Dru pal
que tambi én tien en capacidad de utilizar permalinks.
Inicialmente aparecen tr es tema s. Haciendo clic en Añadir un tema nuevo (o Add Theme)
podrem os descargar de la librería oficial de WordPress en Internet uno de sus mu chos te mas en
línea .
Antes de elegir un tem a, podemos observar su vista pr evia para ten er un a noción más com-
pleta de como será el resulta do , antes de hacer clic en Instalar y qu e el tema aparezca ins talado
en nuestro siti o.
Sobre los temas ins talados pod emos ha cer clic en Activar y entonces ese tema dictará la apa-
riencia de nuestro sitio web. Podemos cambiar de tem a las veces que deseem os. Así como pode -
mo s tener descargados todos los tem as qu e deseem os, aunque solo uno pu ede ser el act ivo en
cada momento.
UN IDAD 8. IN STALAC iÓN D E SISTEM AS D E GESTiÓ N D E CO NTE N ID OS 33 5
- - - - -- - - - -- _. _ -- --
•
. --
"
Activo:Twenty ñfleen ~ Tw ent y Fourtée n Twent y Thirt een
+
Figura 8.5: Pan el de temas en Word Press
Como el caso de los temas, los plugin s los crea y distribuye la comunidad de desarrolladores
de WordPress. La URL https ://wordpress.org /p lugins/ proporciona numerosos plu gins que, ade -
más , pod emo s con siderar fiables ya qu e est án bajo el para gua s de WordPress. Hay muchos más
plugins (algunos de pago) en otras dir ecciones de Internet .
• Borrar. Primero hay qu e desacti var el plugin . Una vez borrado si deseamos utilizarlo de
nuevo, tendremos que volver a in stalarlo.
336 IM PLANTACi ÓN DE APLICACIO NES WE B
Editar. Mediante un a venta na podremos ver el código fuente del plugin y modificarlo, si
no s vemos capaces de ello. Un cambio típ ico que se suele hacer es camb iar los mensajes
par a que aparezcan en nuestro idiom a.
~ d Ejemplode>ibo
" Comentarios
}> Aparien da
U :; a d ~ O O ~ rrt c.ne r de ce-se -vas. ;. ~ 'SÓ "'; es 0':'$ e ¿m.;:"\t .. la T E;:)- .-:" ,"1- , oe cr oteger tu btog de l spam en comenraríos y
~ treckbecks ·,1a- ueo tu s .t.o cr c te e.cc ce-u -e : ::~T ~. : 1..: 50 m em-es e ...e -n e s C.;r" cc-r .erce-. 1) ~ ¿¡ z c« en o? ",!'I' 0(': ':"G ' ~a ( :::H...;:
e-ea a ; ' : ':: i.. e- ca es ~;~ .~ o..se- ooc n; ~ f:- g ~ : ' ¿; : " os-a . e-e-e- J'- '.'; - ~." ".:.':' : ce ». .:;n.",. ': : ' v e e a ','; ~'1 " ce C C ~fl g" ' ';:: i : '
Plug ins instalad os d IO.:..
.kI;'r.;1: )' P: :"l'; :L ee. e c.; .:.~
Añac:ttr nuevo
Ed itor
Helio Dolly r a e '"1 : es se-o un e Lg:'1_:; -nc ot z.. a esce re- ze ...e -n.s.e smo oe 10 ';::'; i.n e g.; • ere c on resurrvc es "''' las oos oe'ebr es n as ' err-e-ses
.:a Usuarios :¡~~ .. n-, 3' :' ) ': 3 ' ca-naca s oor . c vc t. ~ :T~t ~0 ng - .€: k , ) 0 ::" e va-ido t: scnves ,..e -es t-ese s ",1szs r Cti: - er c. : ' :; ,'" ~ '"I : 3 ce-t e svcertcr C €~€ : h 3 oe
cac e ~ á ~ na ce t e, oe.u e. a ce ac.""",.., n-ec-eo
, Herram ienta s
lB Ajustes
J"' ~ 3 el C~>:J€ ' ::: € v..c rocrc ss.cc -r-a tu e-e-o.e coc e ce vvcrcc ress.o-g jetoa c- t :? cer .rr.te ronerta- n, e cg a l;n,;:: ::.¡.,r.:<, r.e
o Cet ra r menú
j etpa ck por wc ror-ess.co-n
.:., c: a: ~ _j :tQ c s c-r
v ar w o-oc ress.corr. p e-a l lt ii zsr ooc e ros ce-ac-er cas CI..E'
. a s a s st 50; 0 ctsr -c...
-io --narm e-ne este - .ces pa r a '); vscar.c s ce
[2] Elegir el plugin desde los menús donde aparecen agrupados y hac er elie en Ins talar plugin.
[3] El plugin esta rá disponible en la lista de plugins disponibles. Pod emos activarlo cuando
qu eramos.
re s ~ '_~ ns e et ence- l arr p: aola s :....: c";:,1caces de .·. orc :· r es~ rvec cs - c-eu - "l,tO lT' ): ' :~T eili.~ e :.:¡ "~ ce' :::....:::~Ll.: ~¡;. :' ::'.'l.:...r.t '''2':~ :' su!:; ~:"' '1 e:..gn (...
f-; · IT''': =Z ~ ¡,i. ' ~ . ~ < c' ,, ~ .
je tpack by
wordpress.com
.. Akisrnet
[1] Descargar el plugin de la página de WordPress o de ot ras páginas, con cuidado sobre la con-
fiabilidad de las mismas. La descarg a resulta en un archivo ZIP.
[2] Ir al apartado Plugins del panel de administración de WordPress y elegir Añadir nuevo (Add
ne w).
[3] Hacer clic en el botón Subir plugin (Upload plugin) que se encuentra en la parte su perior.
[4] Pulsar el botón de selección de archivo s y seleccionar el archivo ZIP previam ente descargado.
[5] Pulsar Inst alar ahora.
Como ya se comentó en la unidad anterior, Drupal es un CMS de propósito gen eral. Sirve par a
crear todo tipo de sitios web: blogs, foro s de debate, sitios de e-commerce, sitios de contenido
estáticos, etc. Es verdad que, cada vez más, los principales CMS (y entre ellos WordPress) ya no
están orientados a un tipo concreto de sitio ya que la mayoría perm ite su absoluta personaliza-
ción , pero indudablemente la vocación de Drupal parte de esa idea , lo que le hace más complejo
de gestionar pero con muchas más posibilidades.
Drupal se basa en un motor conoci do como Drupal Core que es la base de la potencia y pres-
taciones del CMS básico. Drupal Core contiene los elementos principales de Drupal, pero es
posible extender mucho más este núcleo.
Temas. Con el mismo sentido que tenían en WordPress. Drupal también posee numero-
sos temas para asignar a la estética del sitio, los cuales podemos utilizar y per sonalizar.
338 IM PLANTACiÓN D E APLICACION ES W EB
• Conte ni do. Empieza a ser un concepto indi stinguible del anterior. Todo lo que rellen a
el fron t-end de la página. El mat iz que se habla de nodos para entender el funcion a-
miento intern o de Dru pal; sin embargo, se habla de contenido para referirse al aspecto
que pr esenta el nodo realmente en la página. Aunque en las últ imas versiones de Drupal
se habla indi stintam ente de nod o y de conte nido .
• Usuarios, roles y permisos. En este caso Drupal ofrece más posibilidades que Wordpress .
Tien e más capacidad para la administración de usuarios y el esta blecimie nto de sus
capacidades y permisos.
Men ús . Enlaces organi zado s para acceder a las diferen tes partes de sitio. Es decir, lo qu e
comúnmente pensamo s al util izar este término en un contexto inform ático.
• Regiones. Secciones de una página creada en Drupal. Cabe ceras, barras laterales, áreas
de conte nido, et c, son diferentes regione s.
• Bloques. Elementos en los que pod emos dividir cada regi ón de una página. Pueden ser
menús de navegación, barras de información,etc. La diferencia es que la región hace
referen cia a una zona o área y el bloque hace referen cia a un t rozo de código que mu est ra
algún tipo de info rm ación den tro de ese área.
Vistas . Actualmente form an parte del núcl eo de Drupal, pero antes de la versión 7 reque-
rían ser instalados apart e. Se trata de un componente que permite crear listas de conte-
nido (galería s de imágenes, fuentes RSS, etc). No todos los sitios tien en vistas.
• Rutas. Las URL de reco rrido de las páginas del sitio. Especialmen te la part e que va más
allá de la URL raíz del sitio. En Drupallas rutas ta mbién pue den ser amigables.
• En la base hay una primera capa de datos. Se tr ata de la colección de nodo s del sitio, es
decir, el conjunto del contenido. Es la capa que se relaciona directam ente con la base de
datos.
• La segunda capa es la de los módulos. A través de ellos, los nodos se person alizan crean do
tipo s de nodos qu e se mu estran de diferen te form a.
• La terc era capa es la qu e establece la navegación del sitio a t ravés de bloqu es y menús.
Los menús generan las URLs para llegar a todos los contenidos.
U NIDAD 8. INSTALACIÓN DE SISTEMAS DE GESTiÓN DE CONTEN IDOS 339
• La capa cua rta es la de los permisos de usuario. A tr avés de ella, qu e actúa sobre la ante-
rior se indica lo que un usuario es capaz de realizar o ver.
• La última capa es la qu e establece la estética final del sitio a través de plantillas (tem plates)
o temas.
~--~OD
D~
cE)
") TEM PLATE
Además se requiere ten er activo el módulo de PHP con al menos la versión 5.2.5. Algunos
m ódulos de Drupal pu eden fallar con las versiones más modernas de PHP.
340 IMPLANTACIÓN DE APLI CACION ES W EB
Directorio includes . Contiene el código de las fun ciones y clases PHP qu e forman el
núcleo de la APl de Dru pal.
• Directorio mise. Archivos aux iliares de to do tipo (JavaScript, CSS, imágenes, controles
jQu ery, etc).
• Directorio modules. Módulos del núcleo de Drupal. Los módulos exte rnos no se alma-
cenan ahí.
UN IDA D 8. IN STALACi Ó N DE SISTEMAS DE GESTiÓN DE CONTEN IDOS 34 1
Directorio scripts. Archivos con código Shell Script para facilitar la realización de tareas
a los administrad ores de Linu x.
Directorio sites. Es el directorio fundam ental de trabajo. Todo s los archivos a ñadidos
por los usuarios (con privilegios) de Drupal, se colocan en este directorio. Dentro de este
dir ecto rio pod emos destacar estos subdirec torios:
• al!. Se compone de estos subdirectorios.
lib raries . Librerías de tercero s a ñadid as a Drupal.
modules. Módulos de tercero s o propios a ñadido s por los usuarios de Drupal.
themes . Temas a ñadidos por tercero s o crea dos por los usuarios de Drupal.
fil es. Directorio en el qu e se almacena n los archi vos que suban los usua rios.
default. Directorio principal de Drupal. Contiene el archivo de configur ación
settings.php .
Una vez creada la base de dato s hay qu e dar permiso a un usua rio para qu e pueda leer y escribir
en cualquier tabla de esa base de dato s. Ese usuario será el qu e utili zará Drupal para acceder a la
base de datos.
Aunque es complejo es fácil determinar dónde se guarda la información. Así, por ejemplo, la
tabla users guarda la información sobre los usuarios y la tabla nades la información sob re los
nodo s. La instalación de Drupal creará todas esas tablas en nuestra base de datos e irá incor-
porando datos en ella a medida que lo nece site . Al final, en un sitio que actualiza a menudo sus
contenidos, la base de datos se modifica continuamente.
342 IMPLANTACiÓN DE APLICACIONES W EB
Inicialm en te no existe archivo de configurac ión . Pero disponemos de un archivo que sirve
como plantilla llamado /sites/default/default-settings.php. Simpleme nte habr á qu e copiarlo
en el mismo dir ecto rio y llamar a la copia settings.ph p. No se debe eliminar el archivo origina l
default-settings.php, ya qu e se usa ta mbién para confi gurar Dru pal. De ahí que haya que copiar
el archivo y no renombrarlo.
Hay que asegurar qu e el archivo de configura ción tien e permisos de escritur a en los sistemas
Linux/ Unix. Pero tras la in stalación , se debería dejar solo permisos de lectur a para no compro-
meter la segur ida d del siste ma .
La versión de Drupal (en el enlace anterior es la 7.38) se cam biaría por la que tengamos.
[2] Mover ese ar chivo al dir ect orio /profiles/standard/translations/ (desde la raíz de Drupal).
Su ponemos qu e la versión Standard de Drupal será la que instalemos (ver apartado
siguiente).
Por supuesto podemos instalar varios archivos de idioma. El problema es que no siempre las
trad uccio nes son com pletas , por lo que mu ch os administradores prefieren instalar en el in glés
origina l.
[1] Indicar el tipo de instalación . Para usuarios que empiezan con Drupal lo lógico es elegir
Sta ndard ya que viene con módulos pr eparados que facilitan su gestión. Los usuari os más
avanzados eligen Min imal ya qu e in stala Drupal de form a más eficiente.
[3] Dru pal verificará qu e el siste ma cumple los requi sitos previos: servidores web y de bases
de datos con versiones correctas y funcio nando, archivo de configurac ión preparado , etc.
De n o ser así, indi ca, median te mensajes, los pro blemas para poder instalarse. Los cuales
debemos de arreglar para conti n uar la in stalación .
[4] Estab lecer los ajustes para comunicar con la base de datos: tipo de servidor, usuario, base de
datos, contrase ña, nombre o IP del servidor de base de datos, puerto y si deseamos prefijo
para las tab las. El prefijo es útil para distinguir las tablas de Dru pal de otras que pudiera
haber en esa base de datos, y para encriptar un poco el nombre de las mis mas y hacerlas
m en os pre decibles ante ataques.
Inicio de sesión
Bienvenido a localhost
Aún no SE' ba creadocontenido para la portada .
• crearncevecceau
• S::::ki,4;U::Z tu!' ;a
cccnas eáa
tmc er ~e sión
Figura 8.10: Portada de Drupal tras finalizar la instalación de tipo Standard y sin conectar como usuario
344 IMPLANTACiÓN D E APLI CACIONE S W EB
Figura 8.n: Barra de cont rol o me nú de administración de Dru pal, Solo aparece para algunos us ua rios
registr ado s
Cua lquier acción sobre el contenido (sea front o back end) se lleva a cabo desde esa bar ra
superior.
Para qu e fun cionen las URL limpias lo tiene que permitir el servidor web. En Apache debe
estar activado la librería mod_rewrite y dejar cargar la configurac ión del archivo .htaccess qu e
está en la raíz de Drup al, al igual que ocur ría con los perm alinks en WordPress (véase 8.3-3 "Ajuste
de Permalinks" , en la página 332).
Para activar las URL limpias en Drupal hay que ir a Configuración-Búsq ue da y metada-
tos-U RL limpias (clean URL) en los menús de administración . Despu és simpleme nte , si no hay
problema s, se activa la casilla correspondiente (si no lo está ) y se guarda la configur ación .
8.7.3.1 ALIA S
Una opción , más parecida aún a los pennalinks de WordPress, es utili zar alias. Los alias no
se pueden utilizar si no fun cion an las URL limpias. Un alias apor ta acceder a un determinado
recurso a trav és de una URL a medid a. Para a ñadir un alias a un a de las direcciones existentes,
pod emos ir a Configuración-Búsqu eda y meta datos-Alias de URL.
Veremos como en ese apartado ya hay alias que el propio Drupal Core (a través de su módulo
Pat h) ya habrá activ ado .
Módulos @ USTA
Des ca rga r modutc s coot-rburdos para amp liar el fu noonanuen t o d e Dru pa!
RE ~'He e msta !e rec uler r nen t e las actuet.z acio r e s d.s pomble s para ma nt e n e r u n s u¡c s eg ur o y a ctua liz ado . :'Jec ute e l cenct d e
ectcet.aec«.o s iem pre c ue un mó dul o es actua lizado.
• NÚCLEO
Hay módulos que dependen de otros, por ejemplo, para activar el módulo Forum (que permite
crear foros de debate) se necesitan activados otros cuatro (Taxono mía, Opciones, Campos, cam -
pos de almacenamiento SQ L y comentarios).
Activar un módulo se realiza simplemente marcado la casilla de verificación que está en la
columna Activado. Para qu e la activación se lleve a cabo, se debe hacer clic en el enlace Guardar
con figuración que aparece al fina l de la pantalla.
Hay que tener en cuenta que todas las acciones qu e Drupal es capaz de hacer, se representan
con módulos. Por ejemplo, hay un módulo para gestionar los usua rios , si lo desactivamos no
podremo s gestiona rlos desd e el panel de administración ; sí podría mos , mani pulando el código
de Drupal,
Hay módulos que permiten configuración, para lo cual ten emos un botón ded icado . Tam bién
se permite establecer permisos de uso según el usu ario. Esos botones dependen del módulo en sí,
no todos disponen de esos botones.
UNI DA D 8. INSTALACiÓN DE SISTEMAS DE GESTiÓN DE CONTEN IDOS 347
[1J Descargar el archivo comprimido tzi p o tar.gz) del módulo. Asegurá ndono s de qu e es com-
patible con nu estra versión de DrupaL
[3J Copiar o subir ese directo rio a la ruta sites jalljm odules, partiendo desde la raíz de Drupal.
La URL http: (ldrupal.org/project /modules nos permite buscar y descargar m ódulos de terc e-
ros. Puesto que es un a web que está gestionada por la propia empresa Dru pal, pod emos estar más
tranquilos al instalar esos módulos.
348 IMPLANTACIÓN D E A PLICACION ES W EB
[2] Tras hacer clíc en el botón Hacer sitio web, escribe la dirección deseada par a nu estro sitio
(obligatoriamente debe llevar el sufijo wordpress.com ). La propia página verificará si el nom-
bre est á disponible:
" WordPresscom ~ . ' ~.
.wordpress.co m .¡ :
- -- -
[3] Tr as hacer die en el botón Crear tu sitio y continuar, escribe tu email, nombre de usuario y
contrase ña, El n ombre de usuario no pued e coincidir con ninguno de los existe nt es.
UNI DA D 8. INSTALACiÓN DE SISTEMAS DE GESTiÓN DE CONTENIDOS - PRÁCT ICAS 349
Q) WordPress mm . t ' ~:
übrc.a.... worcpress.co.n
Nomb re de usuar io
librorew
Contrase ña
l ·_····~···········~···························
[4] Al avanzar al sigui ente paso, la cuenta estará creada . En el paso siguiente se nos ofrece dar
de alta un nombre de dominio asociado al nuevo sitio, pagando el precio correspondiente.
Si no lo deseamos, avanzar haciendo clic en el botón No gracias.
[5] En el siguiente paso escogeremos un tema para nuestro nuevo sit io. Más ade lante se podrá
modificar si lo deseam os.
[6] Lee nuestro correo electró nico. Necesita mos verificar un mensaje que ha llegado de
wordpress.co m y qu e nos permita verificar el correo. Sin esa verificación, el sitio no quedará
activado.
Hol a libroiaw
Gracias por registrarte en WordPress com Haz elle en el siguiente botón para activar lU
cuenta
[7] Tendre m os el sitio listo para usar. Podemos publicar un primer post de pru eba pulsando en
el botón del lapicero.
Suponemos inst alado y configurado correctamente nu estro servidor web. También supone-
mos que disponemos de un servidor MySQL en funcio na mie nto y ya asegurado. En la segunda
unidad de este libro pued es consultar cómo realizar estas acciones .
350 IMP LANTACi ÓN DE A PLICACIO NES W EB
Pasamos a realizar los pasos previos: creació n de un a base de dat os y un usuario preparados
para ser utilizados por WordPress.
[1] Conectar con MySQL como administrador. Desde la línea de comandos (suponemo s que
tenemos acceso a los binarios de MySQL) del siste ma, escribimos el siguiente comando:
' > mysql -u ~~'ot -p '- ' __ o -- •••• • --... • • --- - • • • ' • ', .
De este mod o conectamos con MySQ L utilizando el usuario root (administrador). Tras el
comando escribiremos la contrase ña del administrador.
[2] Cre ar la ba se de datos para WordPress. Deberem os utilizar un nombre para la base de
datos un poco críptico. Yo he llamado a la base de datos libroia w y como la he creado a las
18:35, le he a ñad ido la hora:
~ .. _. . - _. - - -~ _. .- -- -
mysql> CREATE DATABASE libroiaw1835; .
[3] Cre ar el usuario que utilizará WordPress para acceder a la ba se de datos. En el mism o
comando aprovecharemo s para otorgarle todos los privilegio s sobre la base de datos :
I • • • • • ~ •• • -_ •• _. • •• • • • -
[4] Descargar WordPress. Para descargar los archivos en es pañol podemos hacerlo desde la
dirección https://es.wordpre ss.org
+- e e, r ::p: es.wc rcpress.orq
.Bienvenid aí .Bienvenidol
; B i e rl\l (' n i d ~ a wordsress Espa ña'
Word Press e s Uf'.! a ~.~ f' :ada p et..!o r ~na ~e:-,á ....t.ce c e pub cec.on ~ ~ '-sY"I.~ 1 c ue ma ce e le este uce 'CS estA r-d,;ct-s .", eb :: 'a
vsac .i.ced. WordPress es libre y. al ·.... 's-r-e t ernpo, ~-ra(:J ¡to
:k ho ere fQnT,., mas seoone. .""O' (,lOres;, es t" : ~:ern 3 ove t; ~ ¡ .zas cuenco (1 ~~0" S lrútlaJc' con ur henanuente c e pu b.rcecron en "Jf M
ce oe.een e co» t ll¿
Descar-gar .01.\8
Desde esa página ba sta con hacer clic en el botón Descargar WordPres s 4.4. 2. El resultado
de la descarga es un arc hivo comprimido .
[6] Copiar el directorio, resultado de la desco mpresión anterior, den tro de n uestro servidor
web. En este caso supondremos que tenemo s un servidor web local Apach e con PHP, por
ejem plo implemen tado mediante XAMPP, con lo cual basta copiar el directorio descompri-
mido al clásico directorio htdocs de Apache.
[7] Tras copiar el directo rio, le reno mbraremos como libroiaw -wp en lugar de wordpress.
[8] Supo niendo qu e ten em os en ejecución el servidor Apache y MySQL, desde el navegado r
web ir a la dir ección b ttp:/I localhostlli broiaw-wp. Aparecerá la pantalla de instalación de
WordPress, pu lsar el botón j Vamos a ello!
e.e -ve ' ;c ¿ '·¡C·:::>i ~ ;S t~ ~ e, :lt e'7' :.~:.; -.... t< t~ :.''l' C~ ~ ; .. .... -tc. ....~ ( ~~ ce '." t ese r,., oe.cs
·.<e ; ':r<;~ set e - e s f~~--:" "r'e:; ce : ?~. "o,"
:~ ·...ct ~ ~¡ :.1"<:'< _":' r- e- e- r z.. ~ ~·tJ¡ t .s-•• ;.' r . ( :: d ~ i' . C'.~ 5 ~ po- w.t l:r-'lt:f mouvc Id creaoo-r
¿ ll lOm d:' l<, de : e-cr -ee oc IU'1.n:nd:lO l e P¡t'Dtl;~ lo qUE'na ce f'~ li' P' O(",(' es '1 :'/;"0<'.1 un l,tl1eloo"
ccr.ngurec -ce con ia in'crrr./lcion de la base de dAtos Tlmhi..:"I ececes s ;mpl~"T'It m t ~ t.-fir t" 13r{hr~;) """.
t on" ~¡; - s;IIiI\:·ll' .p~r' en ¡;n ed.tor ee :" ~IO. rt lf'n~'lo con :\.1 ¡~,~o r md c i o n. r ¡;<.Iilrd.-.rlo ro-no . ¿ :~ " :ec :¿, ~
[9 ] En la siguiente pantalla rellen ar los datos refer idos a la base de dato s y usuario MySQI
creado ante rior mente:
.:.. cont.n vec.cr d ebe res mtrc ouctr los oetat'es de conecrcu a t:.J ba se ce 0,:;t05. S: no ~H¿jS. segv-c oe este
ill form :;cl(;f¡ cor-tace con t u c -eveecc- ce a'ojam.er.tc v..eb.
Contraseña .; i s2D3f.1G5h6_!
[10] Finalizado ese asiste nte, pasam os a ejecutar realme nte la instalació n de WordPress. Parar
ello pu lsamos el botón Ejecutar Instalación, esto nos lleva al conocido in stalado r de 5
minutos de WordPress.
352 IMPLANTACiÓN DE APLICACIONES WEB
[11] En la pantalla siguiente escribimos el título de nu estro sitio web, el nombre del administ ra-
dor, la contrase ña, etc.
Hola
S : ~ 'i ,e n : d :. ~ ' temoso e-o- ese c e :"'-' S!a ril~ l:l n c e v.crcr'ress é'!'"lcr-e o r-unct os. ~'Im;:,:e rn e n e cerne-e-e
emtcrrr.cucu S¡ ~iJ:::":'¡O;: y ester es ¿, pu-ne ~J~ USJ~ a m"s e.r .oueceoc-a 'i cote-t e P :d :,:;t::J1fT ¿, ele
cvo.rccco r-oerscne' de, rr-ur-ao
Información necesaria
~:' ~ i.a-;o· oeoes f':;: " .:<l:nc~ 1,:-, ~ g.;le,:o::;~ ,:; : :: ~ ~. 0 te oreo-cces s-e-r-c-e r-oc-a C<lr -tl'.3' estos
::: ~ ste~ -n ¿" ;.;rC02
Titu lo de l smc
Nombre d e U"UcHIO
Jefewp 1835
Prtvandac
[12] WordPress nos indicará que está instalado. Ya podremos acceder a todas sus fun ciones.
.Lo lograste!
jefewp 1835
[3J Editar el archivo wp-co nfig.php y modificarlo para que te nga estos valores:
. . _. - o' - o.. . ._. .. o o ·0 ••• • . _ •• - - - . - - . - - - - __ o • • _-- ••
I
defme('DB_PASSWORD ' 'A1s2D3f4G5h6_! '); I
defme('DB_CHARS~T' 'utf8'); I
rd;fin~ ( ' SÉCURE_AUTH_SALT " ' k2mI H I AMq] hd#Do+hó-eVbR ! jVD1 n ! i ~&W ; HoaNnyEDv : 07H ; xj09[ ~9G2i<$~5A ' ); ~
!define ( ' LOGGED_I N_SALT' , 'Hom>pcK)-y%FR-ce{3&&V52RfeZ{!$lAJ(XodcQcXZRA4L]zTpV 'skr/6x?!1-[7'); ;
define( 'NONCE_SALT', 'Fe]AI5dv. ;_ZFld·[}U=X*P?A836 ~gJ%CS] ~V-~0(1=xgGt}{6-E81iZBc~ ~~=gl ') ; : ~_ ,
[5] Acce der al direct orio de Wo rdPress en nuestro servidor. Si el servidor es local, será
m edi ante: htt¡Wlocalhost/libroiaw-wp /. Salt ará el asiste n te de in st alación en 5 minutos,
qu e se corresponde con lo s pa so s II y 12 de la práctica an terior.
[1] Nos ub icamos en el direct o rio raí z de do cumentos de Apac he (le s upo ne mos en /varjwww)
y descargar la versión deseada de Drupal (descarg am os la 7.38):
1" •
$ cd /var/www . .
1 $ wget http://ft¡) . drupal . o~g¿~~s/~roJ~~_~ts/drLJ ~al-=l. ~_ª' t.9.~_:9~_'_' __.__
[2 ] Extraemos el directorio (y elim in am os el archivo comprimi do):
- -- - - ~ . - .
,' $ tar vzxf drupal-7.38.tar.gz
$ rm drupal ~7.3_8_. ~a_r:.g~ __ . ._.. _
• ~ • • • .. • • >
:my s q l >
I
GRANT All PRIVIlEGES ON libroiaw210'.*
'
TO ' ,
, -> Ijefeiaw12101@llocalhost" IDENTIFIED BY IA1s2D3f4G5h6_!"; ,
! .
!my s q l > FlUSH PRIVIlEGES
l..: ._ 4.... _ ...... _ .... __
_ ••__ -' _, " .o"'''''' _ ~ ~ ._._____ __ __ _. _ 1
[7] Desde el navegador accede a la dir ección ll.t.W.JLlocalhos t/drupallinstall.php y realiza el
resto de pasos de la insta lación (puede ser necesario ten er que in stalar algunas librerías):
No mbre de usu ar io d e la ba se d e d a to s -~
~ Co nfig u rar ba s e de d atos
-j.;l eiaw 12 10
CUENTA D E MANTENIMIENTO DEL SIT IO
c ontraseña e
Forteleze de
l as contras e
[10 ] Crea el directorio files (si no exist e) y da le permisos de escrit ura (si es necesario):
La in stalación de WordPress, en un servidor prop io, pasa por crear una ba se de datos
MySQL y un usuario con permisos de modificación sobre ella. Tras esos pasos, un sim ple
asiste nte finaliza la inst alación.
• La info rmació n qu e Wo rdP ress va a ñadie n do en nuestro sitio web se gua rda en las
tablas de la base de da tos, las cua les ti en en una est ruct ura definida, y en el dir ectorio
wp-conten t . El resto de directori os de WordPress co ntienen su código fue nte.
• Drupal es un CMS má s potente, pero más difícil de gestiona r que WordPress, al menos
al principio.
• Sus con ceptos son par ecidos: ta xonomía, tem as, plugi ns o mó du los, usuarios, etc .
Aun que m an eja otros co nce ptos como: n od os, bloques, regiones y vistas. La razón es
que permi te definir sit ios más complejo s.
• Drupal almacena los datos en un a base de datos de est ruc tura más grande que WordPress.
El directorio si tes (y esp ecia lmente su subdirectorio all) es donde se almacenan los com-
ponen t es y elementos qu e el usu ar io ha rea lizado o descargado .
Como Wordf'ress, Drupal req uiere una base de datos y un usuario con acceso a ella. El
resto de ins talación se hace mediante un asistente se ncillo.
• Comp re n de r las bases del func io nam ien to e in stalación de Drupal y WordPre ss, serían
suficien tes para en te n de r la in stalación de cualquier otro CMS.
UN IDA D 8. IN STA LACi ÓN DE SISTEMAS DE GESTiÓ N DE CO NTE N IDOS 359
CONTENIDOS
9.1 BASES DE LA PUBLICACiÓN DE 9.5.3 EDITAR PÁGINAS
CONTENIDO 9.6 PERSONALIZAR LA APAR IENC IA D E UN
9.2 AÑAD IR ENTRADAS EN WORDPRESS SITIO W O RD PRESS
9.2.1C REAR N UEVO S POST 9.6.1 T EM AS
9.2.2OP CIO N ES DE PU BLICACi ÓN 9.6.2 ME N ÚS
9.2.3PAPELERA 9.6.3 WI DGETS
9.2.4ESTAB LECI EN DO CATEGORíAS Y 9.6.4 CA M BIA R LA PÁGIN A DE INI CI O
ETIQUETAS 9.6.5 CA M BIA R LA PÁGIN A DE ENTRADAS
9.2.5 O PCI O N ES AVA NZA DAS EN LA 9.7 AÑAD IR CONTENIDO EN DRUPAL
PUBLICACiÓN DE ENTRA DAS 9.7.1 CREAR NUEVO CO NTE N IDO
9.3 PUBLICAR ELEMENTOS MULT IMED IA 9.7.2 M ODIFI CAR EL CO NT EN IDO
EN WORDPRESS 9.7.3 ALIAS DE URL
9.3.1 IM ÁGEN ES 9.7.4 CREAR NUE VO S TIPOS DE
9.3.2 A ÑA D IR OTROS ELEME N TOS CO NTENI DO
M U LT IM EDIA 9.7.5 EST ILO S DE IM AGEN
9.7.6 TAXON OM íA S
9.4 CREAC iÓ N Y GESTiÓN DE
9.7.7 CO NCL USIO N ES SOBRE LA CREACiÓN
COMENTAR IOS EN WORDPRESS CONT ENIDOS EN D RU PAL
9.4 .1 IN TRODUCCiÓN A LOS
COM ENTAR IOS 9.8 PERSONALlZAC IÓN DE LA APARIENCIA
9.4.2 PUB LICAR COM ENTARIOS EN DRUPAL
9.4.3 ADMINIS TRAR COM ENTARIOS 9.8. 1 M ENÚS
9.4.4 MOD ERACiÓN D E COMENTARIOS 9.8.2 BLO Q UES Y REGIONES
9.4.5 H ERRAMIENTAS ANT ISPAM DE 9.8.3 TE MAS EN DRU PAL
COM ENTARIOS 9.9 PRÁCT ICAS RESUELTAS
9.5 CREACiÓN DE PÁGINAS ESTÁT ICAS EN 9.10 PRÁCTICAS RECOMENDADAS
WORDPRES S
9.11 RESUMEN DE LA UN IDAD
9.5.1 PÁGINAS Y POSTS
9.5.2 CREAR PÁGI NAS 9.12 TEST DE REPASO
362 IMPLANTACiÓN D E APLICACION ES W EB
En gen era l, de cara al con te n ido podemos distingui r, independientemente del CMS estos
elem entos:
• Los eleme ntos multimedia qu e se incorpor en en el conte ni do. Las im ágenes son los ele-
mentos, sin contar el t exto, qu e m ás se utilizan . Su almace nam ien t o es un tema preocu-
pante, ya que ocupan espacio . Se entiende q ue es parte de l propio contenido de us ua rio
y, por lo tanto, la ma yoría de CMS incorpo ran herram ientas para su gesti ón .
La aparien cia general del contenido. El ti po de letra del conten ido, la zona en la que
aparece, dó nde apa rece el título, cóm o aparecen las imáge nes , qu e barras y menús están
alrede do r de las págin as, qué formato general tienen las pág inas. Todo ello lo sue len
gestionar las plantillas o te mas cuya gestión es otra de las bases del CMS.
• La navegaci ón hacia los con te nidos . Es muy deseab le que cada conte n ido t en ga un a URL
asignada y, más aún, qu e esa URL sea lógica y amigable. Además es fundam ental qu e se
pu eda buscar contenido fáci lmente a través de palabras clave, temas, aut ores, etc.
• Los permisos de creación de contenido. No todos los usuarios pu ed en gen erar conte-
nido, incluso podemos desear qu e un os u suarios editen un tipo de conte n ido y otros
no . Por ejem plo un usuar io podría poner come n ta rios, pero no añadir nuevas ent radas .
• La n avegación gen era l de la págin a. Una vez más para facilitar en contrar contenidos qu e
de seemos y hacer el sitio lo más intuitivo posible.
'"
9.2 ANADIR ENTRADAS EN WORDPRESS
9.2.1 CREAR NUEVO S POST
La forma m ás habi tual en WordPress de crear una nueva en trada o post , es desd e el escritorio
(dashboard), disponible si no s h emos conectado como usuarios, a ñadien do en el navegador la
U NIDAD 9. GESTiÓN DE LOS CO MPONENTES, CO NTEN IDO Y APAR IENC IA DEL CMS 363
ruta wp- adm in a la raíz URL del sitio WordPress. En ese pan el basta con hacer clic en Nuevo
(New) - Entrada (Post).
Figura 9.1: Menú de creación de nu evos po st desde el escritorio administ rativo de Word Press.
t : sta do Borrador ~
B 1 - !~ _ " - _ _ _ ~ U _
m: j:'u o ":::5' inmediata mente ~
Format o
trn ..gen
Ca
El conten ido del post es, lógicamente, HTML. El panel de creación de post nos permite
dar formato a través de bot on es, pero podem os hacerlo viendo el código HTML si hace-
mos clic en el botó n Texto (Tex t). No se debe po ner el auto r en el contenido; ta mpoco la
fecha ni las palabras clave. Todos los m etadatos del contenido se gestionan apa rte.
• Aña dir los eleme ntos multimedia (imáge nes , vídeos , etc) relacio na dos con la entrada
qu e estamos escr ibiendo.
• Modificar opciones avanza das: autor de la entra da, permalink de la entrada, privacidad,
m etadatos, tipo de entrada, etc.
364 IMPLANTACiÓN DE APLICACION ES W EB
• Previsualizar el aspecto que tendrá el post, me diante el botón Ver entrada (View post)
que aparecerá cuando hayamos escrito contenido en el post.
Cuando tengamos el post a nuestro gusto, basta con hacer die en el botón Publicar (Publish)
para que la entrada sea publicada.
• Estado (Status) . Ind ica si los visita ntes pueden ver el post en la página. Sus posibilidades
son:
Pu blica do (Published). El post está ya disponible en la página. Una entrada alcanza
este estado al pulsar el bot ón de Publicar (Publish).
Borra dor (Draft). El post queda almace nado en el panel de administración. En el
escritorio de la zona de administr ación esta rá disponible con la lista de posl, pero no
se publi cará hasta qu e se pu lse el botón de pub licar.
• Pendiente de revisión (Pending Review). Es un tipo especial de modo borrador, en el
qu e la entrada queda pendiente de que un revisor o administrador la pub lique. Hasta
qu e eso no ocu rra, el post no es visible en el sitio web. Es el esta do en el que se dejan
las entradas realizadas por los usuari os Colaboradores, los cua les no pu eden publicar
directam ente sin la revisión de un usuari o de mayo r nivel.
• Visibilidad (Visibility) . Por defecto es pública, pero pu ede ser privada (solo los miem bros
podrán ver el post) o prot egido por contraseña.
9.2.3 PAPELERA
Cuando se borra una entrada, ésta se deja en la Papelera (Trash) . La pap elera está accesi-
ble desde la lista de entradas en el panel de administración. Sobre cada entrada podemos elegir
Restaurar (Restare) o Borrar permanentemente (Delete permanently).
No hay solo pape lera para los posts, tamb ién hay pap elera para los comentario s, páginas y
otros elem entos. El funcionami ento es el mismo .
Conviene revisar la pap elera de vez en cua ndo y eliminar los eleme ntos permanentemente. Sí
queremos qu e la pape lera borre automáticamente los eleme ntos borr ad os cada, por ejemplo , ro
días. Enton ces en el archivo wp -config.php se añadiría esta línea:
I - .-. -- - -- ---.--~ ...;-----.
! ~ ~~~C_~ fi'=:rY-T8~SH- DA~~_'_,_ ~ L .~ o • • __ • _ _ •• _ • ~
UN IDAD 9. GESTiÓN DE LOS CO M PONENTES, CONTE N IDO Y APA RIENCIA DEL CMS 365
------- ~
Ocio Inform át ica
/"'-
Guerra Suspense
Esta idea jerárquica nos permite realizar orga ni zaciones de categor ías complejas, como se
puede observar en la Figura 9.3.
Para establecer categ orías a un a entrada nu eva, basta observar el pan el de categ orías, en la
misma ventana de creac ión de nu evos post, y marcar aquellas categorías qu e ti en en relación con
el post que hemo s escrito.
Si la categor ía qu e qu eremos indicar no existe, entonces pul samos el botón Añadir nueva
categoría (Add new category) y escribim os el nombre de esa nueva categ oría, señ alando la cate -
goría de la que colgará esa nueva; es decir, se ñalan do la categ oría padre de la qu e esta m os a ña-
diendo, si es el caso.
Gestionar categ orías de forma má s avanz ada requiere ir al apartado Entradas (Post) - Categorías
(Categories) del panel de administración .
366 IMPLANTACiÓN DE APLICACIONES WEB
Categorías
Bese5oc datos
Ocie
• Crear nuevas categorías indicando, además, a qué categoría superior pertenece para
establecer la jerarquía correcta de nuestras categorías.
• Borrar o modificar las categorías existente s. Gracia s al panel en el que ap arece la lista de
todas las categorías.
• Estab lecer el slug de cada categoría. El slug es el nombre amiga ble que damos a un ele-
men to de WordPress (como el título, por ejemplo, de un post). Este nombre es con el
que apar ece la categoría en un permalink. Por ejemplo, si te nemos un a categ oría que se
llama bases de datos y hem os indicado que para acceder a los post de nu estro sitio, se
use n pennalinks en los que aparece la categoría, ésta aparece con el slug, por ejem plo,
bases-de-datos (observese Figura 9-4).
• Mostrar las entradas (post) pertenecientes a una determinada categoría. Para lo cual
señalamos a dicha categoría y hacemos clic en el botón Ver (View).
La recom en dación habitu al es no ten er más de 15 o 20 categorías ; pero eso dependerá del tipo
y complejidad de los conte nidos qu e publiquemos.
Volviendo al post que habla de la final de la NBA de baloncesto, en este caso podríamo s asignar
las palabras claves: baloncesto , final, NBA y partidazo .
U NI DA D 9. GESTiÓ N DE LOS CO M PO NENT ES, CO NT EN IDO Y APARIENC IA DEL CMS 367
Para a ñadir etiquetas (tags) a un determinado post, basta ir al panel de etique tas (tags) en
la propi a ventana de crea ción de nu evas entradas y escribir la lista de etiquetas separadas por
comas . Tras pulsar el botón Añadir (Add), se asignarán las eti quetas .
Tras a ñadir, aparecerán las asignadas en ese pan el. Pode mos eliminar, si lo deseam os, algunas
de las etiquetas a ñadidas desde el propio panel.
http://misitio.com/wordpress/categorv/?cat=5
Se nos mostrarán las entradas relacionadas con la categoría número 5. Evidentemente esta
forma de exam ina r entradas por categorías no es muy intuitiva, por ello, es mejor si hemos utili-
zado perm alink s en las catego rías asegurando que cada una de ellas dispone de un slug (no mbre
amigable). En ese caso este enlace: http://misit io.com /wordpresslcategory/ balon cesto, nos mos-
trará to das las entrad as asociadas a la categoría baloncesto.
Lo mismo ocurre con las et iquetas (tags). Podem os most rar toda s las entradas asociadas a la
etiqueta baloncesto , de esta form a: http://misitio.com/word press/ta g/b alon cesto
9.2.5.2 EXTRACTOS
Algunos te mas de WordPress ofrecen la opción de no mostrar de golpe el conteni do de cada
entrada, sin o mo strar un primer resumen al que se llam a extracto (excerpt). El extracto es un
conteni do que se muestra in icialm en te en el artíc ulo, pero que permite hacer clic en un botón
con el texto más, m ediante el cual ya sí se mu estra el post completo.
368 IMPLANTACiÓN D E A PLICAC IO NES W EB
Sin definir extracto alguno Word Press muestra los 55 primeros caracteres. Pero podemos defi-
nir un extracto personal con el contenido que deseemos. Eso se hace a trav és del pane l Extracto
(Excerpt ) disponible al a ñadir o editar una entrada.
Comentar ios
Además , en ese pan el pod em os indi car si permitimos el uso de t rackbacks y pin gbacks, sobre
la entrada qu e estamos editando. Los trackbacks y pingbacks permiten notificar si alguien está
mencionando nu estra entrada. Normalmente interesa esta opción, salvo que detectemo s qu e se
nos está some tiendo a un ataque de pingback spam .
Desde el panel del título del post, hacien do die en la URL que se asigna al post y mo di-
ficando la parte fina l (Figura 9.7)
Figura 9.7: Modificación del permalink de una en trada a través del pan el del título. Se observa el forma to de
antes y después de la modificación
• Desde el pan el slug. Este panel inicialmente no está visible, pero se puede mostrar a
través del panel de opci on es de la pantalla. El slug, palabra intraducible en este contex to,
qu e en inglés significa babo sa ) es la parte amigable de una direc ción URL. Al asignar un
slug, estamos modific ando la parte del perrnalink correspo ndiente al título del post .
Slug
nuevo-planeta
Figura 9.8: Panel mo stra nd o el slug corre spo ndie nte al po st anterior.
Las imágenes son un a de las claves fundame ntales en el éxito de un sitio web. Lógicam ente
WordPress incluye interesantes opciones para a ñadir imágen es a nu est ras entradas y página s.
Para añad ir una image n a un a entrada qu e esta mos edita ndo, basta con pulsar el botón Añadir
Obj eto (Add Media ) en la zona de edición. Los pasos a partir de la pulsación de ese botón son:
[1J Si es una imagen nu eva, debemos colocarn os en la pesta ña Subir archivos (Upload files) .
A continuación pod emo s arrastrar desde nu estro ord enador al pan el de inserción o bien
hacer clic en Seleccionar Archivos (Select Files ) y bu scar la imagen en n uestro ordena dor.
[2] Una vez la ima gen esté subida, hay que tener en cuenta que el lírnite de tama ño de la ima-
gen es de 2MB y que solo se admiten los form ato s GIF, JPEG YPNG. Una vez este mos en
la pest a ña de la Biblio teca Multimedia (Me dia Library ) debemos asegurarnos de qu e está
selecciona da la imagen qu e qu eremos subir.
[3] Hay un pan el a la derecha llam ad o Detalles de Adjunt os (Attach ment Detailsi que nos per-
mite establecer opcion es sobre la imagen que qu erem os in sertar. Esas opcion es son:
• Leyenda (Legend) . Un tex to que aparecerá alineado bajo la imagen y que fun ciona como
pie de la mism a.
• Texto alternativo (Alt text). Se tr ata del texto que se asociará al atribut o alt del elemento
img de HTML asociado a la ima gen. Es interesante rellenarlo con una breve descripción
de la ima gen , ya que ese texto es el qu e permite a los bu scadores como Google hacer qu e
la imagen pueda ser buscada .
• Enlazado a (Link to) . Determina qu é ocurrirá cua ndo hagamos clie en la imagen. Por
defecto, lo qu e ocurre es que se mo strará la imagen ori ginal. Pero podem os poner un
enlac e a cua lquier URL qu e deseem os o hacer que no ocurra nada al hacer clic.
• Tamaño (Siz e). Especifica el tam añ o en píxeles qu e tendrá la imagen cuando la inse rtemos.
Al pulsar el botón de editar, disponemo s de un panel que permite modificar las opciones de la
imagen . En ese panel aparecen las mismas opciones que al añ adir la imagen y algun as opcion es
avanza das nu evas como indi car una clase CSS para la imagen y otra para el enlace.
También pod emo s hacer clic en un botón llamado Editar original, que se explica más ade-
lante y que permite modificar la imagen en la biblioteca de m edios, y otro llamado Reem plazar
que no s permite cambiar la imagen por otra.
Detalles de la imagen x
AJUSTESDEVISUAUZAClON
OPOON[SAVANZADAS ...
<t-routc . t ue de re Oecc.tra-v oc
' fT'lil[ C-n
Si hacemo s clic sobre Edi tar imagen (botó n qu e ti ene el mi smo efecto que el botón Editar
Original cuando estam os modificando un a image n a ñadida a un po st) llegamos a un cuadro
llamado Detalles de adjuntos (Att achment Details) con el qu e po dremos ha cer m odificaciones
imp ort antes a la imagen ori ginal den tro de la bibliot eca de medios. Estas modificacion es afecta n
a cualquier inserción de la imagen en cualquier post. Concreta me nte po dremos :
• Recortar la imagen. Para lo cual dibujam os con el ratón un rec tángulo sobre la misma.
Al estilo de los programas de edición de image n, podrem os modificar median te sus tira-
dores este rectángulo. Si al final hacemo s clic en el botón ~, entonces recortaremo s la
imagen en base al rectáng ulo dibujado.
372 IMPLANTACiÓN DE APLICACIONES WEB
Deshacer y rehacer operaciones. Con los bot on es habitualmente prese nte s en cualquier
softwa re.
En cualquier caso, son opciones que podemos no necesitar de WordPress, ya que los pro-
gramas especiali zados de edici ón de imágene s son más apropiados para estas tareas. Tienen la
ventaja de la rapidez, al no tener que abandonar WordPress, y de qu e podemos realizar cambios
sobre imágenes ya insertadas.
Ajustes mu lt imed ia
Tamaño de la s imágen es
Tamaño medio
Tamañ o grande Anc'l ura rnaeene . C'2': -Jtu ra má)jma 'i 02.:
'MfMt5
En la mayoría de tem as de WordP ress, las im ágen es destacadas aparecen como cabecera de
los post.
A ñadi r un a ima gen de este tipo no es mu y diferente respecto a a ñadir un a im agen normal.
Desde el pan el de edición de entradas, disponemos de un pequ e ño panel dedicado a las im ágenes
destacadas.
~
9.3.2.2 AUDIO
Todo lo comentado sobre el vídeo vale para el audio. Podemos subir un archivo de audio a la
biblioteca multimedia o enlazar hacia un audio en Internet. WordPress se encarga de mo strar de
forma apropiada los controles del audio (siempre que le sea posible).
ACTIVI DA D 9.2:
• Crea una nu eva entrada en tu instalación de WordPress.
• Colocaremos en la entrada el enlace a un audio procedente de Sound Cloud cuya URL es
https://soundcloud.com/beachhouse/mast er-of-none. Es la canción Master of N one de
Beach House.
• Ob serva el resultado final en el sitio web.
374 IMPLANTACiÓN DE APLICACIONES WEB
Los come ntarios permiten conocer las opiniones de los usuarios y establecer discus ione s. El
riesgo es qu e se utilic e está posibilidad por terceros par a introducir publicidad de tipo spam o
come nta rios qu e inte nte n rebajar la credibilidad de nu estros con tenidos. Es fund am ental ten er
en cuenta est e efecto secundaría en el momento que nu estro sitio se abre a come nta rios.
Figur a 9.12: Post en el qu e se ha resaltado el enlace qu e permite crear come nta rios usando el tem a twenty
fifteen
Los usuarios deben registrarse e id entificar par a comentar. Esta es la casilla que hac e
que solo los usuarios registrados pu edan escribir comentarios.
• Cerrar automáticame nte los comentarios con más de x dí as. Hace qu e los come nta rios
viejos no se lean.
• Activar lo s comentarios anida dos hast a x niveles. Hac e los come ntarios más legibles
cuan do ti en en respuesta s de otros usuarios.
que debemos administrar esos com entarios, si el número de comentarios es muy alto,
entonces pued e generar un gran número de emails.
Ajustes de comentarios
tnvrarme cn cc-rec
etectronc c ruanoc
x'e-u ene- ter, la ~ Q" 'k -, •. ,,,¡I.'....0 r , toce ce-t ercer.o q l ;(, m(I,", :-' ~ C U~: qv e-a d ~ : ~ , ' -¿(;.t nt':s os.sb r ~ ~ e' su
:c>n:<,1 c o. r c r ocre. U l<l. {,. rT'J " ¡;, " U ...· ~ f'~ i': b'¡¡ e iP c e' «oes "-le"': IO'1 ¿ IJ~ cc.o croenc.ss ro ~ ', :",r~r c e
cs'ec-er -r.-esrcc '1: lj'l i'I cco-wcrcr-ess
lis ia negra de ccmer aanos (Iurna u-t ce-nenta-o (C><'::en$J cu,'q..;'e ·'\ oe e:: .::;5 p:'l'lt'.;; t'n SI.; cc-uer.oc no-no-e ~.p.. rcr-ec
e.ercc-tcc e Il> "er a r-u .c..ce ce -ne ! :' ~ - .; ".; "a l: ~-fa (o IP ::I~r ', '~ ~. T! :-':" r a en (",c mi' 1&5CCI '1: I,j ~ :"l: ' J~
r,HC'¡! ~ S es-que r~~ :s ' CO'1",\I's ,::.'1-v·.·01::'~~e$;: -
• Para qu e un comentario aparezca... Es, sin duda, la opción qu e permite una gest ión
más hábil de los comentarios. La primera casilla de este aparta do, El comentario debe
aprobarse man ualmente, hace que cada comentario deba ser apro bado por un adminis-
trador para que se pueda ver pub licado. Es una opció n qu e requiere mucho trabajo de
admi nistración y, si tenemos muchos comentarios, es prácticamente inviable.
Lista negra de comentarios. Permite marcar como spam comentarios qu e conte nga n
las palabra s o términos que indiquemo s. La difer encia respecto al ajuste anterior , es que
estos come nta rios no se pueden marcar para publicar, son directame nte considerados
spam y no se pub licarán en ninguna circunstancia.
Calificación máxima. Det ermina el nivel apropiado, en cuanto a la edad de las personas,
de comentarios que permitimo s en nuestro sitio .
[3] Cualquier come ntario de usua rios a los qu e se apro baron comentarios ser á pub licado
automáticam ente.
Se puede ser más restrictivo haciendo que cada comentario , sea del tipo que sea, deba de ser
aprobado para ser publicado. Pero es inviable esta configuración en sitios con gran cantidad de
comentarios.
Para ello disponem os de herramien tas antispam, que se pu eden inco rporar a WordP ress como
plugins. De hech o WordPress inclu ye por defecto un a: Akismet. Se tr ata de un a herrami en ta per-
sonal, pero es de pago para sitios comerciales.
Akismet requiere simplemente darse de alta y obtene r un a clave APl. Esa clave se indica en la
zona de plugins de WordPress y directa mente el plu gin detecta rá y eliminará los comentarios de
tipo spam.
En un sitio con gran interactividad , se hace indispens able el uso de estas herr am ientas, sea
Akism et u otras, en sitios peque ños pued e bastar la gestión de com entarios a través del panel de
control de WordPress.
qu e cam bia a menudo, artículos, noticias, no vedades, etc. El ejemplo claro de sit io donde todo el
con te nido se hac e mediante post es un blog .
Pero es rara la web qu e no tien e otras secciones qu e mu estran contenido qu e n o cambia conti-
nuamen te. La típic a secció n Acerca de ..., pr esente en numerosos sitios web, en la qu e se presenta
la inform ación sobre el autor o propi etario del sit io, es un ejemplo de conte nido estático.
A este tipo de contenido WordPress lo llama página (Page). Así que , desde este momento los
posts o entradas serán un a cosa y las páginas otras (aunque el resultado de ambos eleme n tos sea
una págin a HTML).
[1] Desde el menú Páginas (Page) elegir Añadir nueva (Add Ne w i . Aparece el pan el de creac ión
de páginas.
Su;:tc ior
Plan ti lla
ore en
Coment arios
~ ....,, ': ~:; l<i:i <:: ", ; ;17 j;, .. i; " ~st"'~ ...:... . l ~!!
'ó, la =:?r. ecs_ ':'~ r. ~ r c e -ec- o ce 11
Image n desta ca da
ccmentertcs
slll g
[2] Esta blecer las propi edades de la página. La pantalla es muy similar a la de creac ión de post,
los eleme ntos son casi idénticos. Los eleme ntos presentes son :
Atributos de página.
Publicar. Permite determinar la visibilidad , esta do de la página (borr ador, pub licada o
pendiente de revisión ) y el momento en el qu e deseamos publicar la página.
• Imagen destacada. Como se come ntó en el Aparta do 9.3.1.5 en la página 373 , es una
imagen qu e aparece como cabecera de la página. Su pos ición e incluso aparición depende
del tema elegido actualmente para el sitio.
• Cam pos personali zados. Con la mism a fun ción qu e en los post. Permi te indicar meta-
dat os person ales para la página.
Todos esos pan eles se pued en mo strar (u ocultar) gracias al apartado Opciones de pantalla.
[3] Escribir el título y el contenido, el cual pu ede conte ne r etiquet as HTML.
Al pub licar la página, normalm ente aparece rá un nu evo enlace a ella en el men ú princip al
(dependerá del tema en uso).
Desde el pan el de administración, yendo a Páginas - Todas las páginas (Pages - All pages).
En él aparecen la lista de páginas actua les. Podr emos reali zar sobre ellas estas mo difica-
ciones , las cuales aparece n cuando arr ima mo s el ratón sobre un a página concreta:
Editar (Edit). Pasaríamos a la venta na de edición de páginas, donde podríamos hacer
las modificacion es qu e qu eram os.
Edición rápida (Quick Edit) . Pasam os a un a ventana más sencilla de edición.
Papelera (Trash). Envía la página a la papelera.
Ver (Vi ew). Nos mu estra la página en sí.
UNIDA D 9. GESTiÓN DE LOS COMPONENTE S, CO NT EN IDO Y APARIENCIA DEL CMS 381
El equipo de WordPress desarr olla tema s propios cuyo nombre es Twenty , seguido de otro
número en inglés. Así el último tema desarrollado por el equipo, en el momento de escribir estás
líneas, es el Twenty Fiftee n y el siguie nte se llamará Twenty Sixteen. Los tem as de WordPress está n
muy bien documentados y organizados y perm iten , con habilidad, person alizar absoluta me nte
todo su comportamiento.
También podemos elegir entre alguno de los mile s de temas a nu estra disposi ción a tra vés
del menú Apa rie n cia-Temas del panel de administración de WordPress (véase Apartado 8.3-4
"Elección de temas", en la página 334 ). Aun que bu squemos te mas qu e no s pare zcan mu y origi-
nales, el problema es qu e en Internet hay millones de sitios qu e utili zan WordPress, por lo qu e
habrá, casi segur o, otro sitio que utilice exactamente nuestro tema.
=:.0; : ;:: : . •
- :~ - .-."'. Ejemplo de sit io WordPress
core-es
Figura 9.18: Aspecto del panel de personalización de te mas para el tema Twenty Fifteen
Colores
Muchos temas nos ofrecen elegir uno de entre varios esquemas de color básicos. Por ejemplo,
el tema Twenty Fiftee n po r defecto aparece con colores muy claros , podemos cambiar a colores
oscuros, morados, amarillos o rosas.
Además, dispondre mos de varios selectores para modificar a nu estro gusto los colores del
fon do, cabeceras, texto s, etc.
Imagen de cabece ra
Dependiendo del te ma se coloca en unas zonas u otras. Se pue de elegir de la biblioteca o subir
otra imagen (en todo caso pasará a formar parte de la biblioteca).
Imagen de fondo
En este caso se utiliza como mosaico de relleno del fondo de las página s del sitio. Se puede
ind icar la form a de repetirse .
UN IDAD 9. GESTiÓN DE LOS COMPONENTES, CONTENIDO Y APARIENCIA DEL CMS 383
Navegación
Permite indicar, sobre nue stros menús, en qu é parte de la página aparecen . Más ade lante se
explica la creación de menús.
Wi dgets
Permite elegir qué widgets aparecen. Más ade lante se explican los widgets.
Página de inici o
Permite indicar otra página de ini cio.
Puesto que los temas están dispon ibles en la ruta men cionada en el párr afo anterior, existe n
mu chas páginas qu e permiten descargar tem as. Incluso hay tem as prem ium, de pago, qu e apor-
tan fun cion alidad es avanza das. Eso sí, siempre hay que tene r muy en cuenta la fuente de la qu e
descargamo s el tema, ya qu e es perfectam ente posible crear temas con códi go malicioso.
Una opción senc illa para per son alizar es copiar un tema que no s guste, y qu e hayamo s descar-
gado previamente en el dir ectorio wp -content/thernes, y dotar a esa copia de las modificacion es
deseadas.
header.php
I!
o
l'
sidebar.php
Bucle de WordPress
footer.php
index.php
Figura 9.19: Estructura básica habitual de los temas de Word Press
384 IM PLANTACiÓ N DE APLICAC IONES WEB
Dentro de la carpeta them es hay un directorio por cada tema. Un directorio de tema contien e
esto s eleme ntos:
• Directorio css. Hojas de estilo auxiliare s.
Directorio fonts . Tipo s de letra utilizado s por el tema.
Directorio images. Imágenes utilizadas por el tem a.
Directo rio js. Códi go ]avaScript.
• sty le.css. Direc torio obligatorio que contiene la hoja de estilos principal.
index.php. Página de inicio por defecto. Archivo obligatorio que de ter mina la forma de
la página principal. Invocará a otros archivos php para form ar el resultad o final de la
página.
• home.php. Plantilla para la página de inicio cuand o es un a página estática.
• page.php . Define la forma de las página s está ticas.
• hea der.php. Define la zona de cabec era .
• footer.php. Define la zona de pie de página.
• sidebar.ph p. Define la barra lat eral de tema , en la que generalmen te se muestran los
widgets y men ús.
• single.ph p. Define cómo se muestra un post .
• sing le-tipo.ph p. Permite difinir la forma en la qu e se muestra un post de un tipo concreto .
Por ejemp lo, sing le-astronornia.ph p define la apariencia de los post de ast ro nomía.
com ments.ph p. Define como se mu estran los comenta rios.
• search.ph p. Define la aparie ncia de la página de resultados de una bú squ eda.
• category.php. Define la apar iencia de la págin a de resultados de bú squeda de páginas
por categorías.
• tag.php. Define la apariencia de la página de resultados de búsqueda de páginas por
etiquetas.
• taxonomy.php. Define la apa riencia de la página de resultados de búsqueda de páginas
por taxon omí a.
• author.php. Define la apariencia de la página de resultados de bú squeda de páginas por
autor.
• date.php. Define la apariencia de la página de resultados de bú squ eda de páginas por
fecha .
• attachment .ph p. Determina la forma de m ostrar componentes exte rn os.
• image.php. Dete rm ina la forma de mo strar imá genes individu ales.
• functi ons.php. Actúa com o si fu era un plugin y se carga al iniciar WordPress. Define
fun cion es qu e se utilizan en el tem a y caracte rísticas para qu e el usuario pu eda person a-
lizar el tem a desde los paneles de WordPress.
U N IDAD 9. GESTiÓN DE LOS COMPONENTES, CONTEN IDO Y APAR IENC IA DEL CM S 385
screens h ot. png. Imagen de muestra del tema que es la que utiliza Wor dPress en los
paneles de selección de te ma.
404 .php. Aspecto de la página de error de tipo "Recurso no encontrado" corres pon dien te
al código de err or http 404.
r eadrn e.tx t. Archivo de texto que sirve para documenta r el tema.
Por su pue st o, luego cada tema puede a ñadir más archivos si lo consi dera n ecesario. Podem os
mo dificar los arc hivos que deseemos . Hay qu e ten er en cue nta que los arc hivos php prin cipales,
especialme nte index.php, man ejan el llam ado bucle de WordPress, qu e lo que hace es pro gram ar
un a o más est ruc turas qu e recorre n los obj eto s del sitio web. Por ejemplo, el típico bucle es el qu e
mu estra cada po st en la zona de conte nidos de la págin a, cuyo código sue le ser:
<?php
if (h ave _pos t s ( ) ):
whil e(h av e _posts ( )):
th e _pos t ( ) ; l/ pr e pa r a c i ón del s ig u ie nte post
l/ a qu í va el código que se apl icará a cada post
e ndwhi le ;
e nd i f ;
?>
El códi go del ejemplo muestra (en el archivo de plantilla en el que coloquemos ese
código), el título de todos los post s. Pod emos cambiar el códi go por ejemplo a:
<?php
$args=arra y (
"or de r by" =>"rand"
);
$lista =get_posts ($args );
f oreac h ( $ l i s ta as $pos t) :
s e tup_ postda ta ($post );
?>
<h1 ><?php t he_title ( ) ;?> </ h1 >
<?php e nd f or e ac h ; ?>
Está la información com pleta de esta in ter esante fun ción , in cluido el funcio namie n to
del array de par ám etros.
UNIDAD 9. GEST IÓ N DE LOS CO M PO NENTES, CO NTE N IDO Y APARIEN CI A DEL CMS 387
9.6. 2 MENUS
9.6.2.1 IN T RO D UCCI Ó N A LOS M EN Ú S
En WordPress los menú s se han in corporado recientem ente. Como CMS orientado a blogs,
se entendía qu e personalizar los me nús no era mu y necesario. Pero WordPress, hoy en día,
es un CMS que administra todo tipo de sitios y los menú s son un elemento fundamental de
organización.
Los menús esta blecen un a jerarquía de enlaces que permiten recorrer los contenidos del sitio
o bien enlazar a conte nidos externos. Los menús, en definitiva, contiene n enlaces.
Cada men ú enlaza a una página , una entrada particular, un a categoría, una etiqueta, una
URL extern a, etc. Inicialmente Wordpress crea un menú automático qu e va enlazando con cada
página está tica que hagamos. Si el sitio sirve mucho contenido , el menú automático será caótico;
de ahí, que sea más aconsejable crear nu estr a propia estructura de menús.
Siempre hay que ten er en cue nta qu e los menús son uno de los elementos qu e aportan mayor
usabilidad a un sitio web.
r uno s.daoes
Infor m á tica
Enlaces personalizados
Progra m a ción
Categor ías
Cine
Et iq uetas
Ocio
scrmetc
Dep ort es
'MMi
Figur a 9.20: Pan el de creación de menús. En este caso permite navegar po r las categorías del sitio de forma
jerárquica.
3 88 IMPLANTACiÓN DE A PLICACION ES W EB
[4 ] Marcar los eleme ntos a los que darem os enlace desde el men ú. Los cuales pueden ser:
11 Páginas (Pages), pod emo s marc ar un a serie de página s a las qu e el menú permitirá
acceder.
Categ orías. El enlace permitirá mo st rar todas las entradas relacionadas con las catego-
rías que marquemos.
• Enlaces personalizados. Podem os in dicar enlaces a URL que nosotros indiqu emo s y qu e
pu eden ser externas .
[5] Or gani zar jerárquicamente los contenidos del menú. Hay elem entos qu e se pu eden poner
dentro de otros, para ello basta arrast rarles de form a adecuada (véase Figura 9.20). Lo
mismo vale para det erminar qu é enla ces aparecen primero y qu é enlaces aparecen al final;
bastará arras trarles a la posición ad ecu ada.
• Determinar si las nu evas páginas se a ñaden auto má ticame nte a este men ú. Puede ser
una com odidad pero, en caso de ten er muchas página s, puede dar lugar a un número
enorme de enlaces.
9.6 .3 WIDGETS
Los widgets son compone ntes que se colocan en las barras laterales a fin de qu e los usuarios
pu edan acceder rápidamente a funcionalidades avanzadas del sitio como: buscar entradas por
cat egoría s, ver entradas recien tes, listar entradas por fechas, etc. La barra lateral, en práctica-
mente to dos los temas de WordPress, se rellena a través de Widgets.
La gestión de los Widgets se [lace desde el apartado Apariencia (Appea r ance) - Widgets o
desde el menú de personalización del tema actual (aunque es más cómoda la pr imera opción ya
qu e el pan el es más gra nde).
Área de widget s
Af( h i ~o s aurc er
Enrradas r~ c i enl e s
Archivos
Menlipe rsona!llil do
NuO€ de etiquetas
Para aña dir un Widget basta con seleccio narlo y, a con tinuación hacer clic en Añadir widget
(Add widget). También se puede directam ente arras trar a la barr a deseada y así, además, ubi car el
widget en la posición deseada.
Sobre cada widget que hayamo s coloca do podemos: quitarlo haciendo clic en él y eligiendo
Borrar (De lete ), modific ar su título en la barra y cambiar su orden en la barra sim plemente arras-
tra ndo a otra posición .
Es fun dame ntal to mar bu enas decisiones con las opcio nes que aparecen en las barr as, ya qu e
son un a de las claves de un a navegación intuitiva por nu estro sitio web.
Pero n ada no s prohíbe qu e la página inici al sea difer ente, en la qu e se mu estra el sitio de la
forma personal qu e no sotros deseemos. Con lo cua l podem os crear una página de inicio qu e con -
ten ga, po r ejemplo, menús a otras páginas com o se explicó en el apartado anterior.
Para cambiar la página de ini cio basta ir al apartado Ajustes (Setting s)-Lect ura (Read ings)
del panel de administración. Allí podemo s seleccionar la página de inicio en el aparta do Pág ina
fron tal muestra eligiendo la página está tica qu e qu eramos mo strar com o página de ini cio.
[1J Crear una página con el nombre qu e deseemos para acceder a las entradas (por ejemplo, el
propio nombre de entradas).
[2J No se debe introducir nin gún con tenido, realm en te se utili zará como plantilla para ver en
ella las entradas.
[3J En el Ajustes (Settings) -Lectura (Readings) del panel de administración indicar esa página
como págin a para mostr ar las en tradas. Lógicam ente esa página debe estar enlazada desde
algún m enú para pod er ver las entradas.
'"
9.7 ANADIR CONTENIDO EN DRUPAL
9.7.1 CREAR N U EVO CO NTE N IDO
Para a ñadir contenido en el caso de Drup al, desde el panel de administración disponemos del
me nú Con te nido (Conten t ). Desde ese pan el podemos revisar el con ten ido publicado. Además un
enlace llamado Añadir contenido es el encargado de gene rar nu evo contenido.
Conten ido El
AC T UA LI ZA R O PCION ES
Nc na y co nt emd c duponible
Al igual qu e WordPress, la versión Core de Dru pal tiene solo dos tipos de con tenidos o nod os
(se pueden añadir más): artículos (equivalentes a los post o entradas de WordPress) y páginas
básicas (equiva lentes a las páginas de WordPress). Realm ente en Drupal apenas hay difere ncia,
pero las primeras se organi zan , por defe cto , cronológicame nte al est ilo de WordPress.
Tras elegir el tipo de contenido, un panel no s pe rmite defini r el mism o. En dicho pan el
podemos:
Indicar el cuerpo (bod y). Es el texto del artículo o págin a. Es mucho más parco qu e el
panel de WordPress. Permite in corporar etiquetas HTML, pero no dispone de modo
visual de trabajo. Si tiene en cue nta los saltos de párrafo que ha gamos en el pan el par a
dividir nuestro texto en párrafos en el formato final.
Una lista permite elegir el text o qu e pod emos intro du cir, puede ser HTML filtrado (solo
acep ta algunas etique tas HTML), HTML complet o ifull) qu e ace pta todo tipo de HTML
y texto sin formato qu e n o permite introduc ir HTML. En los tre s modos, convierte
automáticamente las URL que introduzcam os a formato HTML (med iante el element o
<a» .
Se pu eden a ñadir más tipos de te xto posible para escri bir desde Configuración-Formatos
de te xto, pane l que permi te a ñadir o modificar estas tres posibilidades de escribir texto .
• A ñadir una imagen (tama ño máximo de 2 MB).
• In dicar opcione s:
• Texto de revisión. Un texto que explique la modificación que h em os hecho en el artí-
culo o págin a para otros ed itores.
• Indicar un texto para la URL. Al est ilo de los perm alinks de WordPres s.
Indi car si permitimos come n tar ios
• Modificar el autor
Indi car dónde publicamos el artículo. Publicado sign ifica qu e se publica con n orma-
lidad. Promovido a portada le sube a la portada .
9.7.2 MODIFICAR EL CO N T EN ID O
Para modificar el contenido basta, desde el pan el de admin ist ración, ir al apartado Contenido,
seleccionar el conte nido y luego edita rlo .
Pero pod emos ta mbién acce der directam ente al conte ni do y hacer clic en Editar, enlace que
aparece si no s hem os aute n ticado en el sit io.
I
Tipos de contemdo @
NO \ ' SRE
l : " , ;;:~ r::~;:'~.' r-rJ ~;;' ~ :trl;];.' .:lut ;:io:.' ~~::I ~:: ~ recr.er ' O"t cc-oo ~ ~,
r : :t: il:!. l.': C: .:5 a~ ~ ' t r, H e eor races ce tl ;:-;:~
l' ~e I~ ~ :: i; ,::!.< oss.c es ¡n.ro!. s:.: ccueo. oc esten - c, ce-r-o ür,~ ~ ~;Ir ~
• Ater c~:le -
Desde ese panel pod emo s a ñadir o edita r tipos de conte nido existe nte. En ambos casos un
nu evo panel no s permite perfilar el contenido a ñadid o. El panel es muy claro pero tien e muchísi-
mas opciones. Se puede especificar exactam ente qué elem en tos form an parte de cada tipo de con-
tenido, cómo funcionan y, con paciencia, ha cer un tipo de conte nido totalmente personalizado.
Podemos cambiar estos tres esti los por defecto con ayuda del panel de estilos de image n. dis-
ponibl e en Configur ación-Estilos de imagen. Podem os a ñadir nu evos est ilos, a Jos que además
pod emos aplicar efectos en la imagen como redim ensionar, recortar, giros , efecto s de color, esca-
lado, etc. Que son los qu e perm iten dejar la imagen como indiquemos. El habit ual es escalar, para
dejar la imagen al ta ma ño qu e indiquemo s.
l a re xo nomt e se Li sa par" (a lego rizar el cont e nido . les t érminos se agrupan el" voca bula rios: por Ejemp lo Un v c cebuleno
llama do "fr uta" co m endne t érrmncs co mo · m a r. z a n a - ~' "olé te no "
'écs n er pe so s d e la fdi:.
NO\\ BRE DEL VOCABULARIO OPERACIONES
+ Foros
Gua rdar
En ambo s casos apar ece un pan el con el qu e pod em os a ñadir el nombre del término (es obli-
gato rio rellena rlo) y su descrip ción . La descrip ción pu ede inclu so in corp orar HTML. Podem os
indicar un alias para poder establecer una URL más clara para llegar a ese término desde un
navegador.
Sobre cada término podemos indicar que es hijo de otro a través del apartado relaciones. Así,
podemos indicar que Plutón es hijo de planetas. Eso permite establecer un a jerarquía que enri-
quece rá la semá ntica del sitio y facilitará la realización de búsquedas de con tenido.
El nombre que deseem os (ese nombre será lo que vea el usuari o como título del contro l
que tien e que rellenar).
• Finalme nte podemos elegir com o tipo de control Autocom pletar término, qu e permite
escribi r dir ectamente el término. También pod emo s indicar un Cuadro desplegable y
entonces, al a ñadir contenido, solo se podrá elegir uno de entre los té rminos existentes.
Conviene editar el campo (desde el pro pio panel de tipo de contenido, en el apartado de ges-
tión de campos) para modificar las propiedades.
Al edita r el campo podem os in dicar opciones avanzadas . Por ejemplo, si adm itimos más de un
término separado por comas o si es obligatorio indicar al menos un término.
U N IDAD 9. GESTiÓN DE LOS COMPONENTES, CONTE NIDO Y APAR IENC IA DEL CMS 395
WordPress admite solo dos tipo s de conte nido (posts y páginas), Drupal infinit os: dos en prin-
cipio , pero pod emo s crear los qu e qu eramos y person alizarlo s para qu e hagan exacta me nte lo
qu e qu eremos. A mu cho s usuarios no les gusta esta versat ilidad, pero los desarrolladores (eso sí
conociendo más a fondo los entresijos de Drupal) sacan mu cho jugo de ella.
9.8 PERSONALIZACIÓN DE LA
APARIENCIA EN DRUPAL
9.8.1 M EN ÚS
La navegación por las páginas de un sitio se hace a tr avés de menús. Los m enús se componen
de enlac es y también pueden contener otros tipos de elementos (como los bloque s). La gestión
de los menús en Drupal se hace a través del pane l del mismo nombre, disponible al hacer clic en
Est r uct ura, dentro del m enú de administración .
+ Auadt t men ú
TÍTU LO OPERACIONES
Men ú principal
h s- e r e due r a ñedrr
Et m ~n Ú Pnr,C·¡;'2 ¡S e us a ~ fl rnucncs sit ies .veb par a rn~ Slri'J ras seccto n es on noca'es d el sü¡,J
ae nere tme r ue E!1 u na c arr s de neve c eoón suoenor
eoteces me nú e nla ce
Además, podemos editar cada enlace para modificar su título, la ruta a la qu e no s diri ge el
enlace, si tien e en lace padre (lo que le convertiría en parte de un subm enú) y el peso, mediante el
cual se establece el orden en el qu e aparece el enlace en el menú.
396 IMPLANTAC iÓN DE APLICAC IONES WEB
Al añadir un enlace te ndre mos el mi smo panel, que nos perm itirá establecer las mi sm as op cio-
nes qu e al edita r un enlace .
Navegación @ LJSTAR ENLACES
4nículc
Guarda r connqurecrcn
Figura 9.26: Enlaces del menú principal típico de las instalacione s de Dru pal Coreo
Destacado
Bartik
Avud a
c ontentd o
Figura 9.27: Demo stración de los bloques que forman parte del tema Bartik del núcleo de Drup al
UN IDAD 9. GEST iÓ N DE LO S CO M PO N ENTES, CO NT EN IDO Y APARIEN CIA DEL CMS 397
Los temas define n regiones en el tema, áreas diferenciadas en la plantilla estética del sitio .
Cada una de esas regiones puede mostrar uno o más elem entos. Esos elementos se conocen como
bloques.
Los bloques son un término de Drupal que se refier e a un objeto de la página capaz de mo strar
contenido, enlaces, me nú, código ... En definitiva , es un elemento que se verá en la página y que
se puede colocar en la región qu e deseemos. De hecho, los menús ta mbién se con sideran bloques.
La gestión de los bloques se rea liza desde Est ruct ura-Bloques (menús del panel de admini s-
tración) ahí aparecen los bloques disponibles y la región a la que se aplican.
El bo tón Demostrar regiones de bloques mu estra un a image n (Figura 9.27) con todas las
regiones en el te ma elegido . La imagen indica el no mbre y posición de la región. Es muy conve -
niente hacer este paso para conocer la ubicación de cada región .
Págin as en las qu e se mostrará el bloque (en prin cipio en todas, pero po demos elegir en
cua les).
Tip os de conte nido en los que se muestra el bloque (si no se indica, se muestra en to do s).
9.8.3 .1 AJ U STAR EL TE M A
En el panel Apariencia-Temas pod em os ver la lista de tem as disponibles para ser el tem a
actual. Todos ellos son temas ya in stalado s. En Ajustes (pestaña de la parte su perior), pod em os
tomar las siguientes decision es:
• Eleme ntos qu e aparece rán en el te ma : logos, imáge nes, menús, etc. Ajustes qu e nfluyen
a todos los tem as.
11 Pod em os elegir el nomb re del tema que qu eremos m odificar y tendremos más opciones
(éstas ya dep en derán del tema concreto). Muchos tem as adm ite n modificar sus colores .
398 IMPLANTACiÓN DE APLICACION ES W EB
.
; • ' 'lo
. ~
. . .
c=J htm l.tp l.p hp
pa ge.tp l.p hp
_ regio n.t p l.ph p
_ blo ck .tpl.php
_ nod e .t pl. ph p
_ co m me nt -wra pp e r...
. - " .. - .. . . ,
Los te mas se sitúa n, como ya se ha com en tado en la ruta sit es/all/t hernes dentro del dire cto-
rio de Drupal. Hay un a serie de archivos que conviene comentar:
• Archivo con el nombre del tem a y extensión info, por ejemplo bartik.info. Contiene la
lista de eleme ntos y detalles qu e tienen que ver con el tem a: nombre, localización de los
archivos CSS y ]avaScript, region es que utiliza el tema, et c.
Ejemplo de conte nido:
Solo con un archivo de este tip o, el tema estará disponible en el administrador de temas
de Dru pal. Si activamos ese tema y vamos a Estructura-Bloques, veremos que ya se reco-
nocen las regio nes in dicadas.
El contenido de las mism as se especifica en los archivos que explicamos a continua ción ;
pero si no los especificamos, el menú de Estruct ura-Bloques no s permitiría ya, dir ecta-
mente lo que va en cada apartado (se basará en el tema por defecto de Drupal).
html.tpl.php. Plantilla qu e se encarga de la cabecera de las página s y los ajustes gene ra-
les del cuerpo de la pagina. Muchos temas no la incluyen y en ese caso funcionarán el
archivo (con el mismo nombre) existe nte en la ruta (parti endo de la raíz) m odules/sys-
tem oUtiliza instrucciones PHP del tipo <?php print, seguido del nombre de una varia-
ble. Por ejemplo, <?ph p pr int $styl e s; ?>, hac e qu e en esa posición se escriba el
código HT ML qu e carga las hojas de estilo.
page .t pl.ph p. Plantilla gene ral de las página s del sitio. Se encarga de gene rar el códi go de
todas las regiones de la página. Por ejemplo, la in strucción:
<?php print re nder ( $ pa ge [ 'ri g ht bar_ B' ] ) ? >
se encarga de gene rar el contenido de la región correspondiente a la segunda barra
lat eral.
• style.css. Hoja de estilos general. Al menos tiene que estar este archivo. Pero suele haber
más, normalmente en el directorio llamado CSS.
tendremos por ejem plo que $content [ , 1 i nk s '] escribe los enlaces del nodo
• sn ode . Objeto que repr esenta el nodo completo, no es recom endable su uso. Aunque a
través de esta variable (que es un array) podemos acceder a todos los eleme ntos del nodo.
En cualquier caso, conviene observar un tema ya existe nte y examinar cómo fun cionan las
página s de plantilla y variables. Al principio conviene copiar un te ma existe nte y m odificar sus
archivo s. Al final el funcio namiento de los ternas personales es ta n fácil (o más in cluso) que per-
sona lizar temas con WordPress.
UNIDAD 9. GESTiÓN DE LOS CO MPONENTES, CONTEN IDO Y APAR IENCIA DEL CM S - PRÁCT ICA S 401
[1] Elimi na las en tr adas de WordPress de ejemplo ini ciales. Para ello entra al aparta do entradas
del m enú de administ ración , selecciona las qu e te ngas (al meno s dos escribe al princ ipio
WordPress) y en acciones en lot e elige Mover a la papelero Despu és pulsa Aplicar.
[2] Elige Añadir nueva en tra da en el apartado de entradas del men ú de administra ción .
Form ato
C:.'
Sa télite s:
• Fobos
• Deimos
• Pulsa a ñadir objet o y a ñade un a fot o de Marte qu e, pr eviam ent e, habrás descargado de
Internet. Cuando la a ñadas pon como Título y texto alt ern ativo: Planeta Marte.
• Antes de pub licar, cons igue que apare zcan las categorías ta l cual se pide en el enunciado.
[4] Haz lo mismo con Júpiter escribiendo el texto, imagen, propiedade s de la imagen y mar-
cando la categ oría a la que pert enece.
Nombre ·
Astronom¡a
No mb re de sistema .,
as tronomta
~e~T~~ __ __ _
List a de término s astronómic os
Gua rdar
UN IDAD 9. GEST iÓ N D E LO S CO M PO NENTES, CO NT EN IDO Y APAR IENCIA DEL CMS - PRÁCT ICA S 403
[5] Sin usar el campo de descrip ción , a ñadim os el primer término : Sistema Solar. Pond rem os
como alias de URL: sistem a-s olar. Hacem os clic en Gu ardar .
[6] T RELA CI ONES Se guardará el término y podre mo s a ñadir el siguiente té rmino. Haremo s
lo mi smo para el resto , a todos daremos alias y a Marte y a Júpiter les
<r aíz > h ar em os hijos de planetas
Planetas
Sistema Solar
[7] Nos diri gimo s a Estructur a-Tipos de Con ten ido. En el pan el siguien te hacemos clic en
Añ adir tipo de contenido.
11 Editamos el cam po Body, y lo llam amos Con te nido. Lo m arcamos como campo
obligatorio
+ im a g e n
--~ - ~-
<Oculto> . ~------
+ Conte nido
- - --- -
<Ocu lto > . Predet erminado
--- - - -- ---------_._---,-.
+ Pa labras e leve Encim a Enlace
404 IMPLANTACiÓN DE APLICACIONES WEB
En el apa rtado de Pr esentación (ima gen ante rior), har em os que la imagen se pida antes
qu e los dem ás datos (sim pleme nte la arras tramos en cima de los otros campos). La eti-
queta de la imagen será oculta.
[11] Instalam os el módulo CKEdito r, desde la URL https: //www.drupa l.or g/proj ect /ckeditor
• En Linux otra opción, in clu so más rápida es sit uarnos en el directorio de los módulos
(10 suponemos colocado en j varj wwwjlibroiaw-dpjsites/allj m odul es, coherenteme nte
con la Práctica 8-4 "Instalación de Drupal en un servidor Linux", en la página 354 ) Ydesde
ahí descarga r y descomprimir el archivo del CK Editor:
,$ cd /var/www/libroiaw-dp/sites/all/modules
' $ wget http://ftp.drupal.org/files/projects/ckeditor-7.x-1.16.tar.gz
'$ tar vzxf ckeditor-7.x-1.16.tar.gz
:$ r~ .ck~~it~r-7.x-1 .16.tar.gz
[12] Busc a una ima gen de Mar te y de Júpi ter (que n o sean excesivamente gra ndes y guá rdalas en
tu ordenador.
• Contenido:
Marte es el cuarto planeta cel Sistema Solar y el mas c ercano a la Ti erra Como nuestro planet a. es rocos o. aunque cuat ro
veces mas pequeño
Se cree que la gran cantidad de hierro que posee es la causante de su color rojo
Satélites:
Fobcs
• Deirnos
bo dy ul ti
[15] Haz los mismos pasos para Júpiter. Invéntate el contenido y coloca la imag en de Júpiter
Júpiter
tl Ío
• Como detalles te n en cuenta el color negro de la barr a lateral y el gris del fondo del cuerpo.
• Se muestran las entradas en la zona de contenido
• La barr a lat eral solo mu estra el contenido del menú de información con los en laces a sus
páginas está ticas (Práctica 9.3), el cuadro de bú squ eda y un cua dro de selección de categorías
en for ma de cuad ro desplegable.
[1] Lo primero es ir al apartado tem as y comprobar que el tem a en uso es Twenty Fifteen, de
n o ser as í, hay qu e act ivar ese tern a.
[3 ] En el apartado Navegación hacer qu e no se mu estre ningún men ú (los menús les m an eja-
re m os desde el apar tado Widgets)
[4] Elim ina todo s los Widgets y deja el Widget de Buscar. Añade (botón Añadir un widget) el
widget de Categorías haciendo que se muestre como desplegable y que se muestren la can-
406 IM PLAN TACi ÓN DE A PLICACIO N ES W EB
tidad de en tradas. Añade también el widget Menú personalizado y a ñade el menú crea do
en la Práctica 9.3 para mostrar las páginas estáticas de esa práctica.
Páginas
H§ ·h:l"
Est ru ct ura d el M enú
Sobr e nu pueble
Sobre mi
Sobre m i
'MAl' "H
UNI DAD 9. GESTiÓN DE LOS COMPONENT ES, CO NT EN IDO Y APAR IEN CIA DEL CM S - PRÁCTICAS 407
Júpiter es el mas quinto planeta del Sistema So lar y el mas grande . nada menos
que 318 veces mas grande que la Tierra
ío
Europa
Ganimed es
Caiisto
Marte
Mart e es el cuarto planeta del Sistema solar y el mas cercano a la Tierr a Como
nuestro planeta. es rocoso . aunqu e cuatr o veces mas pequeño
Se cree que la gran cantidad de hierro que pos ee es la causante de su color rojo.
Satélit es:
Fobos
Deimos
• Tomando como refer en cia la imagen super ior crea un tem a desde cero , escribiendo tú todo
el código.
• La barra superior de color negro mid e 60 píxeles de altura, contiene cuatro enlaces:
- El título Mi blog , es un enlace a la página de inicio.
- A la página sobre mi , página está tica creada en la Práctic a 9.3.
- A la página sobre mi localidad.
408 IMPLANTACIÓN DE APLICAC IONES W EB
- Al panel de administración.
• Después se muestran los post realizados. En la imagen se mu estran los post que se supone n
escritos tras realizar la Prácti ca 9.1. En los posts, el título sale centrado dentro de una barra
de color gris, la imagen de! conte nido sale alinea da. No se muest ran más datos de los post y
se mo strarían todos los post escritos.
• Si cambiamos la ruta y ponemos el permalink a un post concreto, entonces se mostrarán solo
los datos de ese post
• Cuando e! te ma funcione , consigue que Word Press en el cuadro de temas mu estre un a pre-
visualización del mismo.
[1] Crea un a nu eva carp eta dentro de wp -content/themes en la raíz de WordPress. La Ilama-
remos Mi tema.
[2] En un editor de texto escribe el siguiente código CSS y guar da rle bajo el nombre style.css.
#c a becer a{
position:fixed;
left:0;
top :0;
width: 100%;
he i ght :60px;
background-co lor:b lack;
co lor: white ;
}
#t i t ulo{
posi t i on : a bs olute ;
top :0;
l e ft: 0 ;
}
#menu{
pos it ion:absol ute;
top:30px;
right:0;
}
a{
color:white ;
text-decoration : none;
}
a :hover {
text-decoration: unde r l i ne ;
}
UN IDA D 9. GESTIÓN DE LOS CO MPONENTES, CONTEN IDO Y APARIENC IA DEL CMS - PRÁCTICAS 409
#c ue r po{
position:fi xed;
left:0 ;
top:60px;
width :100%;
bottom: 0 ;
bac kground-col or:whi t e;
color :bl ack;
ove r f l ow-y : s cro l l ;
}
#c uerpo h1 {
marg i n : 0;
text-align : center;
background-color :gray;
color :white ;
}
i mg {
fl oat: l e ft ;
margin-rig ht :5px;
}
Co n esto hemos decidido la aparie n cia de las págin as. La barra superior será una capa con
ide n tificador cabecera, dentro se coloca el título y el menú, después otra capa mo strará el
con te n ido en el qu e ya hem os indicado cómo qu erem os mo strar los títulos.
[3] Lo mínimos ahora sería hacer la página in dex.ph p qu e contiene el bucl e de WordPress
de reco gida de entradas. Sin embargo, par a mayor claridad dividimos el código en tre los
arc h ivos de cabece ra, pie y de bucl e (ver Figura 9.19 "Estructura básica habitual de los temas
de WordPress", en la págin a 383). El código del arc hivo h eader.php es:
<!OOCTYPE html >
<ht ml lang=" es " >
<he a d>
<me t a c ha r set=IUTF-8" >
<l i nk re l=" stylesheet" hr e f ="<?=get_stylesheet_uri()?> " >
</ he a d >
<body >
<d i v i d=" ca becera" >
<d i v i d=" t i t ul o " >
<h1><a hre f ="<? =get_site_url()?> " >
Mi blog </a>< / h1>
</ d i v >
410 IMPLANTAC iÓN DE APLICACIONES WEB
</ body>
</ ht ml>
[5] Y, finalmente, el código del archivo index.php . Éste invoca a los anteriores archivos y lee
cada post:
<?php get_head e r ( ); ?>
<d i v id= "c uer po " >
<?php
if ( have _pos t s( ) ) {
while ( have _pos t s ( ) ) {
the_post();
?>
<h1> <?= the _titl e() ?></ h1 >
<?php
th e _content ( );
}
}
?>
</ d i v>
<?php get_footer(); ?>
[1] Desde el menú de ad mi nist ración ve a Conte nido -Agregar conteni do -Página básica.
[2] Escribe la primera págin a, por el título Sobre mi y el conte nido que quieras.
[3] En el apartado Opciones de menú in dica Proporciona un enlace de m enú y marca ecomo
eleme nto padr e del en lace el Menu principal.
[4] En opcione s de ruta URL escri be sobre-mi para disponer de un permalink a la página.
[6] Guarda la página y repite los pasos para la página sobre mi localidad.
• Integra tanto la página de búsqueda com o la de resultados para qu e ten gan apariencia cohe -
rente con el tema actual.
La publi cación impli ca no solo el texto e imágenes qu e se desean publicar, sin o otros
aspectos com o: la apariencia general, navegación hacia contenidos, permisos de usuario
y la navegación hacia esos contenidos desde los menú s princi pales.
Las taxo nomías permiten asignar té rminos , que luego se ut ilizan para orga nizar y hacer
búsqu edas en el sitio.
• La public ación de come ntarios es una de las bases de los sitios administrados por CMS.
Se tiene que establecer una política sobre como publicar y ver comentarios, de otro
modo no s arr iesgam os a tener po cos comentarios o a ten er mucho spam en ellos.
• Los temas, tanto en WordP ress como en Drupal , se pu eden person alizar. Para ello hay
qu e conocer la estructura y arquitec tura completa de los tem as en cada CMS.
414 IM PLAN TACi Ó N DE APLICACION ES WEB
ADMINISTRACiÓN DE SITIOS
GESTIONADOS POR CMS
OBJETIVOS
- Realizar copias de seguridad de un sitio - Identificar los diferentes tipos de usuarios
gestionado por CMS de un CMS
- Realizar ta reas de exp o rtación e - Crear usuari os esta blecie ndo los permisos
importación de datos entre diferentes que poseen dentro de un sitio web
sitios gestionados por un CMS administrado por un CMS
- Realizar actualizaciones del sistema CMS - Establece r medidas que incremen ten la
- Reconocer la importancia de las políticas seguridad del sitio web
de admin istración de usua rios
CONTENIDOS
10.1 GESTIÓN DE USUARIOS EN 10.4 .2 PRINCIPAL ES MEDIDAS DE
WORDPRESS SEGURIDAD
10.1.1 INTROD U CC iÓ N A LO S USUAR IOS DE 10.5ADMINISTRACIÓN DE USUAR IOS EN
W O RDPR ESS DRUPAL
10.1.2 AÑA D IR USUARIOS 10.5.1 TIP O S DE USUARIO S EN DRUPA L.
10.1.3 AU T ENT IFICACiÓ N DE USUAR IOS RO LES
10.1.4 PERFIL D EL USUARIO 10.5.2 AÑAD IR CU ENTAS D E U SUARIO
10.1.5 APRO BAC iÓ N DE PO ST 10.5.3 EDITAR ROLE S Y PERMI SO S
10.1.6 BLOQ U EO DE PO ST 10.5.4 C REAR Y EDIT AR U SUAR IO S
10.1.7 REVI SION ES
10.6 GEST IÓ N DE LOS DATOS EN DRUPAL
10.2GESTIÓN DE LO S DATOS DE 10.6.1 CO PIAS D E SEGU RIDA D Y
WORDPRESS EXPORT AC iÓN DE DATO S
10.2.1 COPIAS D E SEGURIDAD EN
10.7 OTRAS TAREAS ADMINISTRAT IVAS EN
WO RD PRESS
10.2.2 EXPORTA R LOS DATOS D E DRUPAL
WOR D PRESS 10.7.1 CRON
10.2.3 IMPORTAR DAT O S EN WORDPR ESS 10.7.2 INF O RMES DE DRU PAL
10 .7.3 AC TUALIZACIONES
10.3 ACTUALIZACiÓN DEL SISTEMA
10.8SEGURIDAD EN DRUPAL
WORDPRESS
10.3.1 IN TRO DUCCiÓN A LAS 10.9 PRÁCT ICAS RESUELTAS
AC TUALIZACION ES 10.10 PRÁCT ICAS RECOMENDADAS
10.3.2 ACTUALIZAR EL SISTEMA
10.3.3 ACTUA LIZAC iÓN DE OTROS 10.11 RESUMEN DE LA UNIDAD
ELEM ENTOS 10.12 TEST DE REPASO
10.4SEGURIDAD EN WORDPRES S
10.4.1 ¿POR Q U É HAY QUE PRESTAR
AT ENC iÓ N A LA SEGURIDAD?
416 IMPLANTACi ÓN DE APLICACIO NES W EB
Ade más, util izar un único usu ario tien e sen tido en sitios we b personales, pero en siti os cor-
por ativos lo habitual es qu e tengam os muchos usuarios. En WordPress existen cinco tipos de
usua rio s. Es fu ndamen ta l reco no cer sus capaci dades antes de em pezar a gestionar usua rios:
• Adm in istrado res (Administrators). Pu eden rea lizar cua lquier ta rea so bre la instalación
de WordPress. Por razo nes de segur ida d deberí a haber una sola cuenta de usu ario que
funcione com o administrador.
• Editores (Editors ). Contro lan todos los asp ect os qu e ti en en qu e ver con en tradas (posts)
y páginas. Pu ed en crear, eliminar y modificar cualqu ier post o págin a, ade más pue den
realizar cua lquier tarea administrativa sobre etique tas (tags) y categorías, pueden su bir o
elimi nar archivos m ultim edia y pue de n moder ar los comen ta rios .
Las únicas tareas qu e qu eda n fuera de sus capacidades son las qu e tienen qu e ver con el
back-end del sitio web : ap arienc ia, m enús, plugins, t emas, gestión de usu ar ios, etc.
pu ede realizar esta tarea) . Aparece el panel de creación de usuarios, en él deberemo s indi car lo
siguiente :
11 Nombre de usuario. Ese nombre será el que tendrá que indicar para acceder al panel de
administración de Wor dPress.
Perfi l. En este apar tado indicam os el tipo de usuario (Editor, Autor, Colaborador,etc)
que estamos creando.
Además pod emos hacer qu e se envíe por cor reo la contraseña del usuario. El propio usuario
podrá modificar su contraseña cuando se aute ntifique en el sitio.
• Modificar la contraseña. Sin duda el aspecto más impo rta n te de gestión de un usuario
qu e no sea administra dor.
10 .1.5 APROBACiÓN DE PO ST
Los usuarios colaboradores , como ya se ha comentado, pu eden publicar post, pero estos que-
dan a la espera de la aprobación de un editor o un adminis trador.
418 IMPLANTACiÓN DE APLICAC IONES WEB
Hace solo dos meses ,r.l ~_t.0~ 1 ere apenéls un a manch a borro sa)" ah ora nos
encontramos con imágenes espectaculares. Fo rm ato
Figura 10.1 : uevo post reali zado por una usuaria de tipo Colaborador.
Como se observa en la Figura IO.r, la funcionalidad de! panel de un usuario colaborador está
disminuida y el botón de Publicar se sustituye por Enviar para revisión.
Los editores y administradore s cuando tienen entradas pen dientes, apa recen así mar cadas en
la lista de entra das . En el menú de entra das hay un aparta do dedicad o a las entradas pen dientes.
Para aprobar estas entradas hay qu e hacer clic en el título y en el panel de edición , que aparece a
continuación, hacer die en Pu blicar.
~ L: 0 r
•
Figura 10. 2 : Lista de en tradas. Se observa un post pendiente y otro bloqueado.
Puesto que podemos tener diferentes usuarios con capaci dad de edit ar posts, es posible que
ocurran conflictos. Si un usuario editor está modificando un artículo y otro lo hace tam bién, la
cuestión es ¿Cuál de las modifi caciones actúa? En WordPress solo un usuario tiene permitido en
cada momento editar e! artículo.
Así si un usuario está editando una entrada, e! resto de editores con ectados verán un icono
en forma de candado sobre esa entrada, además, se indica quién está realizando la notificac ión
UNIDAD 10. ADMINI STRAC iÓN DE SIT IOS GESTIO N A DOS PO R CMS 419
(véase Figura IO.2). Cuando ese usuario deja de edita r, porq ue abandona la página o cierra el
navegador , el resto verán que el post está liberado. Hay retraso en estas notificacion es porque
WordPress hace la compro bació n de bloqu eo cada 15 segu ndos .
Lo qu e sí pu ede hacer otro editor es tomar posesión de la entra da para edita r el artíc ulo. Pero
lo qu e ocurre entonces, es que las modificaciones del ot ro editor qu edan anuladas. Esto pu ede
iniciar una guerra sin fin, solo cabe ape lar a la respo n sabilidad de los editores. Desgraciadamente
WordP ress no tie ne mecan ismo s para dar pod er a uno de los editores en caso de ten er que decidir
qué versión final queda. Lo que sí pued e hacer el administrador es rebajar el nivel de los usuarios
(de editores a autores por ejemplo).
Una de las grandes habi lidades de Wor dPress es el hecho de que mantiene todas las revision es
que se han hecho sobre una entrada.
Revisio nes
~ J o rge 5a ;¡C ~ EZ, nace 9 -run s {29 29U TCu110 , 201 ~í {5.\ j 0: '1 8 :07 } [.Aut og uardadoJ
Lu isa Ma:tf'1, hace 13 , 1; :15 (:9 79UT C u!!o . 20 15 (:i''' O:-, 3:5 ":' }
LUisa h.'¡ arf:1 , h ace ¡ 3 rn .ns (29 29t íTC 'u lro , 20 15 :,1i ~ 0:í 3:5G) (.A utoguar d adc J
1",1a:"1 50 víll ad a. hace 3D mins (29 2 ~~ UTC jul<:, 20 "5 te,; 09: 56 : 5 ~)
Figura 10.3: Pan el de revisiones mostr ando los cambios rea lizados sobre un post
Car onte es el may or satélite de Plut ón . Casi descon ocído has ta la llega da de la ~ c uobceoe el. 29 jul de 2015 © 10:01
Figura 10.4 : Pan el Publicar disponi ble al edita r una ent rada. Se ha resalta do e! en lace para exam ina r las revi-
sione s de la entrada-
420 IMPLANTACiÓN DE APLICACION ES W EB
Además, en el pan el Publicar podem os ver exacta me nte qué cam bios se han realizado. Para
ello en este pan el hay qu e hacer die en el enlace Explora (Browse) disponib le en el apartado
Revisiones .
Tras hacer die en ese enlace, un nu evo pan el de Com paración de revisi ones nos mu estra con
detalle los cambios que se han realizado en cada revisión. Pod emo s avanzar de un a a ot ra con los
botones Anterior o Siguiente.
o
r' .>
Titulo
Cont enido
El pane l compara revisiones con secutivas. Pero hay una casilla con el text o Compar ar do s
revision es cualesquiera (Compare any two revisions).
Si no estamos conformes con los cambios ocurridos desde una determinada revisión, el botón
Restaurar esta revi sión (Resto re this revision) vue lve a dejar la entrada exactamente en el estado
que tenía cuando se realizó esa revisión .
Podemos limitar el espacio que gastan las revision es modificando el archivo wp-config.php de
configur ación de WordPress:
,
10.2 GESTION DE LOS DATOS DE
WORDPRESS
10.2.1 COP IAS DE SEGURIDAD EN WORDPRESS
Ind iscutiblem ente un a de las labores fundamentales del ad minis trador de un sitio con gran
cantidad de conte nido es la gestión de las copias de segur idad de los dat os. Perder los conte nidos
de un sitio que mu eve gran cantidad de datos es, simplemente, catastrófico. De ahí que ten gamos
que tener una políti ca ser ia y m eticulosa a este respecto.
Tener una bu ena administración en materia de copias de segur idad supone que en caso de
desastre podamos reinstalar absoluta mente todo el conte nido en el menor tiempo posible.
Realmente las cuestiones sobre las copias de seguridad, en el caso un sitio WordPress, debe n
incluir :
• Toda la información en la base de datos. Teniendo en cuenta que se trata de una base de
datos MySQL y que esta base de datos dispone de muchas opciones al respecto.
• Temas , plugins, archivos subidos, código modificado manualmente, etc. Todo ello se
encuentra en el directorio wp- conte nt en la raíz de WordPress.
No es difícil realizar un a cop ia de segur idad, de hech o con hacer copia de la base de dato s
MySQ L y de todo el sitio WordPress, ya ten emo s un a copia en condiciones de ser restablecida
sin ningún probl ema. Eso sí, debemos hacer copia a menudo para perder la mínima información
posible. Teni endo en cue nta qu e los posts y com entarios pu eden cambiar constante me nte , lo
ideal es ten er una solució n automa tizada al respecto.
• Hacer la copia manualm ente cada cierto tiempo. Eso sí, el destin o de la copia debe ser
un a computador a propia. Aún mejor, si la copia la realizamos hacia un dispositivo de
alma cenamiento exte rno qu e, posteriormente, guardem os en sitio seguro.
• Hacer copia diaria hacia un servidor diferen te del nuest ro a través de un servicio
automa tizado.
El más famoso es Vaultpress (https://vaultpress.com /plan sl) qu e por 10 0 $ al año rea liza
copia diaria y mantien e un archivo de todas las versiones de nuest ro sitio en los últimos 30 días.
También se utilizan mu cho solucio nes de backup de sitios web completos, como CodeGuard qu e
serviría no solo para copi as de segur ida d de WordPress sino de cua lquier otro tipo incluidos sitios
gestionados por otros motores CMS como loomla o Drupal.
4 22 IMPLANTACiÓN DE APLICAC IONES WEB
Fina lme nte , tras hacer clic en el botón Descargar el archivo de exportació n (Download Export
File) se descarga un archivo XML con los datos.
En principio ese archivo se puede utilizar para importar datos él otros CMS. Pero hay pocos
siste mas que lo permitan directam ente. En muc hos casos tendremo s q ue uti lizar plugins o utili-
dad es de terceros.
Importar
co nver so r de etiq\"e~d~ ) ""Ti ~ "'{ ::- "\-' f ":'.~'= ~" ~~F ..~ : !-T'S:" '· t . ..r , ,, ', w-, H ~ , ~ ! ' ." :_ ~-~~, E"" '::¿' :_ ~'j- <\•. e- '';::''T;,; ~ ',":f .-¿
cetegcnas
El proceso es un poco más complicado, ya que los datos pueden proceder de otra instalac ión
de WordPress o de otro CMS. Los pasos son :
[1] Ir a Herramientas (Tool s)-Im po rt ar (lmpo rt) me nú desde el cual se instala un plugin encar-
gado de realizar la tarea. Este plu gin es distinto dependiendo de donde pro cedan los datos.
Podemos importar datos de otr a in stalación de WordPress, de una fuente RSS, de Blogger,
de Tumblr, etc.
[2] Elegimo s el sistema desde el que hemos exportado los dato s. Podremos instalar el plu-
gin correspondiente si no lo habíamos instalado. Y tras la instalación pod remos elegir el
archivo con los datos exportados. Si el plugin ya está instal ado, podremos directamente
elegir el archivo de exportación.
UNIDAD 10. ADM INI STRACiÓN DE SIT IOS GESTIO NADOS POR CMS 423
[3] Tras elegir el archivo podremo s hacer clic en Subir archivo e importar.
[4] Después se nos harán pre guntas sobre los datos elegidos. Lo malo es que esas pr eguntas
n o está n traducidas. Lo principal que nos pr egunta es si se deben crear en nu est ra base de
datos, usuarios que tengan el mismo nombre de usuario qu e en la otr a instalación.
También se nos pregun tará si se descargan los archivos adjunta dos a los post (como las
imágen es por ejemplo). Si dicho s archivos no están dispon ibles, la importación fallará. Si no
adjuntam os los archivos, los post se quedarán sin sus imágen es, vídeos, etc.
Impart WardPress
Assign Aut ho rs
,: ~'C~, U~'J r [5 crec tec Di WNd;>ro ~ ,,, n ev, pes sworc ...,,1t-e rZ'l:::yr 'i ge-.<:r .'Hed ¡¡'IÓ toe . . b·. c -e-s re te v, ' be ~ ...: a~ 5UD;;<'¡b€- ~ "~a:'1 v,;'I'( (r¡ ~"1¡;:'ng tf",e nto'. use"-s d~:,, ¡ ¡s
....i1r e ne( I':,s ;;'"!
Figur a 10. 2 : Panel de imp ort ación de datos pro cedentes de otra instalación de WordPress. En este caso los
post originales eran de un aut or y se les vamos a asigna r a uno de los au tor es de la nu eva ins talación .
[5] Tras responder adecua dame nte a las pr eguntas, hacemos die en Submit. Conviene (como
no s recordará el propio WordPress resta blecer las contraseñas de los usuarios que se han
importado.
ImpOrtan te.:';", I~~ d~ la srn..ai :;( ;0'1. oo- ta.c-. '- "' 3' : 3-~ :'"I -escerdc oe r.. base C ~ catos y k -.,:"o.:: S . . ecesuas ¿;YUCilnar.. :e ecru..· z..ere- ,, 51.. l ~ pil~- ...¿¡ .,,, - cco ex
.\ : :¡; ;:. ::< :- ':!:\" ', 'r; '"¡:'' '
Aklsmet
Temas
- r we nty Fiftee n
:... ..
~
Twenry rc urteen
: :stás usa-do"s ve-s ón ~ ? :'.c,.:ú:a a 1. ~
Figura 10.3: Panel de act ualizacio nes de un a versión de WordPress que no está al día
Tras estas tareas lógicas, la actualización de WordP ress se pu ede realizar en el apartado
Actualizaciones (Updates) que se encuentra debajo del enlace al Escri tori o (Dashboard) en el
panel de administración.
UN IDAD 10. AD M IN ISTRAC IÓN DE SIT IO S GESTIONADO S POR CMS 4 25
En ese enlace tenemos la posi bilidad de act ualizar ta nto el sistema Wor dPress como todos los
eleme ntos del siste ma sobre los que se haya detectado que no está n actualizados. Actualizar el
siste ma es hacer dic en el botón Act ualizar ahora (Update no w ). Después se descarga de Intern et
la nu eva versión y se instala. Un pan el de información nos avisará de los cambios en la versión;
los fund amentales son los relativos a errores.
• Revisar los permalinks, comprobando que funcionan com o antes. Implica también com -
prob ar el archivo .htaccess. Los ajustes de permalinks (Ajustes-Enl aces perm anen t es)
estarán com o al principio.
• Comprobar los plugins. Puede que necesit emos instalar de nu evo alguno s de ellos o bien
actualizarlos.
Puede ocurrir también qu e algún compone nte no fun cion e con la versión nu eva de WordPress,
y si te nemos dependenci a de él, encontrarn os con un verdadero problema. El con sejo es intentar
buscar opciones al componente; si es un tema, simpleme nte no utilizarle. La razón es qu e, siem-
pre que sea posible, conviene ten er al día el siste ma WordPress.
Las mejoras operativas qu e aporta n las nu evas version es de WordPress y que suelen tra er nu e-
vas funciones y usabilidad al siste ma, pueden no ser razón suficiente para querer actualizar una
aplicación web qu e está fun cionando correctamente. Pero también están las mejora s de seguri-
dad que son las que eliminan errores en las versiones antiguas y que continuam ente se renuevan
en las nu evas versiones. Ten er un a versión mu y desfasada, pu ede tr aer como conse cuencia que
tengamos un agujero de segur ida d en nu estro siste ma .
la cua rta parte está n creadas con WordPress, lo qu e le convierte indudabl em en te en la tecno logía
más popular para desarrollar sitios y aplicacion es web.
Esto tiene una clara co ntrapartida. Las instalaciones con WordPress son un o de los objetivos
claros par a las personas qu e se de dican al ata que de serv ido res en In ternet. La facilidad de uso de
WordPress para rá pida m en t e cre ar un sitio web de una ap ar iencia bastan te profesion al, hace qu e
to do tipo de personas act ú en co m o admi nistradores de sitios web WordPress; pero , sin sabe rlo,
dejan pue rta s abiertas al acc eso in de bido de terceros.
Es irresponsable no dedicar ti empo a la segur idad. Cua nt o m ás con te nido y usu arios pa rt ici-
pen en él, con más razón. El ata que a un sitio web, deja una muy m ala imagen par a el propietario
del mi smo; en muchos casos irr ecuperable.
Desgraciad am ente la garantía de te n er un sitio realm ente blin dad o ante cualquier ataque no
existe, pero hay que, al menos, hacer todo lo qu e est é de nuestra parte par a mi nimizar los riesgos.
• No utilizar admin como nombre para el usuario MySQL. WordPress utili za un usu ario
qu e ti en e pri vilegio s su ficientes par a escribir en la ba se de datos en la qu e se guarda la
información de WordPress (véase 8.2.2 "Instalación manual de WordPress", en la página
323). No conv ien e utilizar admin como nombre de ese usu ari o. El ata que típico hacia la
base de dat os de WordPress es siem pre intentar obte ne r la co ntraseñ a de ese usuario. Si
el usu ario no tiene un nombre pr ed ecible, es m uc ho menos probable el éxito del ataque.
• Utilizar contraseñas muy complejas. El ataque por fue rza bru ta, consiste en in tentar
acceder a un siste ma probando con todas las contra se ñas posibl es. Cu an to más cornpl e-
jas sean las contrase ñas, más tardan esos programas en ob tener éxit o. Una buena con-
traseña debe ser lar ga, in corporar números, letras m ayúsculas, minúsculas y símbolos.
• Limitar el número d e intentos al con ect ar . Es la medida qu e me jor funciona ante ata-
qu es de fuerza bruta para dar con la contrase ña de un usuario. Cuando un usuario se
conecta a WordPre ss, en princ ipio , tiene un número infinito de intentos. Podemos ha cer
qu e, tras el número de intentos qu e indiquemos, se bloquee la IP del usu ari o duran te un
tiempo. Tras ese ti empo lo podría volver a intentar (n o deb emos blo qu earla del todo,
po rque puede ser un u su ario válido que se ha equivocado).
• Ocult ar la versión de WordPress. Si estam os uti liza n do una vers ión qu e t enga un agu-
jero de segur idad, los atac an tes que con ozcan el problema sabrán como sobrepasar
la seguridad del sitio. H ay atacantes qu e buscan por Internet versiones con cretas de
WordPress que tien en agu jeros de segur idad.
U N IDAD 10. AD M IN ISTRAC iÓN DE SIT IOS GESTIONADO S POR CM S 4 27
La versió n de Wor dPres s se conoce porqu e hay una etiqueta meta qu e lo indica, concre -
ta mente (ejem plo para una in stalación de Wor dPress versión 4.I.2) :
Una simple bú squ eda en Internet de este código con la versión que se quiere atacar n os
mo straría miles de entrada s, es decir, miles de sitios con esa versión concreta.
Evitar la escritura de esa etiqueta es fácil, simp leme nte hay que escr ibir un a línea al final
del código del archivo functions.php del tema que se esté utilizando. Por ejemplo, si
util izam os el tem a twenty fifteen, la ruta, desde la raíz de WordP ress sería:
wp -contentjthemesjtwentyfifteenjfunctions.php
Un ata cante qu e se dé cuenta de este detalle, puede requerir la entrega del archivo
wp- con fig-php y ver el códi go de este crític o archivo. Normalme nte , si requ erimo s la
entrega de este archivo, no se ve na da en el código fuente, pero si el intérprete de PHP no
está fun cionando, verem os tod o el código y, con él, el usuario de la base de dat os MySQL
y su contrase ña.
La solución más sencilla es mover ese archivo fuera de la raíz de do cumentos del servidor
web, al directo rio padre. WordPress pu ede bu scar el contenido de ese archivo cuando
está en el dir ectorio padre de la raíz y pu esto que está fuera de la raíz, el servidor web no
puede entregarlo de ninguna manera.
En el caso de qu e no podamos optar por esta solución (por ejemplo, si alojamos nu estra
web en un servidor del qu e no tenemos acceso), pod emo s editar el ar chivo .htaccess de
la raíz de WordPress y escribir este código, el cual hace qu e Apache prohíba el acceso al
archivo de confi guración:
Usar códigos aleatorios para las claves . Como se ha explicado en el Apartado 8.2.2.3
"Configuración de la instalación de WordPress. Archivo wp-config.php", en la página 326.
428 IMPLANTACiÓN DE APLICAC IONES WEB
• Utilizar SSL. Nuevamente es un conse jo lógico para cualquier web, no solo de tipo
\VordPress, que recoja dato s de usuario . Para ello, nu estro servidor debe utilizar una
firma digital yeso impli ca configurar nu est ro servidor web. Si esto es posible, entonces
podemos indi car a WordPress que las conexi ones de usuario conecten por SSL mediant e
esta línea en el archivo wp-c on fig.ph p:
def i ne( 'FORCE_SSL_LOGIN' I tr ue);
Si deseam os que to do Wor dPress utilice SSL, entonces además añ adiremos esta linea:
de fin e (' FORCE_SSL_ADMIN' I tr ue);
Sin embargo , Dru pal incorpora roles a fin de indicar a cada usuario lo qu e pue de realizar. Y
eso ya especifica mucho más a cada usuario. Pode mos diferenciar entre editores de un depa rta -
mento concreto, revisores de contenido, ad minis tra dores de segundo nivel... Francamente ten-
drem os un a jerarqu ía a medid a. Los roles se pu eden incluso asociar a seccio nes específicas de l
sitio. Además, pod em os asigna r más de un ro l a cada usuario.
Los roles, en realidad , aglutina n per mi sos. Y los permisos es lo que concreta las acciones que
un usuario pu ede rea lizar. Los permi sos establecen cosas mu y concretas , por ejemplo, si un usua-
rio puede a ñadir un ar tículo, si pu ede aña dir come ntarios, si puede ver la información personal
de ot ros usuarios, etc.
• Solo los adm in istradores. Con lo cua l la administración de cuentas est á centralizada.
Es el escenario más habitu al, menos flexible pero más controlado para evita r altas de
usuarios no desea das.
Los visitantes. Cualquier visitante se podría dar de alta como usuario dire ctamente.
Esto dispararía el número de usuarios y po dría dar cabida a usuarios no deseados. Salvo
en páginas en las que se requiera un gran dina mismo en la creación de contenidos que
impidan pod er verificar a cada usuario (páginas wiki, por ejemplo) o en entorn os centro-
lados de red, n o se suele utilizar.
UN IDAD 10. ADM IN ISTRACiÓN D E SIT IOS GEST IO N ADOS PO R CMS 429
Cuando un visita nte se puede dar de alta, siempre conviene ped ir verificación por corre o
electr ónico, lo cual imp lica que el visita nte se da de alta , indi ca su corre o y despu és
recibe en él un correo con un enlace que deb e utilizar para verificar la cuenta. Ento nces
ya podrá usar su cuenta.
Los visitantes, pero con aprobación de los administradores. Se pu eden dar de alta los
visita ntes, pero para que la cuenta se active, debe de ser apro bada . Cuando un visita nte
se da de alta en esta forma , aparece bloq ueado en la lista de usuarios
Esta forma, fun ciona igual qu e la anterior, salvo en que hay un paso previo. Cuando el
visita nte se da de alta indicand o su nombre y emai l, recibe un em ail ind icando que la
cuenta de usuarios se debe apro bar. El usuario aparecerá como usuario bloqu ead o en
la lista de usuarios del pan el administrativo. Cuando un adm inistrador le desbloquea,
recibe otro ema il indicando su desbloqueo junto con el enlace que permite autentific ar
el email.
Para los visita ntes qu e se dan de alta ellos mismo s, es imp erativo que al menos tengan qu e
verificar su correo elect rónico. De otro modo , estamos abri endo la puerta a la creación de cuentas
spam y de otro tipo , aparte de que no tendríamos ningún m edio verificado para comunicar con
los usuarios.
El envío automatizado de los correos a los usuarios impli ca que el mó dulo de PHP para el
envío de correos (PH P mai l) funcione correctam ente en el servidor. De no ser así, debemo s insta-
lar módulos, el más habitual es el módulo SMTP, a través de los cuales podem os indicar los datos
para el envío de una cuenta de la qu e dispongamos y que asociaremo s a Drupal para el envío de
correos.
Esta decisión sobre la gestión de los usuarios se rea liza desde Confi guración-Configuración
de las cuentas en el menú de adminis tración. En el panel de configuración se pueden realizar
toda s estas tareas sobre las cuentas:
• Decidir como se dan de alta los usuarios, según lo explicado en los párrafos anteriores.
Automati zar los permi sos de ad ministrador cuando se a ñadan nu evos módulos.
Indicar qu é inform ación per sonal se pid e a los usuarios, el nombre de su directorio de
imágenes, com o se prese n tan, qué imagen pre determinada asigna mos a los usuarios por
defecto.
Texto de l m ensaje de bienvenida para los n uevo s usuarios. Pode mo s persona lizar el
mensaje para cada uno de los tipos de alta .
• Datos que se piden al usuar io y con tro les qu e se u san para ello.
Para a ñad ir un rol, basta con, en la part e infe rior del panel, escribir el nombre del rol y hacer
clic en Añ adir r ol.
Ca da rol , di spone del enlace editar per m isos, qu e es el encargado de indicar qu é permisos
asigna m os a cada ro l.
También podemos asignar a los usuarios permisos a través de bo tón Permisos en ese panel.
El botón m uestra una tab la con todos los ro les y los permiso s posibles a asign a r, un a casilla de
verifi cación permit e as ignar o n o el permiso al rol.
• Elegir el idiom a del usuar io (en el que le ap ar ecer án los m enús y paneles de Drupal).
Ese mi smo panel de usuari os podemos edita r a un usu ario , eligiendo ed itar usuario. Al editar
podremos:
Modifica r el ro l
Una de las opciones más interesantes es el uso de NodeSquirrel que es un servicio de copias
de segur idad en la nube (al est ilo de CodeGuard o Vaultpress) creado por la empresa Pantheon
(creadores también del módulo Backup & Migrate) y que ofrec e almacenar los datos de un sitio
de hasta 5GB de manera gratuita. A partir de ahí tien e diversos precios.
----------
Sistema de arch ivos o
C \b<lC~kllP
Una rete de l »s re me d e e rctuvo s loca ! dond e se a lm ace n ara n lo s 4IChl."CS pncecc s Drupa! de be ped e r esc r-bu e n el \ re o e be 'iN ecce s.c :e de sde
la we b v ee la ayuda er tfne a para m ás '''.f o rm ac ,cr: sobr e te mo prctegel lo s UC hh-OS cr.cee c.s
Figura 10.4: Pan el de sistema de archivos estableciendo la ru ta al sistema privado de arc hivos. Será la que se
use al alm acen ar las cop ias de seguridad
Copia rápida
us e tbrs fo r m 10 r u n 51mp le r"ll r'lua l beckc cs of vo ur dete b ese eod f iles \'151t th e !'el e r aoe fo r m o r e he :p USI"g t h l s m cdvte
QUICK BACKUP
üackup my Default Databes e .. ro Manual Backups Director, ... uSlng Detaclt Settínqs ...
Figura 10.S: Panel Backup and Migrate mostrando las opcione s rápidas para hacer copias de seguridad
Cop ia avanzada
El botón , en el mism o pan el, Advanced Backup, nos permite ajusta r más opcion es al hacer la
copia . Además de las opciones vistas en la copia rápida podremos:
Ind icar el nomb re de los archivos y el form ato del archivo comprimido.
• Establecer opcion es de compresión AES (requi ere instalar el módulo de compres ión
AES).
• Cada cuánto se realiza la copia. Por defecto, aparece cada día (Baekup Every I Days).
Además, pod emo s indi car qu e se haga con el administrador eran de tareas de Dru pal o
con otras opcion es (normalmente se elige el cron de Drupal),
• Podemos indi car que al hacer la copia se eliminen las anteriores (casilla Automatically
delete old baekups). Lo cual es un riesgo porqu e si dejamo s una sola copia, hay más posi-
bilidades de qu e pu eda fallar.
Destino de la copia, norm alm ente el directorio de copias program adas (Seheduled
Baekups Direetory ).
11 Podem os guardar la cop ia en un segundo destino a la vez (casilla Save a eopy to a seeond
destination i
Desd e el pane l vemos las copias programadas o podemos crear nuevas programacione s
(Create new schedule)
• Pod em os indi car más fuentes para hacer copias de seguridad media nte el enlace Create
new source. Al hacer clic podemos indicar otros dir ectorios y otras bases de dato s (aparte
de la qu e usa Drupal). En ambos casos deberemos indicar los dato s necesario s. Para
ha cer copia de bases de dato s MySQ L, los habituales de nombre de usuario con permi-
sos de acceso a la base de datos, contraseña, nombre de la base de datos y nombre o IP
del servidor de la base de datos.
Podemos modificar (override) o crear nuevos destinos (Create a new desti nation). Es en
este apartado donde podremos indicar como destino s de posibles copias de segur idad:
Directorio FTP .
Cue nta NodeSquirrel.
• Cuen ta de alma cenamiento Amazon S3.
Correo electrónico.
• Un directorio en el servidor que aloja a Drupa!.
Modificar o a ñadir perfiles.
Para saber qu é acciones rea lizará cron , tendremo s que abrir el archivo cron .ph p que estará en
la raíz de nuestro sitio Drupa!.
En el menú Configuración, dentro del aparta do Sist ema tenem os un enlace para gestionar
cron. Desde ese enlace pod emos ejecuta r cron inmediat am ente y programar cada cuanto se eje-
cuta automá tica me nte. Además, se nos indica la última vez qu e cron se ejecutó.
UN IDAD 10. ADM INISTRACiÓN DE SITIOS GESTIO NADOS POR CMS 435
En todo caso cua ndo aparece una nueva versión, ya sea del núcl eo o de componentes de
Drupal, conviene leer lo qu e aporta la actualización para saber si es impe rativa su instalación por
incorporar parche s de segur idad.
Mientras las instalaciones de temas y módulos se hacen directam ente desde el pan el de actua-
lizacion es sin hacer nad a más qu e clic en Descargar act ualización, las actualizaciones del núcleo,
requieren estos pasos.
[1] Hacer copia de segur idad completa (de la base de dato s y de los archivos) de Drupal
[4] Borrar todos los dir ecto rios de Drupal excepto el directorio sites.
[6] Acceder desde el navegad or http ://servidor/update.php, donde servidor es el nombre y ruta
a la raíz de Drupal en nu est ro servidor.
Hay un módulo muy interesante llamad o SecurityReview qu e tra s ser instalado y activado ,
nos permite en el apartado Informes del menú de administració n, ejecutar un informe qu e nos
muestra los riesgos de seguridad que tiene nuestra instalació n de Drupal.
~ RUN
Untrusted role s d o no t hev e ed rnims tre nve o r tr uste d Dru pal permi ss ions . Detaüe s Sklp
PHP files In the Dru pe! file s dir ecr c rv ce n nc t be executed . Det alle s ~ I.:IP
Dan ee ro us tecs wer e not found In e nv submm ed con tent (flelds l. Detalle - S ~ :IP
o So rne files and dir ect c ries in vou r m stal l are v.nt eble bv tbe se -ver . Detalles Skip
Unt rvs ted U SefS a re not e llcw ed ro inpu t d an perous HTMl t ec s, Deteue s SklP
On l ~' sa fe e xte ru rc ns are allowe d fc r u ploa ded files and ime e es , Detalles Skrp
Figura 10.6: Resultado de un in forme de l módu lo Security Review avisan do de tres prob lem as de segur idad
Ante cada ítem del informe disponemos del enlace Detalles, qu e nos permite leer (eso sí, en
inglés) cómo solucionar el problema y lo que implica no hacerlo.
En la parte superior, la pesta ña de Ajustes permite configurar exactament e lo que este módulo
verifica. Es fundamental mar car qué roles de usuario son in seguros y cuáles no .
• Private files directory is outside the web server root. Indica si el directorio de archivos
privado s está fuera del servidor. Para arreglarlo hay que camb iar la rut a de los directorios
de archivos privados, qu e se usan , por ejemplo, para copias de seguridad (véase Apartado
IO.6.I.I "Realización de copias de seguridad", en la página 431).
11 Errors are written to the screen. En este caso avisa de que los errores en el código de
Drupal salen po r pantalla. Para evitar hay que ir a Registro -Desarrollo-Mensajes de
err or y marcar Ninguno. Si estamos m odificando Drupal no es conveniente marcar esa
casilla.
Sornefiles and directories in your install are writable by the server. Avisa de qu e se pu ed en
modificar archivos de Drupal. Por ello, es m ejor cam biar los permiso s, por ejem plo, con
el comando chmod.
• Untrusted users are allowed to input dangerous HTML tags. No conviene qu e los us ua -
rios utilicen el formato Full HTML. Para evita rlo , hay que ir al aparta do Configuración-
Autoría del contenido-Formatos de texto y desactivar de ese format o a los us ua rios qu e
no son seguros. Solo los adm in istradores deberían pod er usar Full HTML:
• Only safe extensions are allowed for uploaded files and imaqes. Indica que los cuadros de
adjuntar im agen so lo admi te n formatos seg uros (GIF, JPEG YPNG). Para arreglarlo hay
que revisar los cam pos de im agen en cada tipo de conte nido.
438 IMPLAN TACi ÓN D E APLICACION ES W EB
...
10.9 PRACTICAS RESUELTAS
Práctica 10.1: Estab lecer cuentas de usuario en WordPress
• Crea un usuario editor, dos autores y un colaborador.
• Haz qu e cada autor y el usuario colab or ador publiqu en una entrada.
• In tenta qu e el colabora dor modifique su pr opio ar tículo.
• Usa el editor para modificar algo en los tres artículos.
• Co mprueba qu e el autor ve las modificaciones.
• Co nsigue que los usuarios pueda n publicar comentarios so lo si se dan de alta en el siste ma al
me nos como seguidores.
• Esta blece una política que pro hí ba qu e se publiquen comentarios que conte ngan la palab ra
"violenc ia".
• Comprueba qu e los autores no pued en añadi r cat egorí as a los post, pero sí etique tas . Usa el
usuario editor para establecer cat egorías en los artículos escritos.
[1] Supone m os iniciada la sesión con el usuario administ rad or. Para crear los usuari os vamos al
apa rta do Usuarios del panel de administración y elegimos Añadir nuevo
[2] Creamos una primera usuari a de nombre luisa, elegimos un e- rnail cualquiera y la contra -
seña. Dejam os sin rellen ar el re sto . Marcamos a luisa como Edit ora.
[4] Añ ade a Carlos como colaborador. Comprueba en el pan el de usuar ios qu e todos los usua-
rios ap ar ecen con el per fil apro piado:
::ntrada,
~ jefewp 1835 2
r.O¡.:irtc5
pedro
[5] Cierr a la sesió n con el usuario adm in istra dor; bast a ir al icono su peri or derecho (que tien e
el nombr e de usuario) y elegir Cerrar sesión.
UN IDAD 10. AD M INISTRAC iÓN DE SIT IOS GESTIONADOS POR CMS - PRÁCT ICA S 439
[6] Entra con el usuario Pedro y entra en el pan el de entradas. Observa que solo puedes ver las
entra das ante riores, pero no modificarlas.
[7] Escrib e una entrada cualq uiera (desde Entradas-Añadir nueva). Observa que no pu edes
establecer categ orías (sí utilizar los qu e ya hay) pero sí palabra s clave.
[9] Cierra sesión y observa la página como usuario visitante. Observa que no se ha publicado
la entrada de Carlos.
[10] Conecta como Luisa (usando la ruta del servidor más /login). Edita el artículo de Carlos
(aunque esté bloqu eado, toma poses ión) y a ñade nuevas categorías relacionadas con su
texto .
[11] Vuelve a cerrar sesión , entra como Carlos. Observa sus entrada s (aparecerá la que escribió
antes) . Inten ta m odificarla para comprobar qu e no pu ede (aunq ue sea el autor de la misma).
[12 ] Cierra sesión y en tra como administrador. Vete al apartado Ajustes-Comentarios. Activa
la casilla Los usuarios deben registrarse para escribir comentarios. Además en el cua dro de
moderación de come ntarios escribe la palabra violencia. Guarda los cambios.
[13 ] Cierra sesión y vete a la página principal. Int enta escribir un come ntario, observa qu e no
puedes.
[14] Ahora entra conéc ta te como usuario Carlos y vete a la portada. Deja un come nta rio en una
entrada. Observa que el comentario debe apro bars e.
[16] Escribe como Carlos un segundo come ntario en otra entrada. Fíjate que ahora pu edes per -
fecta mente publicar el come ntario.
[17] Fina lmente, escr ibe un te rcer come ntario qu e conte nga la palabra violencia. Observa qu e
el come ntario queda pendiente de m oderación (por utilizar un a palabra marcada como
probl em áti ca).
[2] Desde el aparta do Usuarios- Per m isos, en la barr a de admi nistración , haz clic en el bot ón
lB
[3] A ñade los roles: editor, autor, colaborador y suscri ptor,
• Editor: Todo s los permisos con los come ntarios, ver el pan el administrativo, usar el for-
mato Full HTML, asignar todos los permisos que tienen que ver con Bloqu es, Menús,
nodos (Node), las rutas (Path) , revisiones, búsq ued as (Search) y taxonomía.
• Autor: Además de lo ya marc ado podremos editar nu estros propios comentarios, ver
contenido propio sin publica r, ver revisiones del contenido, y crea r conte nido propio,
borrar contenido propio y edita r contenido propio de [os artíc ulos (ignoraremos foros y
contenido est ático).
[7] A ñade a la usuaria Luisa como editora, activa la cuenta y no hagas nin guna notificación a
su correo.
J e fe:d ~ 1.?10 acnvo ed mm lst rat or 4 d ias ':'9 mins hace 4 veas
U NID AD 10. ADMINI STRACiÓN DE SIT IOS GEST IO NA DOS POR CM S - PRÁCTI CAS 441
[13] Cierra la sesión . Conec ta como Susana y pu blica contenido. No te debería dejar. Publica un
comentario
[1 4] Conecta con Luisa e intenta modificar los com entario s y entradas anteriores. Para ello
desde el menú de administración haz dic en el enlace Conte nidos.
[15] Conecta con Marta e intenta mo dificar la entrada de Carlos. No podrá. Intenta modificar
sus propios artíc ulos. Sí pu ed e, dispo nemos de la pesta ña Editar.
[16] Haz lo mismo con Carlos y observa las diferen cias: no puede editar nin gún artículo.
[1] Ve a la dire cción htt ps://www.dr upaI.org/project/secur itv review y descarga el archivo
comprimido que dese es. O bien, coge la dirección y descárga la desde la consola mediante
wget.
[2] Como administrador ir al apartado Módulos y hacer clic en Instalar nuevo módulo. Haz
dic en Instalar desde archivo y elige el archivo descargado.
Dru pal no tien e límite en el número de tipos de usuario, ya qu e se pu eden crear indefi-
nidamen te nu evos roles.
Puesto qu e las entradas y páginas las pu eden haber editado varios usuarios, se permite
realizar seguimiento de las misma s, e inclu so anular algunas de esas revisiones.
Establecer un a política de copia de segur idad es vital para todo sitio gestiona do por
CMS. Se pued en realizar copias a mano , pero se dispone de módulos qu e automa tizan
esta tarea e incluso de servicios de alojamiento en la nube, para nuestras copias.
• Es posible exportar dato s de una instalación a otra e inclu so, de forma mu y limitada,
expor ta r datos de un CMS a otro.
11 Siempre hay qu e tomar medidas de segur idad de alto nivel en los sitios administ rado s
por CMS las cuales incluy en :
Nombres crípticos par a bases de dato s y usuario s.
Contraseñas mu y complejas.
Evitar dar salida a mensajes de err or del siste m a y minimizar la información sobre el
mismo.
O cultar y/o denegar el acceso a los archivos de configur ación.
Proteger contra escritura el códi go fuente .
Usar códi gos de sal aleatorio en el cifrado de las claves.
• Cifrar la comunicación mediante SSL.
Evitar dar posibilidad de escribir HTML de altas capacidades a usuarios no confiables.
Permitir subir solo archivos con exte nsion es controladas.
444 IM PLA NTACi Ó N DE APLICAC IONES WEB
¿Cuáles de las siguientes medidas de segu - 1 j .- ¿Qué personas pueden crear cuentas de
ridad no son necesarias para un sistema usuarios en Drupal?
WordPress? <' I Solo los usuarios con rol de
". Utilizar contraseñas muy complejas administrador
.) Ocultar la versión de WordPress LJ Los usuarios con rol de administrador
( 1 Quitar el acceso al archivo de y los propios visita ntes
configuración L) Los usuarios con rol de administrador
d) Hacer qu e el administra dor n o se y los propios visita ntes, solo con la
llam e admin aprobación del administrador
e) Todas las medidas anteriores son ¡J) Los usuari os con rol de adm inistra dor
necesarias y los pro pios visitantes, solo si verifi-
can su e-rnail
10.- ¿Qué tipos de usuarios tiene Drupal?
1 S.- Para hacer copias de seguridad en Drupal...
Aute ntificados y anó nimos
a) Hay qu e utilizar la herramienta
,J) Admi nistra dores , editores, autores y
Backup and Migra te que es parte del
anó nimos
núcleo de Drupal
L) Adminis tradores, editores, au tores,
b) Hay qu e instalar obligatoriame nte
autentificados y anó ni mos
módulos de te rceros, como por ejem-
d) Aute ntificados, visitantes y anó nimos plo Backup an d Migrate
H. - Al act ualizar módulos en Drupal... e) Hay qu e utilizar servicios exte rnos
a) Hay qu e hacer copia de seguridad de ajenos a Drupal
archivos y datos el) Se pu eden hac er manualmente, sin
IMPLANTACiÓN DE APLICACIONES
DE OFIMÁTICA WEB
OBJETIVOS CONTENIDOS
- Reconocer la utilidad de las ap licacio nes 11.1 APLI CACI ON ES DE OF IMÁT ICA W EB
de ofimá t ica we b 11.2 VENTAJAS Y DESVENTAJAS
11.2.1 VENTA JAS D E LAS HE RRA MIE NTA S DE
Distinguir las ve nt ajas y desve nt ajas que OFIMÁT ICA WEB
11.2.2 DESVENTAJAS DE LAS H ERRA M IENT AS
aportan los servicios de ofimática en la
DE O FIMÁT ICA W EB
web 11.2.3 CO NSECU EN CIAS DE LAS VENTAJ A S Y
LAS DESVENTAJ AS
- Identificar las princ ipales soluciones de 11.3 SO LUC IO NES DE O FIMÁTI CA W EB
ofimática web 11.3.1 GOOG LE DO CS. GOOG LE APP S
11.3.2 M ICROSO FT O FFICE ONLlNE.
- Agregar usua rios a servicios de ofimática MICROSO FT O FFICE 365
en línea 11.3.3 ZO HO DO CS
11.3.4 TH IN KFREE ONLlNE
Está cambian do la forma de trabajar y ahora se posibilita qu e los tr abajado res utilicen sus
propios dispo sitivos , en lo que se conoce com o estrategia BYOD Brinq Your Own Device (tra e t u
propio dispositivo ). Se inte nta qu e el acceso a In tern et de estos dispositivos, garantice el acceso a
los documentos de trabajo.
El software de oficina más utilizado indudablemente es Microsoft üffice. Tra bajar con docu -
mentos de Office siempre ha te nido la pega de que el dispositivo que utilic emos debe te n er in s-
talado este software. Conocedores de este hecho y de las posibilid ades de la computación en la
nube, aparecieron aplicaciones SaaS capaces de crear y modificar documentos online, en el qu e el
úni co requi sito es disponer de un navegador o una aplicació n móvil qu e acceda al servicio.
La influencia que han te nido este tipo de herramientas en estos a ños ha producido el término
Office 2.0 par a hablar de las herrami entas de productividad online en el mundo de la oficina.
Actualmente estas herramientas se concentran en productos que intent an cub rir todas las
necesidade s de uso profesional de los usuarios y además de las herr ami entas ofimá ticas clási-
cas (procesador de text os, hojas de cálculo, software de prese ntaciones, agenda...) incl uyen otr as
relaciona das con los servicios fundamentales en la nu be como el correo electrónico, calendario,
centralización de contactos, espacio de almacenamiento de archivos , chat, etc.
• Mín im os requisitos de almacenamiento. Todas las solucio nes de ofimática web in clu-
yen espacio de almacenamiento en la nub e.
Acceso multiplataforma. Podemos tra bajar en los documentos in depe ndien te me nte de
cuál sea nu estro sistema, sea Windows, Linux, Unix, Mac, Android, etc.
• Mayor seguridad . Podemos matizar esta venta ja, pero lo cierto es que no te nemos qu e
preoc upa rno s por los viru s qu e puede albergar el documento, ya qu e no estamos alma -
cenando los documentos en nu estro s ord enadores. El control de acceso tambi én suele
ser más fiable porque las empresas que ofrec en esto s servicios, en principio, pose en
mecani sm os más avan zado s de seguridad.
• Facilidad para la colaboración. Una de las claves del éxito de este tipo de herramientas.
La centralización de los do cumentos permite qu e puedan ser utili zado s por difer entes
personas que pu eden aportar sus modifica cion es. La mayoría de herramientas, además,
ofrece contr ol de revisiones qu e nos posibilita visualizar las modificacion es al do cu-
mento realizadas por cada usuario , inclu so al instante.
Esta es la razón por la qu e los equipos de tipo thin client, no terminan de despegar. La
mayoría de personas prefieren seguir teniendo instalada su herramienta ofimáti ca favo-
rita; lo qu e no impide que también ut ilicen herramientas de ofimática online.
Menor tradición. Cada vez tien e meno s peso esta desventaja, pero sigue siendo influ-
yente. La forma de tr abajar de los usu ario s que llevan a110s y a ños utilizando las herr a-
mientas clásicas como Microsoft Office u OpenOffice, son difíciles de cambiar. Este
hecho hace que muchas personas que trabajan con gran fluide z con las herramientas
clásicas, sean menos productivas utili zando herramientas online. Aunque el cambio
parece sencillo , no lo es tanto precisamente para aquellas personas que utilizan fluida-
mente el software de oficina clásico.
• Copias de seguri dad. Es un probl ema debido al mismo enfoque del punto anterior. Si
todo lo guardamos en un servido r externo a nu estra empresa ¿cómo recup erar la infor-
mación en el caso de qu e nos demos de baja del servicio? Es un aspecto a veces olvi-
dado, pero fundame ntal. Debemos de poder tener en local el docume nto, de otro modo
depende mos en exceso de l servicio.
• Compa tibilida d. En base a esta misma idea, utilizar un formato de do cumentos privado ,
que solo es utili zable por el servicio de ofimática web con creto qu e estamos usando,
puede restringir de forma dra mática la posibilidad de cambiar a otro servicio, al no
poder convertir los docum en tos.
"
11.3 SOLUCIONE S D E OFIMATICA WEB
11.3.1 GOOGLE DOCS, GOOGLE APPS
Google Docs fue el servicio qu e revolucionó este área. No fue el primero (aunque sí de los pri-
meros) pero sí el que tuvo más influ encia. Su virtud principal es la sencillez de uso. Por otro lado
es totalmente compatible con los documen tos procedentes de Micro soft Office, lo que soluciona
la conversión de documentos ya existentes.
Actualmente Google Docs ya no es ind epend iente, sin o qu e se tr ata de un servicio integrado
en Google Drive. Google Drive es el servicio de almacenamiento online de la empresa Google,
el cual ofrece espacio grat uito, amp liable mediante pago men sual, y la creac ión de documentos
de text o con formato , hojas de cálcu lo, presentaciones y formularios en línea para reca bar dat os.
UNIDAD 11. IMPLANTACi ÓN DE APLICACION ES DE OF IMÁTICA W EB 451
Permite tr abajar sin conexión, de mod o qu e, cua ndo cree mos docum entos en nu est ro ord e-
nad or, éstos se sinc ronizan automáti cam en te en el espacio en la nub e. Es accesible desde la web
y además a través de aplicaciones mó viles. Es capaz de abrir docum entos de Micros oft Office y se
integra con el resto de servicios de Google. Esto último, junto con su interfaz sencilla y minima-
lista, es su gran baza.
~
Editar
e- . .... ~
Ver Insertar
100'·; ~
•
Formato Herramientas
11
Ayuda Yodos los ccmentance ':'iI'M
12 ~ 3
Googl e Apps es un servicio online de productividad empresarial que integra a Goog le Orive (y
por lo ta nto a Google Oocs) junto con el correo electrónico (Gmail) , calendario (Google Calendar),
servicio de conferencias (Hangout), contactos (Google Contacts y Google+) y creación de sitios
web ta nto privados como públicos (Google Sites) . Es un servicio de pago para empresas y gratuito
para entida des educativas.
El espacio que se utiliza para almace nar los do cum entos en la nube es el que ofrece Microso ft
a través de OneDrive, con el que mantien e un servicio integral. OneOrive proporciona espacio
gratuito (actualmente r6 GB) qu e, una vez más, se puede am pliar mediante pago.
Microsoft Office 365 es el servicio de suscri pción (median te pago , aunque es gratis para ins -
tituciones educativas) a las herrami en tas de productividad para empresas de Microsoft. Aporta
más espac io, comparado con el servicio de Office Online y más servicios : correo, control de cuen-
tas , cha t online y calendarios empresariales. Hay opciones (incre mentando el precio) de utilizar
el clásico Micro soft Office en su versión habitual de escr itorio.
452 IMPLANTACiÓN DE APLICAC IONES WEB
Figura 11.2: Aspecto de Microsoft Office Word Online, prác ticam ent e indi stin guible respecto a su versión de
escrito rio
Office Online permite trabajar sin cone xión y su ventaja sobre el resto , es el conocimiento qu e
la mayoría de usuarios posee n del software Micro soft Office. Además, puesto que OneDrive apa-
rece integrado en las últimas versione s de Windows (especialme nte en Windo ws (O), los usuarios
de Microsoft pu eden dir ectamente ut ilizar el servicio.
Micro soft posee otro producto de pago muy conocido llamado SharePoint que permite crear
un servidor de documentos en la Intranet o la nube empresarial privada. Al igual qu e las herra-
mien tas en la nube, pod emo s crear, exam inar y almacenar documento s de Microsoft Office vía
navegador web. La diferen cia es qu e solo pod emos acceder si esta mos conectados en [a Intranet
de la empresa .
Figura 11.3: Aspec to del proc esador de texto de Zoho O nline . Recue rda muchísimo a Microsoft Word.
U NIDAD 11. IM PLANTACiÓ N DE APLICAC IONES DE OF IM ÁTICA W EB 453
Las aplicaciones mantien en un a esté tica y funciones basadas en Microsoft Office, por lo qu e
la curva de aprendizaje es casi in existente.
A pesar de su rap idez y funciona miento correc to , la dificulta d para competir con Google y
Microso ft que tien en un a pléyad e espectac ular de usuarios, graci as al éxito de sus sistemas ope -
rativos, ha hecho qu e el en foque de Zoho se dirija al mundo em presarial, apor ta ndo soluciones
online para aplicaciones empresariales de alto nivel.
Comparado a los anteriores parece meno s ligero y utiliza el plugin de Java qu e lo hace, ho y
en día, bastante incómodo . La aparien cia qu e utiliza es la de las versiones de Micro soft Office
anteriores a la 2 0 0 7.
Como le ocurre a Zoho, a pesar de ser tambi én gratuito no cons igue rivalizar con los servicios
de Google y Microsoft. Por ello se ha especiali zado en un servicio de ofimática web en Intranet
que se llama Thinkfree Server y que compite directamente con Micro soft Shar ePoint. Permite
la creación de un servidor interno capaz de ofrecer un servicio en la red empresari al de ofimática
web.
Utilizar Google Orive , y por lo tanto Google Oocs, requiere poseer una cuenta con Google.
Es fácil que un usuario actual ya tenga una cuenta con Google ya que la mayoría de usuarios de
móviles Android tienen que crear una cuenta en la nube de Google para acceder a sus servicio s.
También tendremos una cuenta de Google si nos hemos dado de alta en la red social Google+ o
en cualquier otro servicio de Google.
En todo caso, si no tenemos una cuenta de Google, el proceso para el alta es el siguiente:
Ca glc
[2J Hacer clic en el en lace Crear cuenta. Si tuviéra mos cue nta ya , bastaría con in dicar el correo
y la contrase ña,
[3J A continuación se no s pedirán los dato s para la cuenta, los cuales son :
Nombre y apellidos
E-mail. En pr in cipio Goog le n os crea un nu evo bu zón de correo en su serv icio Gmail.
También podemos crea r la cuenta de Google con nuest ro pro pio correo, en ese caso ten -
dremos que verificar dicho cor reo. En to do caso , el email que indiquemos será nuestro
nombre de usuario para Google.
• Contraseña. Como siempre, lo más compleja posible para evita r ata ques de fue rza bruta
y hacerse con la au toría de nuestra cuenta.
• Teléfono móvil. Es un dato im por tan te y casi obligado hoy en día para hacer lo que
se conoce como verificación de dos pasos. En est a verificación, cada ve z que algu ien
intente acceder a los servicios de Google con nuestro nombre de usuario, recibirá un
código que se envía al tel éfono móvil asociado a la cuenta. Solo se podrá a acceder a la
cuenta in dicando ese código.
Aun que esto hace el acces o más lento es, sin duda, una for ma más segura de accede r a
nuest ra cue nta.
• Dirección de correo electrónico actual. Las razones para indicar este dato son seme-
jantes al anterior. En caso de pérdida de la contraseña, o de que ne cesit emos verificar la
propiedad de la cue nta, se utiliza esta segunda cuenta para probar que somos rea lmente
los propietarios. No es obligatorio.
La pantalla de Google Drive es nuestro escritorio online desd e el que podemos revisar, crear,
mo dificar y, en definitiva, reali zar todas las acciones con nuestros documentos y archivos en
el espacio qu e tenemos con Google Drive.
I . . [J Mi unidad
• p-acncas-bases-de-dat
*i
Destacado
Papeler a
Figu ra 11.5: Eje m plo de asp ect o de Google Dr ive co n algu n as car petas y arc hiv os
Al entrar en Google Drive tenemos un escritor io virt ual que controla los archivos y documen-
tos qu e te ne mos en Google Drive . Desde esa interfaz podremos:
Navegar por los documentos y carpetas. Los cuales aparecen en el panel principal de la
página. Se navega por ellos igual qu e en cualquier explor ador de archivos de un Siste ma
Operativo. Para crear do cumentos en una ub icación específica, debemos llegar hasta la
carpeta concre ta en la que deseamos examinar o crear nuevos docum entos.
• Visualizar documentos. Basta simp lemente hacer doble die en ellos. Depe nd iendo del
tipo de archivo se podrá visua lizar o no. Normalmente para los tip os de archivo qu e
no son de Google Docs, un m en ú nos permiti rá elegir varios servicios de Internet para
abri rlos.
• Crear nuevas carpetas. Simpleme nte haciendo clic en Mi unidad (me n ú superior) y eli-
giendo Nueva carpeta. La carpet a se crea con el nombre que indiquem os y dentro de la
carpeta que estuviéramos exam ina ndo .
• Subir archivos. Coogle Drive sirve para almace nar todo tipo de archivos , para subirles
desde la página web basta con hacer d ie en Mi uni da d-Subir archivos y despu és elegir
el o los archivos que deseemos.
Subir carpetas. Funciona igual qu e la opción de subir archivos, pero consiste en elegir
una carpeta. La carpeta y todo el contenido se subirá a nuestro espacio de Coo gle Drive.
• Crear nuevos do cumentos. Basta hacer d ic en el botón Nuevo y elegir el tipo de docu-
mento a crear.
• Mover archivos o carpetas. En el mism o men ú secundario come ntado, pod emo s elegir
la opción Mover a, la cual realizará la acción sobre los archivos y/ o car petas selecciona -
dos. Se no s preguntará a dónde los moveremo s.
Podemos ta mbién dir ectamente arrastrarlos con el ratón a la nu eva ubi cación .
• Copiar archi vos o carpetas. Se realiza de la misma form a, pero eligiendo Copiar en
el menú. Se puede hac er también arrastrando si mantenemo s pu lsada la teda Ctrl del
te clado a la vez que hacem os el arrastre con el ratón,
La interfaz no s será familiar pu esto qu e se parece a los program as ofimáticas de escritorio, por
lo tanto no es difícil crea r y editar documentos.
UN IDAD 11. IM PLANTACi Ó N DE APLI CACION ES DE OF IM ÁT ICA W EB 457
Google Docs guarda el documento automáticame nte y mantiene las versiones previas. Otras
opciones qu e tien en los editores de Google Docs son:
l1li Descargar en otro formato (me nú Archivo) como Micros oft Office, PDF u Open Office.
Imprimir (menú Arc hivo)
Hay que ten er en cuenta qu e tendremos dos versiones del archivo al realizar esta acción: el
original y el archivo convertido a form at o de Google.
La man era de con seguirlo es hacer clic en el botón (r que se encuentra en la zona superior.
Después se hace clic en Configur ación y, finalmente, en Trabajar sin conexión. Está op ción solo
está disponible en el navegador Chrome de Google, ya qu e es el único que incluye los plu gins
necesarios para realizar esta acción.
Una posibilidad más interesante es descargar Google Drive como aplicación para el ordena-
dor de escritor io que ten gamos. Eso perm ite, tras con figurar el pro gram a, elegir un dir ectorio en
nues tro orde na dor (que tiene qu e ser Windows o Mac) par a qu e se sincronice con nuestro espa-
cio de Google Drive en la nube. De este modo si nacemos un cambio a un documento en Internet,
el pro gram a lo det ecta y ha ce qu e en nu estro escritorio también aparezca .
Al instalar el pro grama simplemente se no s pregunta rá por nuestra cuenta en Google. Entonces
se creará un directorio dentro del directorio de nu est ro perfil de usuario.
Tras la in stalación de la aplicación , ésta se arranca cada vez qu e se ini cia sesión en el siste ma .
Entonces comparará el esta do de los archivos en el equipo con los archivos en la nube y sincroni-
zará ambos dejando la última versión (en caso de conflicto dejará dos copias del mismo arc hivo).
Podemo s incluso instalar la aplicación en varios ordenadores, de modo qu e en todos ellos dispon-
gam os de los archivos en un directo rio del siste ma.
458 IMP LAN TACiÓN DE APLICACIONE S W EB
y Fevcritcs
.". precnc es-b eses-de-detc s 7: 7' :~'i ~ 2 1.~~ Cerr ete de ;HC ~ I .- C~
,... On eür ive .,./ pr ecnces -prcqrem ecrcn ;'<' 7: :2 ~ 5 21.2':' Ce-pete de dd11/ (' 5
~ certe -fc rmel.pdí ::1 '~ "' : :.~ 5 E,;:: Documente .... .:i cb. . ?: 1:8
t,& Grupo en el hoga r ~ Cu ente s.qsheet 3~ .:-"' '2 ~ ~5 1~. ~é H cje de calcu le d.. 1 f~B
G.-'-- c um ph mierttc-tr irnest re - l .dc cx ~1':: :. ~:' :.1 ;. 2 t I' cc u-nent c ce1.-11 ,. 1~ t-B
Jorqe Senchez m desktc p.lnl
Descargas ./ GUICi de l prof escr.qslid es
Documentes ~ Liste d e te rees .qd c c
~ Entorne de red ./ Programa curso 2:'15.gslides ; .... - ' : ~. ;: 1 ; ~'" ;' r ~s "t' ! ~!:i{f)~ e-~. • fS
JI: EScritorio ~ rhe o.doc ::-. : ~ ''::: '' 5 ' ? :' ~ Docum ent e de /,11... 2: n:
Ll Fevontc s Q rhec .do c.qdoc ?' ''":-:; 2: : 5 2 ). ¿~ I'o cu men tc oe So.. I KE:
GN53
L Gcc qle Orive
./ precuc es -beses-o e-o et c s
./ precnces-p rcq remeocn
Figura 11.6: Ejemplo de aspecto de la aplicación Drive mostrándose desde el explorador de archivos en un
equipo Window s
Esta form a de trabajo da un a mayor agilidad cuando varias person as deben de realizar un
docum ento conjuntamente .
Personas
la Cancelar
El trabajo colabora tivo lo ini cia un usuario de Google Drive que crea un documento de tipo
Google Docs (sea del tipo que sea). A partir de ahí desde el escrit orio se puede hacer clic en el
botó n de compartir ( +,,:. ) o, si se está editando el documento, hacer clic en el botón Compartir.
Después un pane l nos permite ind icar los usuarios con los qu e compar timos nu estr o docu-
mento y de qué man era lo hacemo s. Podemos compartir de estas tres formas:
Para editar. Pued en cambiar, a ñadir o borrar el con te ni do del do cumen to.
• Para comentar. Pued en ver el documento y añ adir come ntarios. Pero n o modificar el
mism o.
Para ver. Solo podrán ver el contenido del documento.
En ese mismo pan el, podrem os indicar un men saje. Ese men saje aparece con el email que les
llegará a su bu zón de correo (cuya dirección hemos indicado en el panel).
Tras pulsar enviar, llegará al bu zón de las personas indicadas un enlace hacia el documen to
(además del mensaje que hem os escrito).
Tambi én podemos indicar person as concretas y Google se enca rga de enviarlas la invitación
con el enlace.
Finalme nte , el enlace Avanz adas no s permite especificar aún m ejor qu é hacer con el enlace.
Podremos:
Podemo s hacer qu e se pueda acceder sin siquiera tener el enlace al documen to . Se podrá
bu scar el do cumento a través de los bu scadores de Internet (como el propio Google).
Podemos también especificar que sean los usuarios qu e conozcan el enlace (opción por
defecto). También podemos especificar qué usuarios concretos pu eden utilizar el enlace.
• El acceso al do cumento se puede explicita r también en el cua dro (si dejamos solo leer o
dejamo s escribir).
I
"'~J:.l., : ~l ~ ~; ~ - ~. ~ ~- •
Lista de tareas •
Archive Ed-a r Ver Insen ar Forma-o Herramientas Tablil Complementos A~udil liI ~ .. CO'Tlent.,I(l'~
Trt b i.lc M I " n ,f Y .f;. ' o-o lJ l.l!, .
Lista de tareas
Preparar prcqr amaoón del curso
Rev isar prcqramacmnes de otros curso
Redactar la nueva propramao ón
• Revisa r la prog~a maCI Ó~O
Realizar primera:
Determna- la tem ponzao ón de la ~
Crea' Excel para los cá'culosl
Figura 11.8 : Docum ento que tr es usuarios escriben a la vez. Aparecen marcados los cursores de los ot ro s dos
usuarios
Cuando un usuario escr ibe un come ntario, todos los demás le ven (el texto con comenta-
rios aparece resaltad o de color amarillo) y, si tienen permi so, pueden in cluso responder. Así los
come ntarios de Coogle Docs pasa n a establecer una forma de chat muy interesante qu e ayuda al
debate a la hora de tr abajar un documen to.
Li st a de t area s
Luisa I':"W
1: ...7110-¡
OK
Figura 11.9: Docu men to con un come ntario. El com enta rio se ha respondi do dos veces.
Cuando un com entario se da por solucionado , se puede hacer clic en el botón Resolver que
apar ece a la derecha del comentario . En cuanto resolvamos un comentario , deja de aparecer en el
documento, pero seguirá esta ndo disponible en el botón de Comentarios.
Los demá s usuarios con permisos de escrit ur a (o visualización) ven el texto escrito por el otro
usuario, tal cual.
Si embargo si hacem os clic en el botón , Edición pod emo s elegir el modo Sugerencias. En
este mo do los cambios qu e hagamo s al do cumento no son definit ivos. Tienen qu e ser apro bado s
por n osotros u ot ro usuario que tenga permiso. Al escribir en este modo, lo qu e escribamo s apa-
rece resaltado con un subrayado especial de colores, el resto de usuario s también distingue este
tipo de escritur a por el color
Li st a de t are as
A parti r de ahí, dos botones permiten aceptar o cancelar la sugerencia. Si aceptamos, lo que se
ha escrito pasa a ser definitivo. Si cance lamos, se anula el texto. Cualquier usuario con permi sos
de escritura puede aceptar o cancelar sugerencias.
Cada revisión no s muestra los cambios realizados y quién y cuándo lo hizo. Pod emos, incluso,
rest au rar una revisión, dejando el documento en el estado exacto qu e estuviera en ese momen to.
I U sta de tareas
Archive Ed;:ar Ver
•
Insertar Fcrma:c Herramientas f abla Complementos Ayuca
tfistDriaIde n!'Iisiones x
Hoy 11 09
Hoy,1 ] :S4
. l "",a ":'W
. J :;<f9t" ~ ¡;>: "f':
Restaurar es ta rE'y¡sion
31 cejulio 22 05
Lis t a de tareas • L ~1i! ~ ¡;..y,
• ,' ~;)-'- S! ·.: ·· ~ ~·
·
• ~ .~~ J ' >,'S
Redactar la nueva prcqramacrón
Revosar la procramacón en coruuruo 31 ce julio 21 ~ 3
.: Reauzarpnmera ~~ -:. /. : ~";
,
11.5 PRACTICAS PROPUESTAS
• Las venta jas de este software son : mínimo s requisitos de instalación y almacen am iento,
centralización del documento, acceso multip latafonna, segur idad y facilidad par a
colaborar.
11 Tien en también desventajas, tod as ellas relacionada s con el hecho de que los documen-
tos no está n bajo nu estro co ntrol, dependemos del servicio qu e esta m os utili zando.
g Pueden ser tan importante las desventaj as, qu e podemos optar por servicios de ofimátic a
para el acceso dentro de la In tranet empresarial gracias a software como por ejemplo,
SharePoint de Microsoft.
11 Los más import antes servicios de ofimática web son: Google Docs, Microsoft Office
Online , Zoho Docs y Thinkfree Online. Todo s ellos son sem ejante s, aunque dominan el
mercado los do s primeros.
• Google Docs solo requiere para su uso una cuenta con Google . Accediendo al servicio
Goog le Drive podremos crear y editar documentos.
- ¿Cuál de las siguientes no es una des ven- - ¿En Google Docs si dos usuarios intentan
taja de la ofimática web? escribir al mismo tiempo?
Copias de segur idad No se permite escribir al mismo
Comp atibilidad t iempo, el documento se bloquea hasta
qu e el primero que lo abrió, lo cierr e.
Menor tradición
[1\ No se permite escribir al mismo
Centralización de los documentos
tiempo si ocurre, el documen to se blo-
"i. ¿Cuál de las sigu ient es solu cion es para qu ea h asta qu e amb os usuar ios cierre n
empresas online son gratuitas? sesión.
Office 365 el Se permite escri bir al mismo tiempo,
pero no sabrem os que varios usuario s
Office Online
han estado escribiendo a la vez.
l) Coog le Docs
<1) Se permite y seremos con scientes de
Coo gle Apps qu é usuarios están cone ctados y lo qu e
:l - Los archivos creados con ser vicios de ofi- está n haciendo.
mática web se guardan normalmente... l.· ¿Cuál de estas herramientas permiten tra-
~I En serv ido res en Intern et bajar omine?
En el ordenador del usuario 1.) Coogle Docs
En la cue nta de correo del usuario Micro soft Office Online
No se guarda n, solo se pueden utilizar 20ho Docs
mientras n o se cierre n _ I T hinkfree Online
Todas las ante riores
-------------------------------------------------- ~- --- - ---- - - -------------------
Implantación de
Aplicaciones Web
www.garceta.es