Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 484

Implantación de Aplicaciones Web

Implantación de Aplicaciones
Web
Jorge Sánchez Asenjo

Implantación de Aplicaciones
Web
Im planta ció n de Ap lica ciones Web

Jorge Sánchez Asenj o

I SBN: 978-84-1622 -830 -0


I BERGARCETA PUBLICACI ONES, S.L., Madri d 20 15

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.

COPYRIGHT © 2015 IBERGARCETA PUBLICACIONES, S.L.


info @garceta .es

Implantaci ón de Ap licaciones Web

© Jorg e Sánch ez Asenjo

1. ' edición, 1. ' impresión


OI: 471/2016
ISBN: 978-84-1622-830-0
Deposito Legal: M-24648-2015
Imag en de cubiert a : © Andrés Sanz Mulas

Im pres ión:
PRINT HOUSE, marca registrada de Copiar, S. A.

I MPRESO EN ESPAÑA - PRINTED I N SPAI N

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.

Cada unidad está escrita la siguiente forma :


• Se exponen los contenidos teóricos de la misma tratando de fome ntar la aplicación
inm ediata de los mismos, para lo cua l se proponen algunas activ idades.
Tras los contenidos se plantean prácticas que se explican y resuelven en el propio texto y
que se proponen para realizar a la vez que se estudia la parte teórica. Hay, además, otras
prácticas propuestas, cuya solución está a disposición de los docentes que deseen uti li-
zar esta obra como libro de texto en sus clases.
Hay una página final de resume n de la unidad con las ideas más interesan tes vistas en
la mis ma .
• Al final de cada unidad se han elaborado preguntas de tipo test para evaluar la compren-
sión del texto.

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.

[3] Programación en PHP, unidades de la 3 a la 6. Se estudian las bases de la programación en


este lenguaje. Siendo un lenguaje tan exte ns o y con tantas posibilidades, el conocimiento
completo del mismo daría, no para un libro sino para bastantes más.

No obstante, no se ha pr etendido pasar por encima del lenguaje. La materia cubierta en el


libro permite crear aplicaciones web propias interesantes y facili tar la posterior profundi-
zación en el lenguaje, si el lector así lo quisiera.

[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.

Jorge Sánche z Asenjo


@jorgesancheznet
íNDICE GENERAL
UNIDAD 1. CONCEPTOS SOBRE APLICACIONES WEB 1
1.1 EVO LUCiÓ N DE LA WEB E INTERNET 2
1.1.1 PERSPECTIVA H ISTÓR ICA. EL ÉXITO DE LA S AP LICAC IO NES WEB 2
1.1.2 HI STO RIA DE LA WEB 3
1.1.3 MOMENTO ACTUAL 13
1.2 APLICACIONES WEB 14
1.2.1 ¿Q U É ES U NA A PLICA C iÓ N WEB ? 14
1.2.2 VENTAJ AS DE LAS APLICACIONES WEB 15
1.2.3 DESVENTAJAS DE LA S APLICAC IONES WEB .16
1.3 LA WEB 1.0, LA WEB 2.0 y LA WEB 3.0 18
1.3.1 LA WEB 2.0 18
1.3.2 LA W EB3 .0 20
1.4 FUNCIONAMIENTO DE UNA APLICACiÓN WEB 21
1.4.1 FUNC IONAM IENTO EN EL LADO DEL CLIENTE 22
1.4.2 FUNCIONAM IENTO EN EL LAD O D EL SERViDOR 23
1.5 CREAC iÓ N DE A PLICACI ON ES W EB 25
1.5.1 SERVIDOR ES WEB 25
1.5.2 SERVIDORES DE APLlCAC ION ES WEB 25
1.5.3 ARQUITECTURA DE TRES NIVELES 25
1.5.4 PROGRAMACiÓN BACK-END y PROGRAMAC iÓN FRONT-END 27
1.5.5 PARAD IGMA MVC 29
1.6 TECNOLOG íAS PARA CREAR APLICACIONES WEB 30
1.6.1 CG I 30
1.6.2 LEN GUAJES DE PROGRAMAC iÓN H A BIT UA LES PARA CREAR APLICAC IONES EN EL
LADO DEL SERVIDOR 31
1.6.3 LENGUAJES DE SCRIPT DE SERVIDOR .31
1.6.4 PLATAFORMAS DE DESARROLLO D E SERVICIOS WEB EMPRESARIA LES 32
1.6.5 FRA M EWOR KS MVC 33
1.7 AP LICAC IO NES EN LA NU BE. CLO UD COM PUTl NG 34
1.8 APLICAC IONES W EB y APLICAC IO NES M ÓVI LES (A PPS) 37
1.9 RESU MEN DE LA UN IDAD 39
1.10 TEST DE REPASO 40
UNIDAD 2. PREPARACIÓN DEL ENTORNO DE TRABAJO •....••••••.••................... 43
2.1 ELEMENTOS NECESARIOS PARA CREAR APLICAC IONES WEB .44
2.2 CREACiÓN PROFESIONAL DE APLICACIONES WEB . MODELO DE TRES
ESTADOS 47
2.3 INSTALACiÓN DEL SISTEMA OPERATIVO .48
2.4 INSTALACiÓN Y CONFIGURACiÓN DEL SERVIDOR WEB 50
iv IM PLAN TACi ÓN DE A PLICACION ES W EB

2.4 .1 ELECC iÓN D EL SERVIDO R W EB 50


2.4 .2 INSTA LAC iÓ N DE A PACH E 52
2.4 .3 INIC IAR Y PARAR LA EJE CUC iÓN DEL SERVIDO R WEB A PACHE 56
2.4.4 FUNCION AMIENTO DE LAS RUTAS EN UN SERVIDO R W EB A PACH E 58
2.4 .5 FU NC IO NA M IENTO DE LA CO N FIG U RACiÓ N DE L SERVIDO R APAC HE 58
2.4 .6 PRIN CIPA LES DIR ECT IVAS DE APAC HE 61
2.4 .7 TAREA S H AB ITU A LES DE CONFIGURA C iÓN DE A PACH E 65
2.5 IN STALA CiÓN Y CO N FIG U RAC iÓ N D E PHP PARA APACH E 70
2.5.1 ¿Q U É ES PHP ? 70
2.5.2 IN STALACiÓN DE PHP 71
2.5.3 CONF IGURAC iÓ N DE PHP 75
2.5.4 MODIFICAC iÓN D E PHP.IN I 76
2.6 IN STALA Ci ÓN Y CO NF IGURAC iÓ N DE MYSQL 77
2. 6.1 INT RO DU CC iÓ N 77
2.6.2 DOC UMENTACiÓN 77
2.6 .3 IN STAL ACi Ó N DE MY SQL 77
2.6.4 MYSQ L y MAR IA D B 82
2.6 .5 CO N FIGU RAC iÓ N DE MYSQL 82
2.6.6 ESTABLEC IMIE NTO D E LA SEGURIDAD EN MYSQ L 83
2.7 IN STALACiÓN D E SOL UC IO NES A PACH E,PH P y MYSQL IN T EGRADA S 84
2.7.1 INTRO DU CCi ÓN 84
2.7.2 XAMP P 84
2.7.3 IN STAL AC iÓN DE XAMPP EN W IN DO WS 85
2.7.4 IN STAL ACi ÓN DE XAM PP EN LINU X 86
2.7.5 MA NEJO D E XA MPP 87
2. 8 PRÁCTI CAS RESUELTAS 90
2.9 PRÁCTI CAS PROPUESTAS 109
2.10 RESUM EN D E LA UNIDAD 113
2.11 TEST D E REPASO " " .,..,..,., 114
U N IDAD 3. PROG RAMACiÓ N BÁSICA DE APLICAC IONES CON PHP 1l7
3.1 ¿QUÉ ES PHP? , , ., , 118
3.1.1 LENGU AJ ES DE SCRIPT D E SERVIDO R 118
3.1.2 PH P 118
3.1.3 VENTAJAS D E PHP 119
3.2 HERRAMIENTAS PARA LA ESC RIT U RA DE APLICAC IONES EN PHP "" 120
3.3 BASES DE PHP " , ., 122
3.3.1 AYU DA DE PHP 122
3.3.2 ETIQU ETA <?PH P t» 122
3.3.3 HTM L USA PHP Y PHP U SA HTM L 123
3.3.4 CO M ENTAR IOS 123
3.3.5 BASES D E ESCRITU RA 124
3.3.6 ESCRIBIR EN LA SA LIDA 124
3.4 VARIAB LES , 125
3.4 .1 INT RO DU CC iÓN A LAS VAR IABL ES 125
3.4 .2 DEC LARA R VARIAB LES 126
3.4.3 ASIG NAC iÓ N D E VALORES 126
3.4.4 VAR IAB LES SIN ASIG NAR VAL O RES 127
ÍNDI CE v

3.4.5 T IPOS DE DATO S 127


3.4.6 REFERENCI AS & 131
3.4.7 CONSTANTES 131
3.4.8 VA RIA BLES DE VA RIA BLES 132
3.4.9 O PERADORES 132
3.5 ESTRUCTURAS DE CO NTROL 135
3.5.1 SENT ENC IA CONDI CION AL IF 136
3.5.2 BUCLES 141
3.6 USO D E FORMULARI O S HTML DESDE PH P 147
3.6 .1 ENV ío DE DATOS DESDE UN FORM U LARIO 147
3.6.2 MÉTODOS DE ENVío DE DATOS DEL FORMULARIO 147
3.6.3 RECEPCiÓN DE DATO S DE UN FORMULARIO DESDE UNA PÁGINA PHP 150
3.6.4 USA R LA MISM A PÁGINA PARA EL FO RM ULA RIO Y LA RECEPCIÓ N 151
3.7 REDIRIGIR HA CIA OTRA PÁGINA 152
3.8 PRÁCTICAS RESUELTAS 153
3.9 PRÁCTICAS PROPUESTAS 160
3.10 RESUMEN DE LA UNIDAD 163
3.11 TEST DE REPASO 164
UNIDAD 4. NOCIONES AVANZADAS SOBRE EL LENGUAJE PHP 167
4.1 FUNCIONES 168
4.1.1 INT RO D UCCi Ó N . PROGRAMACiÓN MODULAR 168
4.1.2 D ECLARACiÓN Y USO D E FUNCION ES PERSONA LES 169
4.1.3 A LCA NC E DE LAS VA RIABLE S 170
4.1.4 PASO DE PARÁMETROS POR REFERENCIA. 170
4.1.5 PARÁMETROS PREDEFINIDOS 172
4.1.6 VARIABLES GLOBALES 172
4.1.7 VARIABLES ESTÁTICA S 173
4.1.8 RECURSiV iDAD 173
4. 1.9 ÁMBITO DE LAS FU N C iO N ES 176
4.2 INCLUSiÓN DE FiCHEROS 176
4.3 ARRAYS 176
4.3.1 IN TRODUCC iÓN A LOS ARRAYS 176
4.3 .2 AR RAYS ESCALAR ES 177
4.3.3 ARRAYS ASO CiATi VOS 180
4.3.4 BUC LE FOREACH 181
4.3.5 ARRAYS MULTIDIMENSION ALES 182
4.3.6 IN SPECCi Ó N D E ARRAYS MED IANTE FUNC IONES DE RECORR IDO 184
4.3.7 FU NC IO N ES Y A RRAYS 185
4.3.8 USO DE ARRAYS EN FORMULARIOS 186
4.3.9 ANE XO: FUNCIONES DE USO CON ARRAYS 188
4.4 STRINGS 196
4.4.1 INTRODU CC iÓN 196
4.4.2 ASIGNAC iÓ N DE STRINGS 197
4.4.3 CONCATENAC iÓN D E TEXTOS 197
4.4 .4 USO DE VARIABLES EN STRI NGS. USO DE LLAVES 197
4.4 .5 MANEJO DE STRINGS COMO A RRAYS DE CARACTERES 198
4.4.6 CA DENAS HEREDOC 198
vi IM PLANTACi Ó N DE APLICAC IONES WEB

4 .4.7 CADE NAS NOWDOC 199


4.4.S AN EXO : FUNCIONES ESTÁNDAR DE USO CON STRING S 199
4 .5 CI FRADO 206
4.5 .1 ALGOR ITMOS DE CiFRADO 206
4.5.2 FUNC iÓN PASSWORD_HASH 20 7
4.5.3 O TRAS FUNC IONES DE CI FRADO 20S
4.6 EXPRESIONES REGULARE S 208
4.6.1 FORMATO DE LA S EXPRESIONE S REGUL ARES PCRE 209
4.6.2 PROBLEM AS CO N UN ICODE 211
4. 6.3 FUNCIONE S DE EXPRESIONES REGULARE S 212
4.7 FUN CIONES DE FECHA 214
4 .8 PRÁCTI CAS RESUELTAS 217
4.9 PRÁCTI CA S PROPU ESTAS 227
4 .10 RESUM EN D E LA UNI DA D " 230
4.11 TEST D E REPASO 231
U NIDAD 5. IN T ERCAM BIO DE I NFORMAC iÓ N ENTRE PÁGINAS W EB
CO N PH P , $.~ •••, ••••• • ~ ••••••• a •• •••••••••••• 233
5.1 LIMITACIONES DEL PROTOCOLO HTTP 234
5.2 FORMAS DE GENERAR UN ESTADO O SESIÓ N " " 234
5.2.1 USO DE LA DI RECCiÓ N IP 234
5.2.2 PASO DE PARÁMETROS M ED IA N TE CADENA DE CO N SULTA 234
5.2.3 PASO DE PARÁM ETROS MED IANTE M ÉTODO POST 235
5.2.4 COOK IES 235
5.2.5 SES iONE S 236
5.2.6 BASES DE DATOS 236
5.3 USO DE COOKIES DESDE PHP 236
5.3.1 FUNCIONAMIEN TO D E LA S COOK IES 236
5.3.2 A LMACEN AM IENTO DE COOK IES DESDE PHP. SETCO OK IE 237
5.3.3 ACC ED ER A LOS DATOS DE LAS COOK IES 238
5.4 USO DE SESIONES EN PHP """ "" 239
5.4.1 VENTAJAS Y DESVENTAJ AS 239
5.4 .2 FUNCiON AM IENTO 240
5.4.3 INICIO DE SESiÓN 243
5.4.4 U SO DE LA SESiÓN PREVIAMENTE INICIADA 244
5.4 .5 OBTE N ER DATOS DE LA SESIÓ N 244
5.4.6 USAR VARIABLES DE SESiÓN 244
5.4. 7 BO RRAR DATOS DE LA SESiÓ N 245
5.4. S ELIMI NAR LA SESiÓN ENTERA 245
5.5 PRÁCTICAS RESUELTAS "."" ". " 246
5.6 PRÁCTICAS PROPUESTAS " "".." ." 252
5.7 RESUMEN DE LA UNIDAD " .." 254
5.8 TEST DE REPASO " " 255
UNIDAD 6. ACCESO A BAS ES D E DATOS MEDIANTE PH P 257
6.1 BASES DE DATOS 258
6.1.1 VENTAJAS DE LAS BASES D E DATOS 258
íND ICE vii

6.1.2 PRO C ESO D E ACC ES O A UN SIST EM A DE BASES D E DATO S D ESD E PH P 258


6.1.3 PRO C ESO DE A CCESO A LA S BA SES D E DATOS D ESD E PH P 259
6.2 GEST iÓ N D E ERRORES 260
6.2.1 IMPOR TA NCI A D E LA G EST iÓ N DE ERRO RES 260
6.2.2 CON FIGU RAC iÓ N DE REPOR T E DE ERRORES 261
6.3 USAR M YSQ L D ESDE PHP 262
6.3 .1 CON EX iÓN A M YSQ L DESD E PH P 262
6.3 .2 U SO DE MYSQ LI. ¿FU N C IO N ES U O BJ ETOS ? 263
6.4 ESTABLECER CO NEX iÓ N CON M YSQ L DESDE PHP 263
6.4 .1 PERSISTEN C IA DE LAS CON EXIONE S 264
6.4.2 CONTR OL DE ERRORES EN LA CONEXiÓN 265
6.4.3 C ERRAR LA CO N EX iÓ N CO N LA BASE DE DAT O S 265
6.5 SELECCIO NAR BASES DE DATOS 266
6.6 EJECUC iÓ N DE IN ST RUCC IO N ES SQL 266
6.6.1 SQL GENÉR ICO DE MYS Q L 266
6.6.2 O BT EN ER EL NÚMERO DE FILA S MOD IFICA DAS EN IN ST RU CC IO N ES DML 266
6.6 .3 GEST iÓN D E ERRORES A L EJEC UTA R IN ST RUCC IO N ES SQ L 267
6.7 OBTE NE R INFORMACi ÓN M EDIANT E IN ST RUCCION ES SELECT 268
6.7.1 USO DE LA SEN T ENC IA QUERY PARA EJECUTAR INSTRUCC ION ES SELECT.. 268
6.7.2 RECOGIDA DE LO S RESU LTA D OS 269
6.7.3 FUNCIONES INTERESANT ES DE LO S CONJUNTOS DE RESU LTADO S 270
6.7.4 CODIFICACiÓN DE CARA CTE RES 271
6.7.5 PROBLE MAS DE SEGURIDAD. IN Y ECCIO NES DE SQL 272
6.8 SO PO RT E DE TRANSACCIONES 274
6.8 .1 TR A N SACCIO NES EN M YSQL 274
6.8 .2 A UT O CO M M IT 275
6.8 .3 CONF IRM A R Y A N U LA R TR AN SA CCiONES 275
6.9 PRÁCT ICAS RESUELTAS 276
6.10 PRÁCTI CAS PROPUESTAS , 295
6 .11 RESUMEN D E LA UNIDAD 297
6.12 TEST DE REPASO 298
UNIDAD 7. SIST EM AS DE GESTi ÓN DE CO N TEN IDO S 299
7.1 VENTAJAS Y CARACTERíSTI CAS DE LOS CMS 300
7.1.1 ¿Q U É ES UN CM S? 300
7.1.2 HISTOR IA DE LOS CMS .30O
7.1.3 VENTAJAS DE LO S CMS 301
7.2 ESTRUCTURA DE UN CMS 302
7.2.1 VISTAS D E UN CMS 302
7.2.2 ELEMEN TOS DE UN CM S 30 2
7.2.3 T EC N O LO GíA SUB YACE N T E EN LOS C MS 30 3
7.3 TIPO S D E CM S 304
7.3.1 C M S DE PROP Ó SITO G EN ERA L 305
7.3.2 O RIENTA D OS A BLOGS 306
7.3.3 O RIENTADOS A CO M ERCI O ELECTRÓ NICO 308
7.3.4 ORIENTADO S A SITIOS WI KIS 309
7.3.5 OR IENTADO S A FOROS D E DEBATE 310
viii IM PLANTACi Ó N DE APLICAC IONES WEB

7.3.6 ORIENTADOS A APRENDIZAJE EN LíNEA. 311


7.3.7 ORIENTADOS A LA COLABORAC iÓN 312
7.3.8 ORIENTADOS A LA CREACiÓN DE GA LERíAS 312
7.4 ELECC iÓN DEL CM S 313
7.4.1 POPULARIDAD 313
7.4.2 PRECIO 314
7.4.3 TI PO DE NECESIDAD 314
7.4.4 FAC ILIDAD PARA LA PERSON ALlZ ACIÓN 315
7.4.5 EXPO RTACi ÓN 315
7.5 C REA R NU ESTRO PRO PIO CMS , 315
7.6 RES UME N DE LA UN IDAD , 316
7.7 T ES T D E REPASO , , , 317
UN IDAD 8. IN STALAC iÓ N DE SISTEMAS DE GESTiÓN DE CONTEN IDOS 319
8.1 CAR AC TE RíST ICAS DEL CMS W O RD PRESS 32 0
8.1.1 INT RODU CCi Ó N A W O RD PRESS 320
8.1.2 DOCUMENTACiÓN 321
8.1.3 TÉRMINOS RELACIONADOS CON WORDPRESS 321
8.2 IN STA LACiÓN D E WO RDPR ESS 323
8.2. 1 CR EAC iÓN D E UN SIT IO O NLl N E 323
8.2.2 IN STAL ACiÓ N MAN UA L DE W O RD PRESS 323
8.2.3 DESIN STALAR WORDPRES S 330
8.3 CONFIGURACiÓN BÁSICA DE WORDPRESS 331
8. 3.1 EL PANEL DE ADMINISTRACiÓN DE WORDPRE SS 331
8. 3.2 MODIF ICAR LOS AJUST ES GENER ALES DE WORDPRE SS 332
8.3.3 AJUSTE DE PERMALlN KS 332
8.3 .4 ELECCiÓN DE TEMAS 334
8.4 EXTENDER LAS CAPACIDAD ES D E WORDPRE SS , PLUGIN S 335
8.4. 1 ¿QUÉ SON LOS PLUGI N S? 335
8.4 .2 EXAM INAR PLUG INS IN STA LA DO S 335
8.4.3 IN STA LAC iÓ N DE PLUGINS 336
8.5 CARACTERíSTICAS DEL CMS DRUPAL "" " 337
8. 5.1 INT RO D UCC iÓ N A D RUPA L 337
8.5.2 ELEMENTOS FUNDAMENTA LES DE DRUPAL 337
8. 5.3 ESTRUCTURA FUNCION AL DE DRUPAL 338
8. 5.4 DOCU ME NTACiÓN DE DRUP AL 339
8.6 INSTALACiÓN DE DRUPAL , ,..,.."., 339
8.6 .1 REQUI SITOS PREVIOS 339
8.6.2 PREPARACiÓ N DEL DIREC TO RIO DE DRUPAL 340
8. 6.3 PREPARAC iÓ N DE L USUARIO Y BASE DE DATO S DE D RU PAL 34 1
8.6.4 PREPARACiÓN DEL ARCH IVO DE CO N FIGU RAC iÓ N 34 2
8.6 .5 PREPARAR LA INSTA LAC iÓN EN OT RO ID IO M A 34 2
8. 6.6 EJ ECUTA R LA IN STAL ACiÓ N 34 2
8.6 .7 ACC IONE S TRAS LA IN STAL AC iÓ N 344
8.7 CO N FIGU RACi Ó N BÁSICA EN DRUPAL """"""" .344
8.7.1 PANEL DE ADMINI STRAC iÓN 34 4
8.7.2 IN STAL A R TEM AS 344
8.7.3 PERM IT IR URL LIMPI AS 345
ix

8.7.4 GESTi ÓN D E MÓDULO S EN DRUPAL 345


8.8 PRÁCT ICAS RES UELTAS 348
8.9 PRÁCT ICAS PROPUESTAS 356
8.10 RESUME N DE LA UN IDAD 358
8.11 TEST DE REPASO 359
UNIDAD 9. GESTiÓN D E LOS COMPONENTES, CO NT EN I DO Y APARIENCIA
DEL CMS 361
9.1 BASES DE LA PU BLICA CI ÓN D E CO NTE N IDO 36 2
9.2 AÑAD IR ENTRADAS EN WORDPRES S 362
9.2.1 CREAR NUEVOS POST 362
9.2.2 OPC IO N ES DE PUB LICACi Ó N 364
9.2.3 PAP ELERA 364
9.2.4 ESTABL ECI END O CATEGOR íA S Y ETIqUETAS 365
9.2.5 O PCIO N ES AVANZADAS EN LA PUB LICA CI ÓN DE ENTRA DAS 367
9.3 PUBLI CAR ELEMENTOS MULTIMEDIA EN WORDPRES S .369
9.3.1 IMÁGEN ES 369
9.3.2 A ÑA D IR OTROS ELEMEN TOS MULTIMEDI A 373
9.4 CREAC iÓN Y GESTIÓN DE CO MENTAR IOS EN WORDPRESS 374
9.4 .1 INT RO DU CCi Ó N A LO S COM ENTAR IOS 374
9.4.2 PUBLICAR COMENTAR IOS 374
9.4.3 ADMINISTRAR COMENTARIOS 375
9.4.4 MODERACiÓN DE COMENTAR IOS 377
9.4 .5 HERRAMI ENTAS ANTISPAM DE COMENTARIOS 378
9.5 CREACiÓN DE PÁGINAS ESTÁTICAS EN WORDPRESS 378
9.5.1 PÁGINAS Y POSTS 378
9.5.2 CREAR PÁGINAS 379
9.5.3 ED ITAR PÁGI NAS 380
9.6 PERSONALIZAR LA APARIENCIA DE UN SIT IO WORDPRESS 381
9.6.1 T EM AS 381
9.6.2 MENÚS 387
9.6.3 WIDGETS 388
9.6.4 CAMBIA R LA PÁGINA DE INICIO 389
9.6.5 CAMBIAR LA PÁGINA DE ENTRADAS 389
9.7 AÑAD IR CO NTEN IDO EN DRUPAL 39 0
9.7.1 CREAR NUEVO CONTENIDO 390
9.7.2 MO D IFICAR EL CONTEN IDO 391
9.7.3 A LIAS DE U RL 391
9.7.4 CREAR NUEVOS TI POS DE CON T EN IDO 391
9.7.5 ESTILOS DE IM AG EN 392
9.7.6 TA XONOMíAS 393
9.7.7 CONCLUSIONES SOBRE LA CREAC iÓ N CONTENIDOS EN D RUPAL 395
9.8 PERSONALlZACIÓN DE LA APARIENCIA EN DRUPAL. 395
9.8 .1 M ENÚ S 395
9.8 .2 BLOQUE S Y REGION ES 396
9.8.3 TEMAS EN DRUPA L 397
9.9 PRÁCTICAS RESUELTAS 401
X IM PLAN TACi ÓN DE APLICACION ES W EB

9.10 PRÁCTICAS PROPUESTAS 411


9.11 RESUMEN DE LA UN IDAD 413
9.12 TEST DE REPASO 414
UNIDAD 10 . ADM INISTRACiÓN DE SITIOS GESTIONADOS POR CMS 415
10.1 GESTiÓ N DE USUARIO S EN W O RD PRESS .416
10.1.1 IN T RO D U CCi Ó N A LO S USUARIOS DE WORDPRESS 416
10.1.2 AÑAD IR USUARIO S 416
10.1.3 A UT EN T IFICA C iÓ N DE USU AR IO S .417
10.1.4 PERFIL DE L USUARIO .417
10.1.5 APROBAC iÓN DE PO ST .417
10.1.6 BLOQU EO DE POST 418
10.1.7 REViSiONES 419
10.2 GESTIÓ N DE LO S DATOS DE W ORDPR ESS 421
10.2.1 COPIAS DE SEGUR IDAD EN WORDPRE SS 421
10.2.2 EXPORTAR LO S DATOS DE WORDPRESS 422
10.2 .3 IM PO RTA R DATOS EN WORDPRESS 422
10.3 ACTUALI ZA Ci ÓN D EL SISTEM A W ORD PRESS .4 23
10.3.1 IN T RO D U CC iÓ N A LA S ACT UA LIZAC IONES 423
10.3.2 ACTUAL IZAR EL SiSTEMA 424
10.3.3 ACT UA LIZAC iÓ N DE O TROS ELEM EN TO S 425
10.4 SEGURIDAD EN WORDPRESS , 425
10.4.1 ¿POR Q UÉ H AY Q U E PRESTAR AT ENC iÓ N A LA SEGUR IDA D ? .425
10.4 .2 PRINCI PALE S MED IDAS D E SEGUR IDA D 426
10.5 ADMINISTRACiÓN DE USUARIOS EN DRUPAL 428
10.5.1 T IPO S DE US UAR IOS EN DR U PAL. ROLES .428
10.5.2 AÑADIR CUENTAS DE US UAR IO .428
10.5.3 ED ITAR RO LES Y PERM iSOS .430
10.5.4 CREAR Y ED ITAR U SU A RIO S .43O
10.6 GEST iÓ N DE LOS DATOS EN DRUPAL , .4 31
10.6.1 COP IAS DE SEGUR IDAD Y EXP O RTA Ci Ó N D E DATO S 431
10.7 OTRAS TAREAS ADMINISTRATIVAS EN DRUPAL .434
10.7.1 CRO N 434
10.7.2 INF O RME S DE DRU PAL 435
10.7.3 AC T UA LIZAC 10 N ES 435
10.8 SEGURIDAD EN DRUPAL , , 435
10.9 PRÁCT ICAS RESUELTAS 438
10.10 PRÁCTICAS PROPUESTAS 442
10.11 RESUMEN DE LA UN IDAD 443
10.12TEST DE REPASO 444
UNIDAD 11. IMPLANTACiÓN DE APLI CACIONES DE O FIM ÁT ICA W EB••••...447
11.1 APLICACIONE S DE OFIMÁTI CA WEB 448
11.2 VENTAJAS Y DESVENTAJA S 448
11.2.1 V ENTAJAS D E LA S H ERRA M IENTA S DE OF IM ÁT ICA WEB 448
11.2.2 DE SVEN TAJA S DE LA S HER RAM IENTAS DE OFIMÁTI CA WEB 449
11.2.3 CO NSECUENC IAS D E LA S V ENTAJAS Y LA S D ESVENTAjAS 450
íND ICE xi

11.3 SOLUC IONES DE OF IMÁTICA W EB 450


11.3.1 GOOG LE D O CS. GOOG LE APPS 450
11.3.2 M ICROSOFT OFFICE ONLlNE. M ICROSOFT OFF ICE 365 451
11.3.3 ZOHO DOCS 452
11.3.4 THINKFREE ONLlNE 453
1104 USO DE LOS SERVICIOS DE OFI MÁTICA ONLlNE DE GOOGLE DRIVE .453
11.4.1 EM PEZA R A UTI L1ZAR EL SERVICIO 453
11.4.2 IN TE RFAZ DE GO O GLE D RIVE 455
11.4 .3 EDIC iÓ N DE DOCUMENTO S 456
11.4.4 CO NVERT IR DOC UMEN TO S 457
11.4. 5 TRA BAJ O SIN CO NEXiÓ N 457
11.4.6 TRABAJO CO LA BORAT IVO CON GOOGLE DOC S 458
11.5 PRÁCTI CA S PRO PUESTAS 46 2
11.6 RESUM EN DE LA UNI DA D 463
11.7 TEST DE REPASO 464
UNIDAD 1

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

funcionamiento básico de una 1.5 CREACiÓN DE APLICACION ES WEB


1.5.1 SERVIDOR ES WEB
aplicación en la nube
1.5.2 SERVIDOR ES D E A PLICAC IO NES WEB
1.5.3 A RQ U IT ECT U RA DE T RES N IVEL ES
- Distinguir la diferencia entre una 1.5.4 PRO GRAM ACi ÓN BACK-END y
aplicación web y una aplicación PROGRAMAC iÓN FRONT-END
móvil 1.5.5 PA RA DI GM A MVC
1.6 TECNOLOGíAS PARA C REA R
Identificar las principales tecnologías APLICACIONES WEB
del lado del cliente y del lado del 1.6.1 CGI
servidor 1.6.2 LENGUAJES D E PROGRAMACiÓN
H A BIT UALE S PA RA CREA R
A PLICAC IO N ES EN EL LA DO DEL
SERVIDO R
1.6.3 LENGU AJES DE SCRIPT DE SERVIDOR
1.6.4 PLATAFORM AS DE DESARROLLO DE
SERVICIOS WEB EMP RESARI ALE S
1.6.5 FRAM EWORKS MVC
1.7 APLI CACIONES EN LA NUB E. CLOUD
COM PUTlNG
1.8 APLI CACIONES W EB y APLI CA CION ES
MÓVILES (APPS)
1.9 RESUMEN DE LA UNIDAD
1.10 T EST DE REPASO
2 IM PLAN TACi ÓN DE APLICACION ES W EB

1.1 EVOLUCiÓN DE LA WEB E INTERNET


1.1.1 PERSPECTIVA HISTÓRICA, EL ÉXITO DE LAS
APLICAC IO NES W EB
El éxito de Internet está absolutamente ligado a la web. Tanto que hoy en día para la inmensa
mayoría de las per son as es indi stinguible qué es la web y qué es Int ernet . Todo se hace en la web.
Las tareas qu e antes requerían el uso de protocolos distintos a http, como el correo electrónico,
los gru pos de debate, chats... Ahora se realizan mediante servicios accesibles desde el protocolo
http, usando un cliente de navegación web (un navegador, en definitiva) .

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.

La cuestión es ¿por qu é? Hay varias razones para el éxito absoluto de 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.

• Solo necesitamos un único software. El navegador es el software que permite hacer


peticiones http e interpretar el HTML (y el CSS, JavaScript.. ..) necesario para ver ade-
cuadamente una página web. Además, es un software incluido en todos los sistemas
electrónicos, incluidos los dispositivos móviles; es decir , es una aplicación que segur o
que el usuario tiene instalada, sea cual sea su sistema.
U NIDAD 1. CONC EPTOS SOBRE APLI CACIONES W EB 3

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 .

Compone ntes com o la máquina virtua l de ja va, el plugin de Flash o el de Silverlight o u n


intérprete veloz de ja vaScript, pasan a ser imprescin dibl es y hacen qu e el navegador sea un sof-
twar e cada vez m ás comp lejo que exige al usuario la ins talació n esos componentes para disfrutar
adecua dam en te de los conten ido s.

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.

1.1.2 HI STORIA DE LA WEB


La creación de aplicaciones web ha tenido numero sos cambios a lo lar go de la br eve (aunque
ya no tanto) historia de Internet. Se se ñalan a continuación algun os hechos importantes en la
hist oria 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

principal organismo de estandarización de las tecnologías relacionadas con la web en


general y de HTML en particular.
La empresa Mosaic Communications se convierte en Netscape Communications
y lanza el navegador Net scape Navigator. En los siguientes afias será el navegador
más ut ilizado.
A finales de afio hay IO .OOO servidores web.

• 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

siendo un o de los lenguajes m ás influ yentes en el desarr ollo de páginas y aplicacione s


para la web. Netscape Navigator 2 . 0 es el primer navegador en uti lizar este lenguaje.
Debido a su éxito , todos los na vegadores tuviero n que ir incorporando un inté rprete
de este len guaje entre sus capacidades básicas.
Aparece la primera versión de MySQL base de datos relacional de código abierto
(actualmente pertenece a la empresa Oracle). Se convertirá en el sistema gestor de
base de datos más utili zad o (especialm ente en sitios pequ eño s) de Int ernet
Explosión de la web , Internet se empieza a hacer mu y popular y la web se empieza
a converti r en el servicio má s habitual para accede r a Internet. Gradualmente el
número de sitios va creci en do hasta alcanzar los millones de sitios web en lntemet.
Se crea el sitio web Geocities, anteces or de las redes sociales. Los usuarios publicaban
fácilmente sus propia s páginas web dentro del propio sitio de Geocities y se agru pa-
ban por gustos en ciudades virtuales que el resto de usuario s podía recorrer.

• 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

Aparece Wikipedia, enciclopedia creada con la colaboración desinteresada de miles


de personas cuyos artículos crecen de man era exponencial cada a ño .
Aparece el estándar W3C XHTML LO , versión de HTML basado en XML que pre -
te nde derro car a HTML. Fue mu y popular hasta aproxima damente el año 20II con el
inicio de la influ en cia de HTML 5.
ISO (organis mo internacional de estándares) publi ca la norma ISO 15445 con la qu e
nor ma liza HTML. Esta no rm a es prácticame nte la mism a que [a correspondie nte al
HTML 4.01 de [a W3C.
Roy T. Fielding publica su tesis doctoral de la qu e apa rece la idea de las web de tipo
REST, Representational State Transfer (Esta do Represe ntativo de Transferencia),
o RESTful, que consiste en que las direccion es (URL) de [as ap licaciones web en
Int ernet representen el servicio al que dan acceso. Su influencia ha sido enorme,
especialmente en [os últimos afias.
• Se lan za Konqueror 2.0 para el siste ma Linux con ventanas KDE navegador basado
en el mo tor KHTML raíz del motor Webkit en el que se basarán [os navegado res
Safari y Ch rome entre otros.
11 2 0 0r

Aparece Explorer 6 integrado en el popularísimo sistema operativo Windows XP.


Con ello Micros oft gana la primera guerra de navegadores.
La W3C lanza el está ndar XHTML r.r último XHTML considerado por la indust ria.
PHP, com o te cno logía en el lado del servidor, y Flash, en el lado del cliente , son
las tecnologías dominan tes para crear aplicaciones web enriquecidas (ya conoc idas
como RIA, Rich Internet Applications).
Los suces os del lIS pro vocan un colapso en Internet , los pri ncipales periódicos digi-
tales del plan et a mu est ran solo información muy esque mática sobre los ate ntados
para ahorrar anc ho de banda y poder seguir at endiendo a los usuarios.
Estallido de la burbuja punto com (Dot-com Buble), cientos de em presas que habían
ten ido ganancias enormes, pero especulativas, comienz an a desplomarse y desapare-
cer. Se habla de redefinir la web. Al afio siguiente ya se habla de la web 2 . 0.
Se populariza el uso de blogs (o weblo gs) para publicar en Internet, al ser más fáciles
de crear por todo tipo de usuarios.
Se crea Drupa l, herramienta de gestión de contenidos (CMS) que perm ite crear
sitios colaborativos. Su éxito verdadero comi en za a partir del zooz, compitiendo con
Ioornla como principal siste ma de administra ción de contenidos,
Se crea Bit torrent un protocolo para compar tir archivos entre equipos peer to peer
(de igual a igual), sin servidor central. Tiene un gran éxito e in fluencia en los años
siguientes.
UNIDAD 1. CO NCE PTOS SOBRE APLICAC IONES W EB 9

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

Apple lanza al mercado el navegad or Safari.


Se crea Wordpress, gestor de contenidos web CMS. Permite crear páginas web (espe-
cialmente blogs) sin prácticamente conocimientos técnicos y facilita la gestión de
usuarios que editen diferentes contenidos en un sitio web. A día de hoy, es el CMS
más popular.
• Chris Pederik crea la Web Developer Toolbar para Firefox, barra de herramientas
para desarrolladores, que permite inspeccionar cada elemento de un a página web;
muy imp ortante para qu e los crea dores de aplicaciones web puedan depurar su
código .
• Aparece la red socia l gráfica y virtual Second Life. Tuvo un gra n éxito en esos a ños.
• Se crean las redes sociales profesion ales Linkedin y Xing (llama da ini cialm ente Op en
Social Club).

• 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

Se incorporan patrones MVC (Modelo-Vista-Cont ro lador) a la mayoría de tecno -


logías de creac ión de aplicaciones web, facilitando a los desarrollador es el manteni -
m iento y dise ño de sus aplicaciones.
Se lanza ]oomla! En los siguientes añ os se convert irá en el CMS más popular (des-
pu és será rebasado por Word Press).
Se lan za el fram ework Rub y on Rails dise ñado por David Hein em eier que permite
crear aplicacion es web basadas en MVC (Modelo-Vista-Cont rolador) de form a sen -
cilla utilizando como lenguaje base , el lenguaje Ruby.
Aparece el test Acidz con el que se intenta verificar el cumplimiento de CSS2 por
parte de los navegadores. Safari 2 es el primer navegador qu e lo pasa al IO O% .
Aparece Google Maps con map as de Estados Unido s y Canadá qu e, po co a po co,
incluirán información de todo el plan eta y le convertirán en el buscador de ru ta s má s
po pu lar.
Aparece Yout ube el servicio más popular para mo strar vídeos de todo tipo , en poco
tiempo recibe cientos de millo nes de visitas. Actualmente es el sitio más po pular para
ver vídeos a trav és de Intern et.

• 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.

1.1.3 M OM ENTO ACTUAL


En la actualidad la proliferación de dispo sitivos móviles está propiciando un gran cambio en
la forma de crea r aplicaciones web . Cualquier aplicación crea da para la web tiene que pensar que
la audienc ia mayoritaria será la de los smartphones y las tabletas. Eso implica que la mayoría de
aplicaciones web tien en que cambiar su apariencia externa para adaptarse a la nueva realidad.

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.

ACT IV IDAD 1.1: TENDENC IA S EN IN T ERN ET


• La dir ección http ://www.kpcb.com /intern et- trends da acceso al in form e de tenden cias en
Internet de la empresa KPCB, una de las fuentes más reputadas en este aspecto.
• El informe está en inglés, su lectur a es casi obligad a ya qu e es un aná lisis exhaustivo y mu y
bien documentado. Se renueva cada año

1.2 APL ICAC IONES WEB


1.2.1 ¿QU É ES UNA APLI CACiÓN WEB?
En infor mática, una aplicación es un software que permite al usuario realizar una determi-
na da tarea o servicio. Las aplicaciones clásicas se crean en lenguajes como C o c++ que ponen a
dispo sición del programador todas las capac idade s de la computadora.

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

1.2.2 VENTAJAS DE LAS APLI CACIONE S W EB


Si las aplicaciones web han tri unfado sobre las tradiciona les aplicaciones de escritorio es por
sus ventajas, las cuales se enume ran a continuació n:

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.

Requerimientos mínimos en el clien t e. El único requisito de las aplicaciones web es


el navegador, las aplicaciones de escritorio exigen un Siste ma Operativo concr eto , un a
determinada cantidad de memoria RAM, in stalaci ón de ciertas plataform as, paquetes o
servicios... Es verdad que a veces las aplicaciones web exigen determinados navegadores,
o bien ciertos plugins en ellos, pero disponiendo de un navegador de última generación
(te niendo en cue nta que to dos son gratuitos y qu e los sma rtp ho nes ya los incorporan )
una aplicación web bien hecha no debería requerir na da más.

• 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.

• Facilidad de mantenimiento. Q uizá es el aspecto más importante. Cuando un a apli-


cación de escritor io se renueva, el usuario necesita actualizarla en su equipo. Todo s los
usuarios de Windows esta mos acostumbrados a las periódicas actualizaciones del sis-
tema que resultan enorme me nte pesadas , por el ti empo de espera qu e suponen .

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.

Costes reducidos en su implantación. No hay material de instalación , ni impreso, ni


cajas de product o. Todo lo relacionado con la aplicación es digital. Hoy en día las pro -
pias aplicaciones de escritorio utilizan en gran m edida esta idea al pod erse com prar y
descargar desde Intern et.

• 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.

1.2.3 DESVENTAJAS DE LAS APLICACIONES WEB


• Menos potentes. Visto el apartado ante rior, cualquier persona se podría plantear la pre-
gunta ¿para qu é sirven las aplicaciones de escritorio? La cuesti ón es que no todas las
tareas que se pued en rea lizar desde un a aplicación web ; o al men os, no con la misma
eficiencia y velocida d.

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.

• Se requiere conectividad. Es decir, debemo s estar conectados a Intern et de forma inin -


terrumpida para util izar la aplicación web. Hoy en día no parece un requisito excesivo,
pero lo cierto es que no siempre funciona una conexión a Internet y este hecho podría
para lizar la reali zación de una tarea importante. Esta es la razón por la que la conectivi-
dad de las empresas a Intern et se ha convertido en una cuestión tan crítica, requiriendo
de enlaces red undantes den tro de su red interna, así como de la po sibilidad de utilizar
diversas (y ta mbién red undantes) conexio nes a Intern et.

• 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

confidencia l de miles o millones de usuarios. A lo largo de la historia de Int ern et es una


situación que, desgraciadamen te, ha ocurrido varias veces y que hay qu e ten er mu y en
cuenta.

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.

1.3 LA WEB 1.0, LA WEB 2.0 y LA WEB 3.0


Las primeras aplicaciones web eran poco má s que un conjunto de páginas que ser vían infor -
mación estática a los usuarios sin, prácticamente, interaccionar con ellos. Esta primera web,
constaba de páginas qu e eran simpleme nte un conjunto de textos e imágen es, junto con los
hip ervínculos qu e permitían saltar hacia otros contenidos.

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 .

1.3.1.1 RIA: AP LI CAC IO NE S RICAS DE IN T ERN ET.


Se llam an Aplicaciones Ricas de Intern et (ta mbién conocidas con las siglas RlA de Ricli Internet
Applicationsi a aque llas aplicaciones web qu e ofrece n resultados qu e las hacen casi indistingui-
bles respecto a las aplicaciones de escrito rio.

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.

m1 Word Online Jorge Documentl r.~~~':' ~ Jorge

Fr E
.... .- ,- -- --
+-=- -+=-
] 0o -- • :, __ ... _ _

Aa8bCc AaBbCc Aa BbCc -"a8cú

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).

1.3.1.2 SO A: ARQUIT ECTURA O RIENTA D A AL SERV IC IO


Otra de las claves de las apli caciones web 2 .0 es el para digma conocido como SOA, que aglu-
tina el conjunto de tecnolo gías y técnicas que permite n dise ñar ap licaciones como un conj unto
de servicios que resuelven peticiones de los usuarios. De esta forma , se pu ede crear peque ños
elementos software reutilizables de forma ind ependiente res pecto al lenguaje con el qu e fueron
creados.

GOJgle maps Servicio de


usuarios
tienda
opinione s

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

Figura 1 .2 : Ejemp lo de arquitectura orientada al servicio


20 IMPLANTACiÓN DE APLICAC IONES WEB

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.

Eso hace qu e el conte ni do de un a aplicación escape al control de la en tid ad creadora de la


mism a, las aplica cion es trat an de tr aer a usuario s entusias tas y activos qu e publi citen el pro ducto
de la empresa (lo cual sale gratis a la misma) y para ello la aplicación debe pro por cionar mec a-
nismo s. Ademá s pasa a ser imprescindible la conexión de las apli caciones con los principales
servicios de red social en Internet .

1.3.2 LA WEB 3.0


Desde aproxima dame nte el a ño zo ro, mu cho s analistas cons ideran que estamos en la versión
3.0 de la web. Otros afirm an que simpleme nte en estos al10Slos pilares de la web 2.0 se han hecho
más extremos .
UNIDAD 1. CONCEPTOS SOBRE APLICAC IONES W EB 21

Lo qu e es innegable es que la nu eva guerra de navegadores entre Internet Explorer, Mozilla


Fire fox y Google Chrome principalm ente (que par ece ganar Google Chrome) ha dot ad o de un a
mayor poten cia al lado del clien te, lo qu e ha revertido en un espectacular crecimiento de las pres-
tacion es dispo nibles par a los pro gramadores front- end.

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 inteligente. Conc epto qu e se refiere a la inteligencia artificial aplicada a la web; es


decir, se re fiere a que la propia web reaccione de forma inteligente ante los usuarios. Un
ejemplo de web inteligente es una aplicación web que no s muestra artículos de rop a de
m onta ña porque ha detectad o que nos gusta ir a la monta ña, en lugar de mos trarnos
pu blicidad sobre artículos que no nos interesan. La web inteligente utili za esta s áre as de
la cienc ia de la computación:
• Procesadores de lenguaje natural (NLP). Qu e hacen que las aplicacion es web se
comuniquen en un lenguaje semejante al que emplearía cua lquier perso na .
Aprendizaje automático (Machine Learning). Ciencia que trabaja en que las compu-
tadoras sean capace s de apr ender por sí mismas nuevos conceptos y aplica ciones de
los mismos.
• Siste mas de re come ndación . Se tra ta de la tecn ología qu e nos permite recomendar
pro ductos a un usuario en base a sus eleccio nes de pro ductos anteri ores y a otros
datos que poseemos sobre él. Es un sistema predictivo mu y interesante para las
empresas de venta de productos on lineo

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.

1.4 FUNC IONA M IENTO DE UNA


~

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.

Lenguajes y tecnologías en el lado del servidor. En este caso se trata de aplicacio-


nes creadas con lenguajes y elementos que se interpretan en el servidor qu e aloja la
aplicaci ón.
22 IMPLANTACiÓN DE APLICAC IONES WEB

1.4.1 FUNCIONAMIENTO EN EL LADO DEL


CL! ENT E
En mo do clien te, la página en tregada por el servidor web que la alberga, contiene (además del
código HTML) eleme ntos pertenecientes a otros len guajes y tecn ologías. Las principales tecno-
logías son:

• 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

3) El se rvidor busca el recurso y


lo ent rega. Ese recurso será
normalme nte un documen to
HTML que te ndrá elementos
incrustados a traducir por el
navegador

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

• Silverlight . Comp onente, sem ejante en comportamiento al anterior, qu e requier e tam -


bién un plugin. Silverlight es pro piedad de Microsoft y el contenido de este tipo se crea
a través de software especial.

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.

1.4.2 FUN CIONAMIENTO EN EL LAD O DE L


SERV IDOR
En este otro paradigma, se crean páginas qu e contien en componentes realizado s en lenguajes
y tecnologías que deben de ser interpretadas por un servidor en Internet en lugar de en el nave-
gador del usuario.
24 IM PLANTACiÓN DE APLICACION ES W EB

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.

2) Pet ición http al servidor web


)
5) El resu ltado se envía al navegador

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

3) El se rvidor we b enc uent ra la página


co n co mpon entes de l lado de l se rvidor (php) y
pide t raducirles al se rvidor de aplicac iones
co rres pondie nte ,--~

4) El serv idor de ap licacione s


traduce e l código y en t rega
la t raducc ión en fo rmat o en tendible
por un navegador

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

1.5 CREACiÓ N DE APLI CACI ON ES W EB


1.5.1 SERVIDO RES W EB
Un servidor web es un a máqui na o software capaz de interpretar peticiones web rea lizadas
con el protocolo http o http s y de devolver el resulta do de la petición , qu e sue le propiciar la
entreg a de un recurso alojado en el servidor. A los servidores web se les llama también (con mejor
tino prob ablem ente) servidores http .

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.

1.5.2 SERVIDORES DE APLI CACIONES WEB


Los servidores web solo tiene n la capacidad come ntada en el punto anterior: resolver peticio-
nes http. Pero no se molestan en descifrar el código de los documentos qu e entregan. Esa tarea la
dejan en man os del cliente qu e hi zo la petición (norma lme nte un navegad or web).

La cuestión es qu e, como se ha visto en el Apar ta do 1. 4 . 2 "Funcionamiento en el lado del ser-


vidor", en la página 23 un servidor de aplicaciones es el encargado de tr aducir instrucciones
hechas en lenguajes del lad o del servidor y entregar el resultado de esa traducción al servidor web
que le pidió dicha traducción. Además , el código del lado del servi dor pu ede contener instruc -
ciones que imp liquen acced er a otros servidores (como por ejemplo acce so a bases de datos) con
lo qu e el proce so pu ede ser mu y complejo.

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+

En la práctic a, los servidores de aplicacion es son simplemente módulos software que se añ a-


den al servidor web, de modo que los términos servidor web y servidor de aplicaciones web se
confunden, pero es imp orta nte distinguirl es ya qu e no to dos los servi do res web se comporta n
como servidores de ap licaciones web y, sobre tod o, porque la labor es muy diferen te: un a cosa es
encargarse de las peticion es http y otra tra ducir lenguajes de servidor.

Dependiendo de la tecnología de servidor utilizada tendremos diferentes servidores de aplica-


cione s. Así hay servidores PH P, servidores .NET, servidores Java, etc.

1.5.3 ARQU ITECTURA DE TRES NIV ELES


Las aplicaciones web actuales utilizan lo qu e se conoce como arquite ctur a de tr es niveles (en
inglés three-tier architecture), a veces incluso se habla de más capas. Estas capa s son:
26 IMPLANTACIÓN DE APLICACIO NES W EB

Capa de presentación. Maneja la parte de la aplicación web que ve el usuario. Es decir,


se encarga de la forma de presentar la información al usuario. Consta del código del lado
del cliente (HTML, )avaScript, CSS, Flash...) que le llega al navegador, aunque ese código
haya sido generado or igina lmente por una tecnología del lado del servidor.

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

Se tra du ce el cód igo del lado del


I
1 Peti ción de
t rad ucción
ser vid or e n cód igo de l lad o de l cliente

CA PA
LÓG ICA
CONTROLADORES

SERVIDOR DE MODE LOS VISTAS


APLICACIO NES
II Los dat o s empresariales req uerido s

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

• Capa lógica. Es la encargada de gestionar el funcionamiento de la aplicación. En ella se


encuentran los documen tos escritos en un len guaje qu e se debe de interpretar en el lado
del servidor (por ello, esta capa está relacion ada con el servidor de aplicaciones) y cuyo
resultado se enviará al servidor web para qu e este, a su vez, lo envíe al cliente que hi zo
la petición.

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.

1.5.4 PROGRAM AC iÓ N BACK-END y


PROGRAM AC iÓ N FRO NT-END
Existe también un a división entre las tareas de las personas enca rgadas del desarrollo de apli-
caciones web en base a lo cerca o lejos qu e su tare a está respecto al usu ario . Así ten emo s
• front -end, Se refiere a la parte del desarrollo enc argado de producir la apari encia final de
la aplicación que verá el usuario. En cierto modo es la interfaz de usuario. Las personas
que se enc argan del front-e nd de la aplicación son las qu e dise ñan las maquetas o mo c-
kup s de la aplicación, usando software como, por ejemplo, Adobe Photoshop u otras
herrami entas más especializadas para la producción de wireframes (dise ños de líneas
que simulan el aspecto final de la aplicación) y mock ups (maquetas con una mínima
funciona lidad) .

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.

• back-end. Un desarrollador back-end se encarga de reali zar la parte de la aplicación que


queda oculta al usuario. El funcionamiento de la capa lógica y de nego cio sería el back-
en d, ya que se usan los len guajes del lado del serv idor y los de base de datos. Es la parte
de la aplicación encargada de que funcion e debidamente la aplicación.

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

1.5.4.1 M O D ELO FULL 5TACK


La arquitectura por niveles y la división en back-en d y front -end provocan que la programa-
ción de aplicaciones we b utilice un a pila (stack en inglés) de lenguajes. De modo qu e un progra-
mado r de aplicaciones típico debe pro gramar en javaScript (además de utili zar HTML y CSS) para
programar el front -end: si pasa al back-end debe program ar, por ejemplo, en PHP ; si se dedica a
gestiona r la base de datos entonces debe utili zar SQL. Eso ha ce qu e almenas sean n ecesarios tres
lenguajes (cuando no más) y por ello, este mo delo acaba pro du ciendo especialistas en cada área:
pro gramadores back-end, pro gramadores front-end y programadores de base de datos.

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

HTML,CSS,JavaScript PHP,ASP, Ruby, SQL


Python , .NET,Java,...

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

1.5.5 PARADIG MA MVC


Las aplicaciones web a medida que se van mejorando y ampliando, son más difíciles de man-
tener. Aparte , las cuestiones sobre los distintos niveles hacen que sea nece sario separar el código
para que podamos organizarlo de forma sostenible en el futuro .

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...)

En definiti va, el controlador es un m ediad or entre modelo y vista .


NAV EGADO R

'"
Petición
DATOS
CO NTRO LAD O R

MODELO VISTA

Figu ra 1.7: Funcionamiento habi t ual del paradigma MVC

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 TECNOLOGíAS PARA CREAR


AP LI CACION ES W EB
En el Apartado 1. 4. r "Funcionam iento en el lado del cliente", en la página 2 2 , se exponen las
tecno logías del lado del client e relacionadas con la creació n de aplicaciones web. En este apar-
ta do se com entarán los prin cipales lenguajes y plat aformas para programa r el back-end, el lado
del servidor.

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 .

En un caso típic o, el fu ncio namiento es el siguiente:

[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.

[4] El resultado se comunica al servidor web indicando el formato de la respuesta (concreta-


mente el llamado tipo MIME de la misma) y este envía el resultado al cliente a trav és de una
respuesta http. Por supuesto, el resultado de la petición CGl suel e estar en formato enten-
dible por un navegado r (es decir, normalmente un documento HTML).
UNIDAD 1. CONCEPTOS SOBRE APLICACIONES WEB 31

1.6.2 LE NGU AJES DE PROGRAMACiÓ N HAB ITUALES


PARA CREAR APLICACIO NES EN EL LADO DEL
SERVIDOR
La form a de func ionar de CGI ha sido la habitual durante muchos a ños y sigue teni endo
influ en cia en la actu alidad. Lógicam ente hay lengua jes más apro piados qu e otros para crea r apli-
caciones de servidor.

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.

1.6.3 LENGUAJES DE SCRIPT DE SERVIDOR


Este tipo de lenguajes se basan en la incrustación del código HTML de una página web . Todos
ellos indican mediante una apertura de etiqueta especial. (por ejemp lo dphp en el caso de PHP o
<% en el caso de JSP) un bloque de códi go que no es HT ML, sino código perten eciente al len guaje
de servido r.

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

Los princi pales len guajes de script son:

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.

1.6.4 PLATAFORMAS DE DES ARROLLO DE


SE RVICIOS W EB EM PRESARIALES
Se tr ata de solucio nes de desarrollo de aplicacio nes web completas . Incluyen por lo general:

• 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...)

• Una ser ie de archivos de configur ación qu e permitirán configur ar la aplicación como un


servicio http que sepa cómo atender (almen a s a qu é pro gram a desviar la peti ción y con
qu é dato s) cada petición que le llegue.

• Un conjunto de program as realizado en uno o más lengua je de programación completos


y potentes (Java, C# ...)

Un conjunto de documentos ya preparados para enviar al cliente; se les conoce como


arc hivos estáticos porque no requieren la traducción del servidor de aplicaciones. Son
los arc hivos HTML, CSS, javaScript, imágenes...

• Una ser ie de archivos de script de servidor (JSP, ASP.net...)

• 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...)

• Facilidad para in corporar patrones y marcos de tr abajo compatibles con el paradigma


MVC.
U N IDAD 1. CONCEPTOS SOBRE APLICACION ES WEB 33

Las plataformas más popul ares desde hace a ños son:

!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.

1.6.5 FRAMEWORKS MVC


En inglés framework se pu ede traducir com o estruc tura. En el sentido qu e no s ocupa, un fra-
mework sería un marco de trabajo. MVC son las siglas del Modelo-Vista-Controlador, com en-
tado antes, un paradigma de programación de aplicaciones que separa la misma en tres visiones
diferentes.

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...

Los frameworks MVC má s pop ulares act ualmen te son:

• 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.

• Backbone.js. Marco ligero de programación de aplicacione s web usando JavaScript


como único lenguaje; es un o de los prim eros que se crearon para JavaScript.
34 IM PLANTACi Ó N DE APLICAC IONES WEB

ACTIVIDAD 1.2: T EC N OLO GíA S PARA CREAR AP LlCAC IO N ES W EB


• La página Wj'Iechs ofrece numerosas esta dísticas sobre la imp lantación de tecnologías en
Intern et.
• Por ejem plo la dirección:
htt p://v/3techs.com/technologies/overview/programming language/all
contiene in form ación sobre el uso de len guajes de pro gram ación para implementar aplica-
ciones web.
• Observa los diferentes aparta dos y toma conclusiones sobre los len guajes utilizado s en la
web (aunque es un a mu estra parcial, es bastante significativa).
• En el menú Tecltno logies disponible en la portada podr emo s obten er acceso a todas las esta -
dísticas sobre la tecn ología im plem entada en las aplicacion es web. Elije Server-side Languages
y veremos cuáles son los len guajes de servidor más comunes en las aplicaciones web actuales.
• Despu és, si hac emo s clic en el aparta do Histori cal Trend veremos la tendenci a que han
tenido los len guajes de servidor en los últimos meses. Si elegim os Yearly en el menú lat eral
izquierd o veremos la tend en cia por a ños.
• Lo mismo pod remo s ha cer sobre cualquier otra de las esta dísticas qu e la página no s ofrece.

1.7 APL ICACIONES EN LA NUBE. CLOUD


CO MPUTING
Se trata de uno de los términos má s influ yentes en el mundo de la computación de los últimos
a ños. Consiste en ofre cer, en form a de servicio, cualquier prestación qu e se pu eda pro gramar
en un sistema informático. Este servicio es accesible desde cualquier dispositivo con con exión a
Int ernet ya qu e se distribuye en una ser ie de servidores, cuyo número puede ser enor me y cuya
localización geográfica puede abarcar el planeta ente ro.
Es un nu evo modelo de trabajo para los usuarios que ha requerido de un cambio drástico en la
forma de crear aplica ciones en general, de modo qu e las mismas puedan at ender a una demanda
ingente de peticiones de servicio, gracias a una altí sima tol erancia a fallos en los servidores.

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

Algunos ejemplos de servicios en la nub e son :

Servicios de almacenamiento en la nube. Se tra ta de servicios qu e permiten al usu ario


almacenar datos que , po r lo gen eral, se suben a la nub e sin cro nizan do alguna carpeta
de la máquina del usuario . Esto permite que los usuarios tengan copia de seguridad ins-
tantánea (inclu so algunos servicios permiten alma cena r var ias versiones de cada docu-
mento), además de acceso a sus archivos desde todo ti po de dispositivos y ub icacion es.
Ejem plos de servicios con cretos de est e ti po son DropBox, Microsoft OneDrive, Google
Drive o SugarSync.

Aplicaciones de ofimática we b. Se trata de aplicaciones en la nube que permiten crear,


modificar, compartir y almacenar documentos típicos de oficina (textos, hojas de cál-
cu lo, presentacion es...) En tre las más conocidas están Google Docs y Microsoft Office
365.

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.

• Contactos. Basado s en la mi sm a idea, se almacena n en un servicio en la nube y podemos


acceder a ellos desde cua lquier orde na dor. Incluso la propia age nda de contact os de los
móviles ha pasado a ser una ba se de datos en la nube (con lo qu e cambiar de te léfono no
im plica perder los contacto s).

• 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.

Redes sociales. Como Facebook, lnstagram, twitter o Linkedln. Almace na n mil es de


im ágenes, textos y vídeos de su s usuarios qu e las suben para que sus contactos las pue-
dan ver y come ntar.

• 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 .

1.7.5.1 M O DELO S DE CLO UD CO M PUT ING


Los servicios en la nub e se suelen dividir en tre s tipos:

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.

Juegos en línea, escritorios virtuales, corre o, redes sociales, software de creación de pr e-


sentaciones online... Cada vez hay más servicios de este tipo cubriendo absolutamente
todas las nece sidades de los usuarios.
En definitiva un servicio es de tipo SaaS, cuando el servicio parece ser una aplicación
normal que podríamos tener in sta lada en nuestro equipo.
PaaS, acrónimo de Platform as a Service (Plataforma como Servicio). Se trata de un
servicio que proporciona una plataforma preparada para desarrollar aplicaciones. Por
plataforma se entiende una la completa de elementos: sistema operativo, librerías, com-
piladores, APIs de desarrollo,etc. necesarias para crear software en una determinad a
tecnología.
Un ejemplo de PaaS sería Heroku, que es un servicio en la nube que permite el desa-
rro llo de aplicaciones web completas. Un programador de Heroku te ndrá a su disposi-
ción una base de datos (Heroku usa como base de datos una versión de PostgreSQL) y
un servidor de aplicaciones web (node.js, Ruby on Rails ...) perfectame nte configur ado
para que simp leme nte el programador suba el código a la nube y ya funcione. Rivales de
Heroku son Google App Engine, Red Hat Open Shift o Cloud Foundry.

La ventaja es que los desarrolladores pu eden trabajar en su aplicación desde diferentes


estaciones de trabajo, ya que el entorno de trabajo y la propia aplicación rea lizada está
en la nube.

• laaS, lnfrastructure as a Service es un servicio en la nube que nos permite virtualizar


hardware de todo tipo : un servidor, una red de ordenadores, un disco duro... Podemos
acceder a ese hardware como a un servicio más de Internet.

La ventaja es que dispondremos de máquinas que no te ndremos físicamente instaladas


nosotro s, y a las que accederemos desde un navegador o una aplicación mó vil.
UNIDA D 1. CONCEPTOS SOBRE APLICACIONES W EB 37

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.

1.7.5.2 IM PLEM ENTACi ÓN DE NU BES PARA EL CLO UD CO MP UT ING


Podem os ente nder que una nube rea lme nte es un conjunto de servidores conectados que
trabajan de forma distri buida. Cua ndo impleme ntamos un servicio en la n ube, realm en te lo que
ten emo s es una aplicación que se distribuye en una nub e de servidores ofr eciendo el servicio que
deseemo s implem en tar.

Se con sidera qu e hay tr es tipos de nubes para implementar un servicio:

• 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.

• Nubes privadas. Son implementadas por la propia empresa qu e n ecesita la nube.


Requ iere una inversión más grande, pero nos permite per sonalizar absolutamente el
servicio, así como ser nosotros quienes gestionamos nu estro s da tos sin intervención
de terceros. Esta es la forma adec uada si nece sitamos servicios en la nube que uti licen
información crít ica o estratégica.
Nubes híbridas. Son una mezcla de las ante riores, part e de nu estro n egocio se delega
a una nube pública y parte lo gestiona mos en nu estra nube privada . Intenta auna r lo
mejor de am bas opciones.

1.8 APLICACIONES WEB y APLICACIONES


MÓVILES (APPS)
El éxito de los te léfonos inteligentes (smartphones) ha per mitido al usuario lograr qu e desde
el m óvil tamb ién se acceda a los servicios disponibles en Internet. Las aplicaciones presentes en
los móv iles (conocidas popularmente como Apps) aúnan sencillez de uso y acceso directo para
reso lver problemas complejos o, al menos, muy in teresa ntes para el usuario.

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.

Otra venta ja importante es qu e se publican en un mark et (Goo gle m arket, Apple


Store...), una tienda online qu e permite bus car e instalar la aplicación en el dispositivo.
Esos markets facilitan la difu sión y promoción de la app nativa.

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

1.9 RESUMEN DE LA UNIDAD


• Las aplicaciones web llevan presente muchos afios ya entre nosotros, pero desde la apa-
rició n de la web hasta la a actualid ad cada vez los usuarios han re querido más de ellas.

• La evolución de la we b ha hech o qu e las ap licaciones web se cree n en tecn ologías cada


vez m ás sofistica das . La velocidad en la in n ovación y, aparición y me jora de las tec no lo-
gías hace que una ap licación pue da utili zar numerosos len guajes para su creación.

• 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.

Debido a la proliferación de aparatos móviles para acceder a Internet, ha aparecido un


nuevo modelo de aplicación (app) para est e tipo de aparatos qu e rivaliza dir ectamente
con las aplicaciones we b.
40 IMPLANTACiÓN DE APLICACIONES WEB

1.10 T EST D E REPASO


1.- ¿Cuáles de las siguientes son tecnologías Si queremos crear una aplicación pensada
del lado del servidor? para utilizarse en un móvil y necesitamos
JavaScript que esa aplicación maneje la cámara del
móvil ¿qué tipo de aplicación necesitamos
b) Pyth on
cre ar?
c) JSP
a) Una web app
d) CSS
Una app nativa
.) J2EE
e¡ Una aplicació n de escritorio
f) HTML
d) Una aplicació n Full St ack
g) PHP
11; Flash El front-end de una aplicación web ...
j) Applet Java ...está en la capa de presentación
ji Servlet Java b) está en la capa lógica
k) Silverlight e) está en la capa de n egocio
n ASP d) abarca la capa de negocio y la lógica
111) jQuery Una aplicación Full Stack es...
n) Perl a) Aque lla qu e utiliza el mismo lenguaje
o) CGI tanto en el front-end como en el
p) Ruby on Rails back-end
h) La que utiliza como servido r de aplica-
1 _
¿Qu é capa es la qu e permite acc eder a las cion es web el propio servidor web
bases de datos en un arquitectura de tres
l) La cubre t odas las necesidades de un
capas de una aplicaci ón we b?
usuario
al Presentación
d) La que se con figura como un servicio
h) Lógica completo de red
e) Negocio
o ,- Una empresa desea manejar un servidor
¿Qué capa es la qu e se en carga de crear el Linux virt ua l en Internet y qui ere acce-
HTML Y CSS de una aplicaci ón web datos der a ese servidor a través de una peti ción
en un arquitectura de t res cap as? http, El t ipo de cloud com puting a utilizar
a) Presen ta ción es:
b) Lógica a) SaaS
e) Negocio b) PaaS
e¡ laaS
4. - En un modelo MVC¿Qu é par t e es la qu e se
d) Ninguno de los anteriores
encarga de recoger y en cauzar las peticio-
ne s del cliente?
al Modelo
b) Vista
l) Controlador
UNI DAD 1. CONCEPTOS SOBRE APLICACIONES W EB 41

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

, - Una empresa decide implementar un ser- ¿Cu ál de las siguientes afirmaciones es


vicio en la nube, pa ra ello aloja el servicio verdadera?
en la nube alquilada de otra empresa, ya No se pueden crear aplicaciones web
que no quiere implementar servidores actualmente con el lenguaje PHP
propios ¿Qu é tipo de nube utilizará?
No se pu eden crear aplicaciones web
Nube pública actualmente con el lenguaj e JavaScri pt
Nube privada ~I No se pueden crear aplicaciones web
e) Nube h íbrida actua lme nte con el len guaje Java
di "Ningu no de los an teriores En las aplicaciones web actua les es
obligatorio utilizar el paradigma MVC
¿Cuá les de los siguientes conceptos se
Todas las respuestas anteriores son
iden t ifican con la web 2.0?
falsas
RLA, Aplicaciones Enriquecidas de
Internet ¿Cuáles de las siguientes son ventajas de
Web semántica las ap licaciones web respecto a las aplica-
ciones de escritorio?
Web estática
Son más potentes
Web social
Aseguramos que el usuari o dispon ga
Web inteligente
siempre de la última versión
el SOA
No se requiere instalación
,'1
¿Cuáles de los siguien t es con ceptos se aso- Requieren conec tividad
cian a la web 3.0 más qu e a la web 2.0? Apro vechan mejor el hardware
RLA, Aplicacio nes Enriq uecidas de Disponibles desde cualquier dispositivo
Internet
Web semántica
Web estática
ti) Web social
Web inteligente
SOA
UNIDAD 2

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

2.1 ELE ME NTOS NECESARIO S PARA


CREAR APLI CACION ES WEB
Como se ha visto en la unidad anterior, las aplicaciones web requieren ser impl em entadas en
un servidor en Intern et. Esto comp lica las necesidades que se req uiere n para em pe zar a pr ogra-
ma r, en comparación con lo que se necesita para pro gramar aplicaciones clásicas de escritorio.

Además, como veremos en el Apartado 2 .2 "Creación profesional de aplicaciones web. Modelo de


tres estados", en la página 47, cuando se desarrollan aplicacione s a nivel profesional se suelen
configurar dos entornos de trabajo : uno en un equ ipo local y otro en Internet.

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.

Instalar un servidor de base de datos. Realmente un a aplicación web podría no nece -


sitar de la ins talación de un servi dor de base de datos; pero fran cam ente es rara esta
situació n. Normalmente necesit arem os un siste ma gesto r de bases de dat os.

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.

• Depurador de código. Se trata de un software que se instala en el servidor de aplica-


ciones y qu e permite realizar pruebas con el código. Esta s pruebas sirven para detectar
err ores, cálculo de rendimiento, visuali zar estado de variable s, monitorizar el estado del
servidor...

En el caso de PHP el sistema de depuración de códi go más conocido y utilizado es


XDebug; aunque también se uti lizan Zend Debugger (especialmente para los amantes
de Zend Studio), FirePHP (se utili za como exte nsión del navegador Mozilla Firefox) y
PHP Console (extensión del navegador Google Chrome).

• 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.

Un a desventaja de trabajar con máquinas locales reales es que si cambiamos de máquina


para trabajar tendremos que instalar de nuevo el software de trabajo. Las máquinas vir-
tuales se pueden copiar de un entorno a otro, aunque si hablamos de entornos con dife-
rentes sistemas operativos, podríamo s tener problemas.
46 IMPLANTAC iÓN DE APLICACIONES WEB

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.

El funcionamiento es sencillo, cuando hem os programa do nu estra aplicación y estamos


confor mes con lo realizado en ese punto, grabamos ese estado en nues tro siste ma de
contro l de versiones. Así iremos haciendo con cada situación qu e no s parezca grabable.
Si en algún momento queremo s volver a un punto ante rior, pod rem os hacerlo.

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

2.2 CREACiÓN PROFESIONAL DE


APLICACIONES WEB. MODELO DE
TRES ESTADOS
Cuan do se realiza un a aplicación web con la idea de que rea lme n te sea un servicio final en
Inte rne t, se suelen configurar t res entornos de tr abajo.

D Developm ent, entorno de desarrollo. Normalmente este entorno se prepara en un


entorn o local de trabajo. Es, pues, un orden ador al que acce dem os directam ente, bien
por que es un ordenador físico a nu estr a disposición o bien porqu e es una máquina vir-
tual almacenada en un or denador físico. Este entorno tiene la ventaja de que es rápido
y no necesita conexión a Intern et para trabajar. En este manua l, este es el entorno que
pr epararemos para empezar a tra bajar.

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.

En e! entorno de desarr ollo es donde se enc uentra e! código en fase de pruebas.

• 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.

Lo habitual es utilizar un servicio virtualizado en la nube com o AWS de Amazon o Google


Compute Engine de Goo gle, que no s perm itirá configurar un servidor virtual insta-
lando todo lo necesari o (Siste ma Op erativo, Servidor de Aplicaciones, Siste ma de Base
de dato s, Depur ad or...) y de esa forma podremos acceder a él, n orm alm en te mediante
SSH, como si fuera un serv idor real. Amazo n, por ejemplo no s permite, du rante un añ o,
configurar servidores con mínimas prestacion es en su nub e de forma grat uita.

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

• Production, entorno en producción. Este es el entorn o de trabajo final, el qu e realmente


utilizarán los usuarios. Aquí se trata de det erminar las neces idades de nuestra aplicación:
número de usua rios previstos , transacciones de datos por minuto, acceso concurrente,
escalabilidad... para contratar el mejor servicio posible par a alojar nuestra aplicación.

El código enviado a este entorno es ya el código definitivo .

-
~~ ~
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.

2.3 IN STALACIÓN DEL SISTEMA


OPERATIVO
La elección e ins talación del Sistema Operativo es el primer paso, pero crucial, para preparar
nuestro entorno local listo para crear aplicaciones web; tanto si lo hac emos físicamente en un
equipo como si lo hacemo s en una máquina virt ual.

Fundamentalme nte en cuanto al equipo te ne mos tres posibilidades:

• 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.

2.4 INSTALACiÓN Y CONFIGURAC iÓN


DEL SERVIDO R WEB
2.4.1 ELECC iÓ N DEL SERVIDOR W EB
Una vez instalado el sistema operativo, el servidor web pasa a ser la siguiente decisión . Muchas
veces esta rá determinada por la tecno logía que hemo s elegido para pro gram ar la aplicación
web: por ejemplo, si decidimo s pro gramar en .NET, lo lógico es qu e el servidor sea Internet
In formation Services (lIS), si pro gramamo s en PHP, será más cómodo in stalar Apache , si desea-
mo s hacerlo en ]avaScript será Node.js, etc.

Los servidores web más populares actualme nte son:


Apache. Es un servidor web muy veterano y sigue siendo el más utili zado . Es gratuito,
de código abierto y francamente robusto. Actualme nte está perdiendo cuota respecto a
otros debido a la nueva naturaleza de las conexiones de usuario (más veloces y con requi-
sitos continuos de modificaciones de datos) .

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.

• lI S. El servidor web de Microsoft es otra opción. No es gratuito aunque aparece como


componente de los sistemas Windows Server (tam bién en los Windows normales de
tipo Professional y Enterprise). Está mu y preparado para pro gramar aplicaciones web
utilizando tecnologías de Micro soft, pero permite ser utilizado con otras tecnologías.

LiteSpeed. Es un servidor web de código cerrado y propiedad de la empresa del mismo


nombre. Permite leer las configuraciones de Apache y le reemplaza en muchos servido-
res por ser, según parece, más fácil y veloz. Hay una versión gratuita y abierta llamada
Open LiteSpeed.

• Apache Tomcat. Servidor web pensado para ejecutar aplicaciones Java.

• 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.

Servidores Web - cuota de uso

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)

Ser v id or es Web - cu o ta de uso en los


s itio s más populares

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

Número total de sitios we b 1,';2..s sitios web


que usan el se rvidor
Figura 2.4: Uso de los difer en tes servidores web y correlación con el uso de esos servidores segú n tengan los
sit ios web má s o m eno s t ráfico. Datos de w3tec h s.coJ11 (abril ao ry)

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 .

2.4 .2 IN STALAC iÓN DE APACHE


2.4 .2.1 LIC EN CIA DE APA CH E
Apache Http Server (más conocid o simpleme nte com o Apac he) es un software de código
abierto bajo una licen cia de tipo Apac he License, que es una varia nte de la licen cia GPL; lo qu e
significa que , incluso, se puede modific ar el código librem ente y gene rar una nueva variante
per son al de Apache , sin obligación de ceder nu estro código de forma abierta. Aunque en todo
momento deberemos de mo strar un aviso indi cando qu e se trata de una variación hecha sobre el
software Apache Http Server con licencia Apache. En definitiva, la licencia de Apache es una de
las más libres qu e existe n .

2.4.2.2 FORMAS D E IN STA LA R APA CH E


Pod em os instalar Apache compilando su código fuen te, y así m antener el espíritu de tr abajo
del software libre, a la vez qu e intervenimos en todos los aspec tos de la instalación, realizándola
absoluta mente a m edida. La otra opción es descargar código ya compilado y ejecutable mediante
archivos binarios, qu e en algunos casos requiere de la ejecución de un softwa re instalado r.
UN IDAD 2. PREPARACiÓN DEL ENTORNO DE TRABAJO 53

Las diferentes posibles in stalacion es se pueden examinar en la página oficial de Apache:


http: //httpd . apac h e.o~

2.4.2.3 ESTRUCTURA DE D IRECTORIOS D E APA CHE


Una instalación típica posee los siguientes subdirectorios dentro del directorio de instalación
de Apache .

DIRECTORIO CONTENIDO / USO


hin Archivos ejecutables. Contiene to dos los programas que tiene Apache
para confi gurar, gestionar, ejecutar o detener el servicio qu e ofrece.
cgi-hin Direct ori o qu e se usa para almacena r pro gram as del lado del servidor.
conf Contien e los archivos de configura ción de Apache .
error Archivos que contienen los mensajes de err or del servidor (en vario s
idio mas).
htdocs Directorio por defecto en el que se guarda n las págin as web. Raíz po r
defecto del sitio web prin cipal que sirve Apache.
icons Carp eta qu e contiene los icono s que usa el servidor para mo strar en
algunos de sus mensajes.
in clude Archivos de cabecera del código fuente de Apache .
lih Contiene arc hivos de librería de Apache.
logs Archivos de información sobre conex iones y err ores acaecidos.
manual Contien e el manual de Apache.
modules Módulos y exte nsiones del servidor.

2.4 .2.4 IN STA LACi Ó N BIN A RIA EN W IND OWS D E APA CH E


La fund ación Apache ya no distribuye instal aciones binarias para Windows en su página web,
solo distribuye el código fuen te. Por lo que hay que acudir a tercero s par a obtener archivos bin a-
rios de instalación .

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

A . P .A. C f-I ¿ . on: Apache lounge


weumesters
Versión del compilador (VCn)

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!;', ,

A pach e 2A binaries VC11


;;:,t' c rvctc epr - : ,5 , ~ ¿,¡;r-u U·¡.S. ': t'~f - I'Of\ '. ' 1. 2. : cp en s sl- : ,0. : nl ¡ 11l;' : .;: e pC'(:·8.)<; I b xrr.:2·::,~',:: rc e . s .r . s e:q ;at-2 .: .0

l itio lit c h<JuQ,,¡u9


Apa che "lA .tJ Wm(,4

Dooot, Versiones recomendadas


'!wit tht:2 .4.1 2 Wm32

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.

2.4.2 .5 IN STALA Ci ÓN DE APACH E EN LINUX M EDIANT E CÓ D IGO


FUENTE
La ventaja de instal ar utili zando dir ectamente el código fuente es qu e no importa bajo qué dis-
tribución Linux este m os ya que funciona para todas. Además , las instalaciones por código fuente
no s permiten configurar todo el proceso y decidir exactamente dónde y cóm o vamos a reali zar
la in stalación. Es la instal ación recom endada en entorn os de producción. La desventaja es que es
una forma de in stalar compleja qu e requ iere conocer mu y bien tanto el sistema operativo como
el funcionami ento del propio servidor Apache.

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 :

[1] Descar gar el código fuente de la dirección http://httpd.apache.org/downl oad .cgi

[2 ] Descomprimir los archivos


U N IDAD 2. PREPARAC iÓN D EL ENTORNO DE TRABAJO 55

[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

[4] Configurar y compilar el código fuente

[5] Hacer que el directorio bin de Apache forme parte del PATH del siste ma

[6] Si se desea, configurar Apache como servicio de Linux

ACTIVI DAD 2.2:


• Realiza la Práctica 2 .2 "Instalación de Apache en Linux mediante el códigofuente", en la página
93
• Intenta realizar esa mism a práctica para un Linux tipo Red Hat y para otro tip o Debian

2.4.2.6 IN STA LACI Ó N EN LINUX M EDIANTE PAQU ETES


Ind udablemente es la opci ón favori ta para in stalar Apache en Linux. Es má s fácil, más cómoda
y práctica. Tiene la desventaja de que es menos personalizable y que la distribución de dire ctor ios
se hace sin nuestra intervención; lo que dificulta conocer dónde se in stala rea lmente Apache y
cómo es su est ructura de directorios.

Instala r Apache por paq uetes en sistemas de tipo Red Hat


Actua lmente la uti lidad más habitual para in stalar un paquete en los sistemas Linux de tipo
Red Hat es yum. Apache se instala mediante el comando:
- - - - - - - - • - _ - - - _ r- ... - -_

1# yum install httpd ... .. .. _ _ -' _. __ .. .: :

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

• Los archivos de configuración (concretamente el archivo httpd.con f) está en el directorio


jet cjhttpdjcon f.

• 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

Instalar Apac he por paquetes en sistemas de t ipo Debian


En el caso de Ubuntu y el resto de sistemas Deb ian, se usa act ualm ente el comando
apt -get desde la lín ea de comandos. Sería:
t , . . . .... .. - - :- < ", . , , - _" \' "j; ...~!C:
L~p~-get install apache2 '< • . , _ . __ ':_.....:::.:.:...~

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:

• jetcjapache2 es el directorio raíz de instalación de Apache .


jetcjapache2japache2.conf es el archivo de configuración (que dentro hará referencia
a httpd.conf).

• 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.

• La raíz de documentos, el equivalente al directori o htdocs en Windows,


es el dir ectori o jvarjwww. Es decir, cuando escribimos en el navega-
dor http:/ /localhost se inte nta rá mo strar el contenido del archivo
jvarjwwjindex.html.
Aunque la gestión es sencilla (qui zá más que en las otras in stalaciones) sus imp ortantes dife-
ren cias con las otr as in stalacion es, sobre todo por la diferen cia de sus ru tas de instalación , son
un a desventaja para el aprendizaje.

2.4.3 INICIAR Y PARAR LA EJECUC iÓN DEL


SERV IDOR WEB APACHE
2.4.3.1 W IN DOWS
Apache se in stala como servicio de Windows. El arranque y la parada por tanto se pueden rea-
lizar desde la pantalla de servicios o bien, desde un icono qu e Apach e ins tala en la barra de tar eas
alIado del reloj, llamado Apac he Monitor. Este icono se obtie ne del archivo del mismo n ombre
situado en el directorio hin de Apache.

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:

• Instal ar el servidor Apache como servicio en Windows, comando: ht tp d -k i nsta 11

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

Dete ne r el servidor Apache : httpd - k s t o p o con net s t o p a paehe2 . 4


• Reiniciar : ht t pd - k r e s t a r t

Desinstalar el servicio: httpd - k un in stall o con el comando Windows: s e delete


apae he2.4

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 ):

ht t pd - k start . lni cia el proceso httpd; es decir ejecuta el servidor Apache.

ht tp d - k sto p . Det iene el servidor.

11 httpd - k res tart . Reinicia el servidor.

httpd sin parám et ros, lanza el servidor

• eat / raí zApache/log s/httpd . pid xargs k Ll . Elimina el proceso


í

cuyo identificad or (pid) se encuentra en el archivo httpd.pid (dentro de la car-


peta lag de Apache); es decir, elimina el pro ceso servidor de Apache. El archivo
httpd.pid se crea cad a vez qu e se ejecuta Apache, precisamente para grabar el identifi-
cador de proceso.
A veces conviene realizar esta operac ión porque solo con detener Apache no basta para
realmente pararl e.

2.4 .3.3 OPC IO NES DEL CO MA NDO HTTPD


El programa qu e permite indicar un servidor Apache es httpd. Algunas instalaciones usan,
en lugar de httpd, apa chectl o apac hez aun que no tienen exacta me nte las misma s opciones. Al
ejecut ar httpd se pu ed en utilizar estos parámetros:

-k start Lanza el servidor Apache


-k stop IPara el servidor Apache
-k restart Reinicia el servidor Apache
-D no mbre IDefine un nombre para las dir ect ivas <IIDefine name>
-d directorio Permite indicar un dir ectorio raíz alternativo par a Apach e
-f rutaArchivo Permite indi car un archivo alte rn ativo de confi guración
-c "directiva" Pro cesa la directiva indicada antes de leer la confi guración
-c "directiva" Pro cesa la directiva indicada despué s de leer la configuración
-v IMuestra la versió n de Apache
-v Muestra las opcione s de compilación
58 IM PLANTA Ci ÓN D E APLI CACION ES WEB

OPCiÓN SIGNIFICADO ., -,

-h Ayuda para conocer las opciones de httpd


-1 Lista de módulos com pilados
-L Lista de dir ectivas
-t Ejecuta el analizador de sintaxis para los arc hivos de configuración
de Apache
-T Igual pero no comprueba la sintaxis

La ubicación de httpd depende de la instalación (como se ha comentado an teriormente); lo


más habitual es que se encuentre en la carpeta bin dentro de la raí z de inst alación de Apache .

2.4.4 FU NC IO NA M IENTO DE LAS RUTAS EN U N


SERV IDOR W EB APACH E
Salvo qu e modifiquemos la configuración de Apach e, la carpeta por defecto donde alojar
las páginas del sitio web es htdocs en la raíz de instalación de Apache o bien www (en muchas
instalaciones Linu x su ele ser /var/www/html). A ese directorio se le llama raíz de documentos
(DocumentRoot) y, por defecto, es la u bicación física de la raí z del sitio web .

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:

URL EN EL NAVEGADOR RUTA DEL ARCHIVO QUE SE MUESTRA


EN EL NAVEGADOR
http.y/ n om breServidor /var/www/html/ in dex.html
http:// n om breSer vicl or/ pagin a3·html /var/www/ htrnl/ pagin a3.html
http:// nombreSer vidor/ documentos /var/www/htmljdocumen tos/ index.html
http:// nombreServidor/doeumentos/opeiones.html /var/www/html/docul11entos/opeiones.htl111
http:// nol11breServidor/docul11entosjtxtjtextoI.htl111 /varjwwwjhtmljdocul11entosjtxtjtextoI.htl111

2.4.5 FUNCIONAMIENTO DE LA CONFIGURACiÓN


DEL SERVIDO R APACHE
2.4.5.1 INT RO DU CCi ÓN
Para modificar el func ionamie nto de Apache , se utilizan sus arc hivos de configuración. El
pri ncipal es httpd.conf (en algunas instalaciones es apachez.conf) que se encuentra, normal-
me nte, en el directorio con f de la instalación de Apache.

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:

• Directivas. Se trata de una palabra clave a la qu e se sigue un valor. Por ejemplo:


Li sten 80

Indi ca que el servidor Apache usará el pu erto 80 para comunic arse.

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:

<Dir e c t or y / us r/ l ocal / a pa c he/ ht do c s/d i r 2>


Deny fro m a 11
Allow from 192 .1 68.4 . 21
</Directory>

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.

2.4.5.2 ARCH ¡VOS .htaccess


Los ar chivos htaccess son archivos de configuración, se colocan en un directorio. Tienen las
mism as posibilidad es qu e el archivo httpd.conf, pero su configuración solo se aplica al directorio
en el que está ubicado el archivo.
Por ejemplo si colocamos un arch ivo .htaccess en un dir ect orio con creto y le a ñadimo s la
directiva: Di rectory I ndex i nd ice. htm 1, conseg uiremos que la página de ín dice de ese direc-
to rio ya no será la típica index.html sino la página indice.html. Es decir, hem os aplicado un a con-
figuración para ese directorio conc ret o.

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

2.4.5.3 CO N TE NE DO RES O SECC IO NES


Como se ha come ntado anteri ormente , Apache utiliza en los archivos de configuración una
serie de con te ne dores o secciones, de modo qu e las directivas que se coloquen dentro de un con-
tenedor se aplican solo a los eleme ntos a los qu e se refiere dicho conte nedor.

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.

La sintaxis de un a sección o contenedor es:

<nombre Se cci ón a rg ume ntos>


direct ivas ...
</n ombr e Secci ón>

Lista de secciones o conte nedore s habituales:


Di rectory. Permite establecer un a con figuración para un directori o concreto . Ejemplo:

<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:

<Fi les privado.html >


Requ i r e a l l deni ed
</F i les >

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:

<Location / pr iv ado/ >


Require all deni ed
</Loc at ion >

En el ejemplo, la dirección http://loca lhost/privado (si el servidor es local) no será


acces ible.

• 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.

• IfD efin e. Directivas a ejecutar si se pasa al servidor Apache un comando concreto


durante su ejecución.

IFModul e. Directivas a ejecutar si Apache ha cargado un módulo concreto .

2.4.6 PRINC IPALES DIR ECTIVA S DE APA CH E


Las directivas se pu eden pon er dentro de una sección o bien fuera de cualquier sección, lo que las
convierte en globales. Muc has directivas solo pued en ser globales. Se comentan , breveme nt e, a
continuación las directiv as más importantes.

2.4.6.1 DIRECTIVAS DE CONF IGURACiÓN GENERAL DEL SERVIDO R


• ServerN ame. Nombre del servidor (para servidor local se utiliza localhost).

• 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

• DocumentRoot. Ind ica la ru ta raíz de los documentos de Apache . No rmalmen te es la


ruta al dir ectorio htdocs.

• 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:

Directorylndex index .php ind ex.html ind ex .txt


62 IMPLANTACiÓN D E APLI CACIONES WEB

En el ejemplo, se ha establecido como archivo índice a index.php, si no existe se buscará


index.html y si tamp oco existe a index.txt. Si no hay ninguno de esos archivos, entonces
se mostrará el contenido el directorio o un error (dependie ndo del estado de la directiva
Indexes que se comenta más adelante) .

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.

2.4.6.2 CO N FIG U RAC iÓ N D E LO S ARCH IVO S LO G


• ErrorLog. Ruta al archivo LOG de errores que permite examina r los prob lemas acaeci-
dos en el servidor Apache .
Er rorLog " logs/er ror log"

• 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

documentos, en su lugar podamos mo strar el contenido de otro directorio, que puede


residir incl uso fuera del directorio de documentos por defecto de Apache . Ejemplo:

Alias / de pa r t a me nt oVe nt a s e: \otros \ventas

Cuando queramos ir a la ruta/departamentoVentas, mostraremos el contenido del direc-


torio (Windows) e:\otros\ventas.

• 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

Admite indicar si el salto es permanente (permanent) o temporal (temporary). Este


texto se escribe antes de la ruta al directorio (es dec ir, justo tra s la palabra Redirect), Por
defecto el valor es temporary . La diferen cia está en el código qu e se envía al navegad or
(en el primer caso un cód igo 303 y en el segundo un código número 4IO)

2.4.6.4 D IRECT IVAS D E PERMI SO DE A CC ESO


Allow. Solo se admite en secciones Directory o dentro de archivos .htaccess. Permite
ind icar des de qu e host se per mite el acceso al directorio. El formato es:

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.

• Order . Especifica el or den en el qu e Apache tie ne qu e aplicar las directivas an teriores.


Ejemplo (que es el qu e fun cion a por defecto) :
Order Deny,Allow

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).

AuthNarne. Indica el texto que aparecerá en el cuadro qu e pida el usuario y contrase ña


al usuario para su autentificación.

• 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.

2.4. 6.5 D IRECT IVAS PARA D IRECTOR IO S


Options. Aun que está pen sada para directorios, se admite en cualquier contexto (servidor
completo, sección de servidor virt ual...). Indica qué opciones están disponibles para un
directorio particular. Posibilidades (se pueden indicar varia s):
AH. Todas .
• ExecCGI. Se ad mite la ejecu ción de scripts CGl.
FoHowSyrnLinks. Solo funciona en seccion es Directory y en archivos .htacce ss.
Permite el uso de en laces simbólicos en el directorio.
Indexes. Hace que cuando se use la URL en el servidor hacia un directorio sin página
índice, se muestre un listado del directorio.
SyrnLinkslfOwnerMatch. Sigue los en laces simbólicos del directorio solo si pertene-
cen al usuario que hizo la petición .

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 TAREAS HABITUALES DE CONFIGURAC iÓN


DE APACHE
2.4 .7.1 CA MB IAR EL PU ERTO DE ESCUC H A
Se hace con la directiva List en (véase 2-4.6.r "Directivas de configuración general del servidor", en la
página 6r)

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 .

2.4 .7.3 CA MB IAR EL NO MBRE DE LA PÁGINA í ND ICE


Se encarga de ello la directiva DirectoryIndex (véase 2+6.r "Directivas de configuración general
del servidor", en la página 6r)
66 IM PLANTACi Ó N DE APLICAC IONES W EB

2.4 .7.4 M O DI FI CA R LA U BICA Ci ÓN DE LA RAíz DE LOS


DOC U ME NTOS
Normalmente la raíz del servidor web Apache es el directorio htdocs (que , a su vez, se encuen-
tra dentro de la raíz de instalación de Apache). Si deseamos indi car otro direc torio como raíz del
sitio, en ese caso utilizaremos la dir ectiva DocumentRoot (véase 2-4.6.1 "Directivas de configura-
ción general del servidor", en la página 61).

2.4.7.5 MODIFI CAR PÁG INAS D E ERROR


El protocolo http devuelve códigos de estado y err or al alcan zar un recurso. Lógicam ente son
considerados err ores cuando al acceder al recur so hay probl ema s: porque no se enc uentra o no se
ha obtenido corre ctame nte . Los códigos más habituales son:
.. '. } <-.J
..
CÓDIGO TIPO SIGNIFICADO .. .
' /
"<~',:' .w·

200 Petición üK, se accedió sin probl emas al recurso


201 correcta Peti ción http realizada y provocó un nuevo recurso
creado
202 Se aceptado la peti ción pero ha habido problemas con
ella
2°3 Información no autoritativa
2°4 Sin contenido
205 Recargar contenido
206 Solo se envió contenido parcial del recurso solicitado
3°0 Redirección Múltiples opciones. Lista con direcciones que el usuario
podría seguir
3°1 Recurso solicitado movido permanentemente, además
se indica la nueva dir ección del recurso
3°2 Igual que al anterior, pero referido a qu e el recurso se ha
movido temporalmente
3°3 Sugerencia de otra dirección
304 Indicación de que el recurso no se ha modificado desde
la última vez que se accedió a él
3°5 Indicación de que se debe utilizar un proxy
4°3 Errores de Prohibido el acceso. En este caso el recurso no está acce-
cliente sible ni aun cuando nos autentifiquemos
4°4 Recurso no encontrado. Es el err or más habitual
4°5 Método de acceso no permitido
4 06 No se acepta los dato s procedentes del usuario (normal-
mente procedentes de un formulario
4°7 Autentificación pro xy requ erida
U N IDAD 2. PREPARAC iÓN DEL ENTORNO DE TRABAJO 67

CÓDIGO TIPO SIGNIFICADO


408 Errores de Tiempo de espera agota do
cliente Conflicto con el recurso solicitado
4°9
410 Recurso no disponible permanentemente
5° 0 Error interno del servidor
5°1 Error de No está implem entado el servicio solicitado en el
servidor servidor
5°2 Pasarela in correct a
5°3 Servic io no dispo n ible
5°4 Tiempo de espera de pasarela agotado
5°5 Versión de http no soportada

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.

2.4.7.6 REDIR ECCIONAR UN RECURSO


Se tra ta de conseguir que cua ndo el usuario acceda a un rec urso, el servidor Apache le lleve a otra
dirección.

Hay dos posibilidad es:

• Directiva Alias (véase 2+6.3 "Directivas para renombrar y redireccionar recursos", en la


página 62). La cua l hace que cuando se usa una determinada ruta, en realidad Apache
carg ue los recursos de una direcc ión local concreta.

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).

2.4.7.7 OC U LTAR LISTA DO D E D IRECTO RIOS


De man era predeterminad a, cua ndo navegam os ha cia una ruta como www.miserver.comjdocs,
correspondiente a un servi do r Apac he, se bu scará si existe un a página ín dice (no rma lme nte
index.html) en el directorio docs. Si no hay ín dice, Apac he muestra el listado de arc h ivos que
tie ne el directorio.

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 .

Si lo que deseamo s es qu e ningún directorio ten ga la posibilidad de mostrar el listado de su


contenido, entonces deberemos observar su configurac ión pre determinada, que suele ser (supo-
nemos ahora que la raíz de doc umentos es c:\Apache24\htdocs):
Docume nt Root "c : /Apac he24/ htdocs"
<Directory "c : /A pac he24/ htdocs" >
Opt i ons llidexes FollowS ymLinks
Al l owOve r r i de None
Require all gra nted
</ Directory>

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.

2.4. 7.8 PERMI SO S D E ACC ESO


Consiguen que un directorio quede inaccesible o no , dependiendo de varias condiciones . Las
directivas relaciona das está n descrit as en el Apartado 2+6.I "D irectivas de configuración general
del servidor", en la página 61. Normalmente, por defecto todo el mundo tiene acceso a to dos
los direct orios.

2.4. 7.9 AU T ENTI FICA Ci ÓN


Una de las opciones habituales de uso en Apache es el acceso a un recur so (como un dir ecto -
rio) para usuari os aute ntificados. Lo habitual es utilizar un archivo .htaccess en el directo rio qu e
con tenga la configuración de acceso que estime mos conveniente .

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

La creación del archivo se hace con:


I . . - - - - _.... - ---. - -- - .,- - .-.- • -.-- -- "
l h ~passwd -c rutaArchivoContra usuario
Ejemplo:
". . ~ .... _.. ---~. ~- .. _.. _~- - - -~- - --,'--~ - - -- ..... -- ------..--1
htpasswd -c c:\passwords\pass1 al~~~o .. .._ J

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 • ~ _._

: ~ ~ p ~ s swd c:\passwords\pass1 guzman


Tras cada comando htpasswd se nos pedirá escribir y confir mar la contrase ña del usuario que
estam os a ñadien do al archivo. Esa contrase ña qu eda cifrada en el archivo de text o passt. Así ire-
mos crea n do las contrase ñas de tod os los usuar ios qu e queram os. Así el arc hivo de contrase ñas
para los do s usu arios creados podría ser:

alonso:$a pr1$0.cDnGTc$ NJrqioRdYayfqiQoGp4yw1


guzma n :$apr1$Ra5 .q5YP$krQ7WzR9SE NsgUefN yTCf/

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:

Require user a l ons o guzman

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

Formato del arc hivo de texto :

grupo1: usu a r i o1 us uar i o2 us ua r i o3 ...


gr upo2 : usua r i o4 usua r i o5 ...

Ejem plo de conte n ido de archivo de gru po:

e d itores: alo nso guzman


a dmi nistra dores : sof ia

Para cargar ese arc hivo de grupo se debe indicar la directiva:

Au thGr oup Fil e c : \passwords \grupos

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):

Requi re group editores

2.5 INSTALACiÓN Y CONFIGURACiÓN DE


PHP PARA APACHE
2.5.1 ¿Q UÉ ES PHP?
Las siglas PHP sign ifican: Hipertext Pre Processor y se tr ata del lenguaje de seri pts de servidor
más popular. Un len gu aje de scripts, en general, es un len guaj e cuyo código se incrusta dentro
de otro . Es el caso de JavaSeript que es código qu e se incrus ta dentro del código HTML de una
página web. Pero , en el caso de JavaScript, está en el lado del cliente; es decir , es el nav egador de
Internet el qu e tiene qu e interpretar el códi go del len guaje script.

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

2.5.2 INSTALACiÓN DE PHP


2.5.2.1 IN STALACi ÓN EN WIN DOWS M EDI AN T E A RC HIVO S
BIN A RIOS CO M PRIM IDOS
Es la instalación recomendada en Windows. Hay posibilidades de instalar med iante insta-
lador, pero es má s versátil la instalación mediante un binario ZIP. Además es la opción compa-
tible con la instalación de Apache m ediante archivos bin arios, explicada en el Apartado 2-4-2.3
"Estructura de directoriosde Apache", en la página 53.
Para rea lizar la descarga del archivo binario correspondiente, hay que ir a la dir ección
http://windows.php.netidownl oadi desde la que debemos leer la información sobre la instala-
ción de PH P en Windows para el servidor Apache (Figura 2.6) a fin de conocer la versión a des-

-
cargar par a nuest ro siste ma .
- _
,~
_ x_

- -

+- e ~ windcws .php.net /dov.níoad {'o '0 -


buH::sfor tflE. vanees Wmdcr.'.'s
.
arch tectw es. PHP 5.6 (5 .6 .8)
- I
If you bke to bu-ld y cur own PHP
brenes, mstrucuons can be toond en 0,),\" OiH' ""~i!z [23.29'·lBJ
the ~·! ~ .
v e tl x 86 No n Thr ead sa re ( 201 S·A pr -16 01 :%:1 8 )

~ [ 20. "'M Bl

sholl : bblb8df589«:973994a2b397c 3326Ofd59cd4907


PECL For Wi n dow s
PECI. "ll.,.r'SI~
for \ 'J lnOOWS ts
~ [ 9.56"' BJ
b€-ing worked en. wrrocws Dl L can
be downlcadednqnt frorn the ~ sba 1: 9 5e46e 226fdb5358c689Ot-75c76Sebe5a962 51f5
'>'.f-t?'X -e.

Th;,. PECLe..tenston ~ and v en x86 fThre a d Safe k201S- Apr-16 0 1:46 :1 8)


sN"S~.;:

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

Which ve rsion do 1 sba 1: bJa08a3 17Odce99io73.a61af 5f7417ge7a((>3c153


<ho ose ?

m VCll x61 Non 'rh re a d sale ( 201 5-Apr · 16 0 1:46 :19)


If yoo are- us:n-;¡ PH? as FastCGI w ith Not e : )(64 buildsa re (IIrently e xoerímenta t
11S )'oo should use the Non-Thread
Safe (NTS) versjons of PI""lP. ~ [ 2 1.3 6M BJ

sbar : 2 e b1 7bfl 6€dJ2f...oc 5 5 S4 1 a 671 ~74 568b8 7 5db


~
asase use t1);io Apacho:- befe s
~ [ 9.4 Hol 8 J
prO 'l ICo¿>(! by ;'Q?Chi' lQ'"Ft(Xo. 'r bev
.l ISO pravide ve n 00105 of zpa cne sna l : fl ff5d7&>flaa J.a4046b746t9ff ': 9339bE-S12ca b
for ,;&6 ar'ld .-&;. W€' use tretr
brenes to bu¡1dthe Aoacbe 54.PIs.

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.

• Añ a dir las extension es deseadas al archivo php.ini

; Muestra errores
di spl ay_errors = On

;Especificar la ruta de l a s extensiones de PHP


extension dir = " ./ext"

; Habilitar el soporte de MySQL


extension=php_mysql .dll
extension=php_mysq li .dll

• En el archivo de configuración de Apache (httpd.conf) añadir el módulo de PHP y el tipo


apropiado para manejar archivo s PHP (suponiendo que PHp está instalado en c.xphp):

# ind icación de l a raíz de PHP


PHPlniDir " C:/php"
#ca rga del módulo de PHP
LoadModule php5_module "c: /php /php5apa che2_4.dll "
#Indicación del tipo MIME apro piado par a manejar archivos PHP
<FilesMatch \ . php$>
SetHandler ap p l i cat ion/x- ht t pd- php
</FilesMatch>
UN IDAD 2. PREPARAC iÓN DEL ENTORNO DE TRABAJO 73

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.

PHP Vers ion 5.6.8

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~ .~

Compiler MSVC, ' (VIsu al e.... 2012 )


Arehitectule x6'
Conligure Commllncf CSCrlptInOIClC Oconfi 9ur e J5 v-enatne -snacsn ct-c uér "-a l sab le- tSa ~l· -· -en abl e--<l ebu ~ -o3tk" ·- "'rtn OlJi. M3~ I- "-
w lt!"l OlJ1..Pd ~SQ ¡ "- '#r(It:l ;:)U1-pI 3". eb- --W1ttl-~ :xlo: I ={~ n p-so"'''Cra :l e\lo6 4\m sta n C llent_ 12_ ~ '6j ¡' .share :1-·-
Wltn-ocI &- 1 2c =" :~ n p- sd ~ \Ora: Ó(' \<5.. ~ n sb nt: lIe"ll_ '! 2_ ' ',Sj " , sha re j · ..-enatJ1e-obje:1<1;,.10 :l,'=..JO~Jr "-en. ole-
com-dOt'leI=sn ared " ..-W 1tl'H'n::r)'i:t =stabc" ..- ;\",tnoUI·a na ~)';:er" ..-#<ltn-e ;;l;:)"

se rvelAPI A,pa: !"Ie2.0 Hanoler I


VIf1UaID if«lory Support ena ble:!
ConfIgLKIl Uon . . IphpJnll Path C' ...mee...-s
loaded ConJlQlnoon File C ,IPH~hp .ll" 1

1 Sea n thi s d a" oc acki lbOnll ..ini files (norlfol


Additional Jni r. s pa rsed tncoe¡
PHPAPI 2013 1105
PHP Extension 20 13 1226
Zend EItens ioo ~20 13 1 226

Zend EI tens ioo Bu itd "-PI220,3 1225 .TSVC,·


PHP EIlens ion B uId ';'PI20~3·225 .7S.\'C l 1
Debug BUIkI nc
Threa d 5af ety e ~ tl le ::l

Zend SigM! Ha ndling a¡satlle ::l


Zend Mem ory Mane oe r eoa ble::!
Zend Multiby1e 5upport dtsable d
IPv6 Support e na ble::l
Dlrace Suppon (Ilsa ble a
Reg is tere d PHP sueems phI), file , giCt:l, data . htUl. ftp :: ;1), compr ess.zJlb. pha'
Reg is tered se eem sccket I ransPQrts " D. 00 ;1
Regi stered SUeam nter s. ccn vertecrv.' l'!'lCf'¡pl· m:! E'n¡pt ' , stnn ~ .rot · 3. ~ 11l0 toupper stnn~ ,t:llo" E'{ , St'l nO s~ :tU.a gs , ccnv e-t -.
cOl'!sumE<I. c ecnur», ::Iltl ,·

ThIS I)~ra~ mal-es use cttse Z~ rK1 SCr.p~ng l an-;u a ~ e EnplM


Zeno En9 m~ \2 6 O. C OP1n;l~t l e) 19? 6·20 15 zs ee - foChnO!09 les

Fig u ra 2.7: Ejemplo de resulta do con P HP perfectam ente in stalado

ACT IVI DAD 2.3:


• Realiza la Práctica 2.3 "Instalación de PHP en un servidor Apache en Windows", en la página
98
• Intenta realizar la mism a práctica para un siste ma de 32 bits

2.5.2.2 INSTALACiÓN D E PHP EN LINUX M EDIANT E EL CÓ D IGO


FUENTE
Se tr at a de realizar una instalación a partir del códi go fuente PHP. Este tip o de in stalación
tien e sentido si también Apache lo habíamos in stalado de esta form a.

Este tipo de instalación permite persona lizar comp letamente la instalación de PHP . Los pasos
fundamentales son:

[1] Descargar el archivo comprimido con el código fuente disponible en la página


http: //p hp .net /downloads.php.
74 IM PLANTACIÓN DE APLICACION ES W EB

[2] Descomprimir el archivo.

[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.

[9] Rein iciar Apache.

[10] Crea r una página PHP de prueba y carga rla en el navegador.

ACT IVI DAD 2.4:


• Realiza la Práctica 2.3 "Instalación de PHP en un servidor Apache en Windows", en la página
98
• Intenta realizar la misma práctica para un siste ma de 32 bits

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

2.5.2.3 IN STALAR PH P U SAN DO PAQU ET ES EN LINUX


Siempre es m ás cóm odo este tipo de in stalación. La pega es qu e debemos con ocer el gestor
de paqu etes del siste ma Linux en el que deseamos hacer la in stala ción y, además, el nombre de
UNIDA D 2. PREPARACiÓN DEL ENTORNO DE TRABAJO 75

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.

2.5.2.4 IN STALACiÓN EN SISTEMAS DEBIAN


El comando de instalación de paquetes sería:
I •• • ~ .- .~ ~ • -~ - ~ -- •• - ••••• " - • • " •

# apt-get install php5 php-pear php5-mysql


Se instala el paquete PHP, junto al módulo PHP-PEAR (imprescindible) y aprovechamos para
instalar el módulo MySQL para PHP.

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.

2.5.2.5 IN STALAC iÓN EN SISTE M AS RED HAT


En este caso se ejecuta :
I ~ yum install php php-mysql . .. o • • - - _. _ _o -_ ••• - _._-- ._-- •• - " ' :

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 - - -- - _.- _ . . . .. . - _. _ . . - - _...

Por ejemp lo, el com an do:


. . --- --_ .. - - - - - - - _ ..... _------- ..... - .. _-
php -v _
TOS muestra la versió n instalada de PH P
76 IMPLANTACiÓN DE APLICAC IONES W EB

2.5.3.2 UB ICAC iÓN DE PHP.IN I


El archivo de configuración para PHP es norma lmente php.ini que se encuentra (salvo que se
indique lo contrario) en la raí z de in stalación de PHP. Como se ha comentado en las in stalacion es,
lo normal es cop iar alguno de [os arc hivos semipreparados de configuración tphp.ini-development
o php.ini-production i para tener ya preconfi gurad as las opciones de traba jo, sea n para un ent orn o
de desarrollo o para producción. En el caso de las in stalacion es por paquetes de Linux, dispondre-
m os directam en te de l arc hivo php.ini con opciones ya precon figurad as.

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 .

2. 6 IN STALACiÓN Y CO N FIG U RAC iÓ N D E


MYSQL
2.6.1 INTRODUCCiÓN
MySQL es un Siste ma Gestor de Bases de Dato s. Tradicionalmente se ha unido a Apache y
PHP para formar una pila de software capaz de dar sustrato a la creación com pleta de aplicacio-
nes web. Actualmente pertenece a la em presa Oracle que con esta compr a intenta asegurarse el
liderazgo en el mundo de las bases de datos para el desarrollo. MySQL mantien e una licencia de
código abierto GPL y otra comercial para las empresas que deseen un soporte completo por parte
de Oracle.

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:

http://dev.mvsql.com /d oc/r efm an /s.6/en linstalling.html

2.6.3 IN STALACi ÓN DE M YSQ L


2.6.3. 1 IN STALACiÓN EN WINDOW S M EDIANT E ARC HIVO
IN STALAD O R
Es la forma más fácil de in stalar, aunque también la que a ñade más software a nu estro sistema.
El in st alador instala:

• 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.

Herramientas, documentación y ejemplos para aprender a trabajar con MySQL, incluido


un conector con Excel y con Visua l Studio.

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

- Thallk VOl! fo r vou r suoport:


-- ~

.
ra ::

M ySQ L I nsta ller 5 .6 .24

Descarga recomendada Lc,;)t.1!19 te r ;: ·G",c·,,~ C A


Jacx:-: 0:20 -0-::5:·36 verr o-rs ~
, ¡,t croscf: \'h'ldow s
OW¡¡: : C'6 0 ú· S::- CE2::
r-c .a: GOOsCe·:oJG5e:'O
w tn do w s (X66, 32 -bit) . M51 r nstaue r

c ontect us n nü ne "

w tuoows ( x86, az -ouj, P-tSI t n s tatter 5.6 . 2..

Rel a t ed Pi H]"S:

Figura 2.8 : Página de descarga del instalador de MySQL en entorno Windows

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.

2.6.3.2 IN STA LACi ÓN EN WI N DOWS M EDIAN T E A RCHIVO


CO M PRIM IDO ZIP
Se trata de no utili zar un insta lador, sin o de un archivo ZlP que dentro contie n e los binarios
de MySQL. Realmente es una opción má s acons ejable, ya que es más ligera y adecua da para usar
MySQ L en entornos de desarrollo en Windows.
U N IDAD 2. PREPARACiÓN D EL ENT OR NO DE T RABAJO 79

Para ins ta lar con bin ario s co mprimidos tendremos que:

[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.

[6 ] Aña di r el directorio bin de MySQ L a la variable PATH de Wi n dows.

[7] Arran car MySQL la primer a vez mediante:


.._- .... '--'---'-- --- . . - -- - .--- ---"- ""
I> mysqld --cansole . _ _ . .__ _ .. _. . ... _ .
A partir de ahí MySQ L ya estará instalado . Si hem os inst alad o PHP co n las librerías de acceso
a MySQL, po dremos acce der a las bases de dato s MySQ L desde PH P.

Arranque y Parada de MySQL. Configuración como servicio de W indows


Se in dica n los co ma n do s de consola relacio nados con el arra n que y pa rada de MySQ L.

11 mysqId. Sin parámetros, sim plemen te lanza MySQ L.

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 .

• mysq I d --remove . Elim ina MySQL com o servicio.

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.

Co m pro bació n de la instalación


Algunos comandos en la cons ola no s permiten saber si la instalación es correc ta:

mysq1 ad min ve r s i on . Obtiene el esta do y versión instalada de MySQL.

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.

2. 6.3.3 IN STALACi ÓN EN LINU X M EDIAN T E BIN AR IO S G EN ÉRIC OS


Esta forma de ins talar permite in stalar MySQL en cualquier distribución Linux. Solo necesi-
ta mo s un prerr equi sito: debe esta r in stalada la librería libaio. La forma de in stalar esta librería
dep en derá del sistema Linux qu e te ngamos . En concreto en Red Hat se ins tala con yum in sta 11
1ibaio y en Debian con a pt- ge t in sta ll li bai o1.
J ~ t' ·' )"S O ~ : : D c> ·.vn ! o a d . )( w:~ •

~ -1. e mys cl.com

MySQL Comm uni ty Serv er 5.6.24

: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
~ .

T.J."';· " ,E .--1"

2.~¡
¡.

,.tI> ~'¡1II). comprr ssec s ~_ 2!.


,. ~: . , , ! . , , ~ , , '! > ,,- '; Cl. .

~~ 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

Para realizar la instalación , hay qu e rea lizar estas tareas:


UNI DA D 2. PREPARAC iÓN D EL ENTORNO DE T RABAJO 81

[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):

!# mysql_install_db - - us e r =as ir . --.- _..

[5] Lanzar por primera vez MySQL con e! comando:


. -..,. -. _. . ,----

~ ~y~_q l_~_"""~a ~~ -=- u_s~!=a s!:r:: _ ~ __ __ _ ___ ____ __ _ _ _ _ __ __ _ _ ~ __ . '


El rest o de veces qu e arranq uemo s MySQ L, deberem os estar conectados con el usu ar io rela-
cionado con la in stalación (asi r por ejem plo) y ejecutar simpleme nte el comando mysqld .

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.

Arranque y Parada de MySQL


• mysqld. Sin parámetros, sim plem en te lanz a MySQ L.

mysqladmin - u r oo t shutdown . Deti en e MySQ L. Suponien do que e! usu ario roo t


no tie ne contrase ña.

2.6.3.4 INSTALACiÓN EN LINUX MEDIANTE PAQU ET ES


Como siempre es una instalación má s sencilla, pero meno s personalizable. Suponemos ya
instalado Apache y PHP.

Instalación de paque tes en Debian , Ubun tu y similares :

# apt-get install mysq l -iserver mysql-cl errt . í .. _.. .;

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.

Si hemos instal ado pr eviamente la librería phpy-mysql ya podr em os conectar con


MySQ L desde PHP.

• Instalación en sistemas Red Hat


82 IMPLANTACiÓN DE APLICACION ES W EB

En muchas distr ibucion es tendremos qu e integrar previamente el repo sitorio oficial de


MySQL en nuestro siste ma.

2.6.4 M YSQL y MA RIA DB


Con la compra de Sun por part e de la empre sa O racle, la comunidad de desarrolladores de
MySQL tu vo inquietud respecto a la form a de negocio qu e iba a tomar MySQL (que perten ecía a
Sun, y que anteriormente perten ecía a una empresa indepen diente).

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 .

La instalación de MariaDb por paqu etes es:


• Distribuciones Debian
r

~~ pt-g et . J~~~a l} .~.?!..i a g.~ - s er v~! _'!1~ ~ ~. a~!? .__ . __ . _._~

• Distr ibuciones Red Hat


r# yum instail mariadb:"~e~v~~ - ~~~i a db . . -- . . _

En mucha s distribuciones tendremos que integrar previamente el repositorio oficial de


MariaDB en nuestro siste ma .

2.6.5 CONFIGURACiÓN DE MYSQL


Al igua l qu e PHP y Apache, MySQ L dispone de archivos de texto para esta blecer la configura-
ción del sistema. Detall es como el puerto por el qu e escucha MySQL o la ru ta a las bases de datos,
se almacenan en esos archivos.

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:

• En Windows los archivos se llam an win.ini o win.cnf Lo aconse jable es llamarles


win.ini. Las rutas qu e bu sca MySQL, colocadas de las pr imera a las últimas qu e lee son:
UN IDA D 2. PREPARACiÓ N DEL ENTO RN O DE TRABAJO 83

%PROGRAMDATA%\ MySQL\MySQL Server 5. 6\my.ini


%WIND1R%\mi.ini
C:\w in.i n i
raizMySQL\my.ini

En Linux se llaman win.cnf y el ord en de bú squeda es:


• jetcjmy.cnf
• jetcjmysqljmy.cnf
SYSCONFDIRjmy.cnf
$MYSQ L_H OMEjmy.cn f
~j.my.cnf

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 .

2.6.6 ESTABLECI MIENTO DE LA SEGU RIDAD EN


MYSQ L
Por defecto en la mayoría de instalaciones de MySQL, el usuario principal ro ot no tiene con-
trase ña. Eso significa qu e cua lquier person a podría hacerse administrador de nu estro siste ma
MySQL y ocasiona r serios dest rozos fácilme nte. Por ello MySQL proporciona un archivo script
llamado mysqLsecure_installation que no s permite asegurar la instalación. Al ejecutar ese
archivo el proc eso qu e realiza es:

[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.

[2] Cambi ar la contrase ña de root.

[3] Eliminar los usuarios anónimos

[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 Linux mysqLsecure_installation reside en el directorio hin, den tro de la raíz de in stala-


ción de MySQL.
84 IM PLANTA CiÓN DE APLI CACION ES W EB

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.

2.7 INSTALACiÓN DE SOLUC IO NES


APACHE,PHP y MYSQL INTEGRADAS
2.7.1 INT RO DU CCiÓN
La ta rea de instalar y configurar Apache y PHP es tediosa y com pleja. Cuando un a persona está
en proc eso de aprendizaje de PH P, lo qu e la interesa es la solución que le permita de la forma más
rápida practicar con PHP. Eso es lo qu e facilitan las soluciones integradas.

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.

En la fase de producción de un a aplicación web, no se debe in stalar de esta forma un servidor


de aplicaciones y de base de dat os, vale solo para el entorn o de desarrollo o de prácticas. Siempre
es mejor in stalar de form a más personal (de alguna de las formas vistas en los apar tados anterio-
res) a fin de optimi zar la in stalación .

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.

La página de descarga y de documentación es:


http ://ww\v.apachefriends.org /es/xampp.html.

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

~ XAMPP Apache + MySQL + PHP + Perl

¿Qué es XA MPP? ¿Por qué us ar XAMPP?


XAM PP es el entorno más popul ar de desarrollo con PHP
X;' I.\:-:- e-suna 'JS:l";:>:J(t:;:r:ce A=a :"~ ecr- rnetam e- r- gfa:¡lr a \ "¡¡.:J, :J+ lnS'a'éi! c e-
ccoten e f.~:, S O_ PH~ ) ::;'e rl E"ce n eie Ot I ~ S '¡h3 : tVr, oe x.;upp na soc cseñacc
• ~a : 1 .nvta'ec n J contcuraocn
ca -e se- I'CI "'I ~ ~~ ente ' a:;11 C':: ~ ,taI 2 r ', US3r
. cor-p et er-erce ? 'a:u~c

: : XAI.lP;:' ;:'Clra ó .'¡(,AJ.!; ::;' ¡)a la Lln u J. tí ·.l"I~;>:c. -ue os x


WlndOWS
1~3'río5"~: .1 S: -r-:'::' ' :..

Figura 2 .10 : Págin a de desca rga de XAMPP en la dirección https://I\ ww.apachefricnds.or g/es/

2.7.3 INSTALACiÓN DE XAMPP EN WINDOWS


Lo más cómodo es, desde la página de descarga, simpleme nte hacer clic sobre el botónXAMPP
para Windows , se descargará el instalador del sistema para la versión de Window s qu e te ngamos
(32 o 64 bit s).
No obstante haciendo clic en Pulsa aquí para otras versiones, podemos examinar otras posi-
bles descargas. XAMPP siempre sugiere la última versión de Apache y PHP, pero po demos bu scar
una versión ante rior. Además, po demos instalar versiones de XAMPP en formato ZlP qu e no
requieren instalación.
Nada más descargar, podemos cons ulta r la documentación (en españ ol) disponible en la direc-
ción https ://www.apache friends.org/es /fa q windows.htmJ o en el enlace qu e aparece rá en la
ventana.

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

I < Back II Nexl > II Concel I


Figur a 2 . 11 : Asiste nte de instalación de XAMPP con las opciones mín imas seleccionadas,

2.7.4 IN STA LA C iÓN DE XA MPP EN LI NUX


La insta lación en entorno Linux de XAMPP es tambi én muy sencilla, Los pas os serían los
siguientes:

[1] Desca rgar el archivo de instalación correspondiente a nu est ro sistema.

[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:

[3] Lanzar el instalador


. - - ----- - - - - ---- -- ------
L $ sudo ~__
./xampp-linux-*-installer.run
• •• • _

[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:
- - - - - - - - - - - -- - - - -- - - - - -- . -- . , ."'!..~

:$ sudo /opt/lampp/lampp staF!-__ . __ _~


El mismo comando indicando stop al final nos permitirá det en er los servicios.
U NIDAD 2. PREPARACi ÓN D EL ENTO RNO D E TRABAJO 87

2.7.5 MAN EJO DE XAMPP


2.7.5.1 MODIFI CAR LA CO N FIGU RAC iÓ N D E XAMPP D ESDE EL
PAN EL D E CO NT RO L
Una vez instalado puede qu e necesitemos configurar o modificar la instalación. La con figura-
ción de Apache se rea liza median te el directorio apache den tro del directorio de instalació n de
XAMPP y la de PHP en el directorio llamado precisam ente php.

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).

Lanzar y detener Apache (que ya tendrá configurado el mó du lo de PH P) se realiza me diante el


programa XAMPP control dispon e en la car peta de in stalación y en los menús de los programas
del sistema . Este com ponente facilita el inici o y deten ción de los servicios, además de poseer
botones directo s para modifi car la configur ación de los mi smo s.
lB XAMP P Control Panel\'3.21 ( Compiled: May7th 2013 J
Servicios de red
H XAMP P Control Panel v3.2.1 y puertos
Modules ocupados
Service Module PIO(s] Actions
Apache ""-"!I~­Adrrun Panel de configü'raCión

1 j MySQL

-¡ FileZilla

M Arranque y parada Sta rt


. del servicio
Tomcat Start i'jmin_ • Conño

11 51 OS [Apac he] Port 443 in use by "Un~¡;¡;;¡o process" \Vith PIO ~


-0-;';;- 62SI • .• .• . • -1
11 51.03 [Apache) Apache W ILL NOT slart without the confiqured ports free!
11 51 DO [Apache) You need to uninstall/disable/reconfigure the oc~,mg applic ,. . : .• I
11 51 DO [Apache] or reconfigure Apac he and the Control Panel to en on a dlfferent port
115 108 [main] Tile FileZilla module is disab!ed 1
11510S [main]
11,.1 08 [main)
The Mercury module is disabled
TIle Tomcat module is disabled r
115103 [main)
11 51 08 [main)
Sl arting Check-Tirner
Control Pane l Ready
Indicación de mensajes
L
_

__-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.

• Botón Services. Nos proporciona la lista de servicios de Windows qu e ten gamo s


in stalados.

• Botón Help. Ayuda de XAMPP.

• Botón Quit. Cierr a el pan el de control.


En definitiva, el panel de control es una herramienta magnífica para gestionar todos los ele-
mentos de nuestra instalació n.

2.7.5.2 CONF IGURAC IÓN M AN UA L DE XA MPP


Hay que tener en cuenta que XAMPP se puede instalar incluso en sistemas Linu x sin entorno
gráfico , por lo que no siempre dispondremos de Panel de Control.

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:

• apache o apachez. Raíz de in st alación de Apac he.

• htdocs. Raíz de do cu me ntos de! serv idor Apac he.

11 php. Raíz de PHP.

• mys ql. Raíz de MySQ L.

• 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.

2.7.5.3 SEGURIDAD DE XAMP P


XAMPP no es un softwa re en el que pr im e la seguridad. Hay qu e re cordar que es un bu en
siste ma para pru ebas, no para producción . Entre los problemas qu e co n lleva un a in stalación de
XAMPP ten emos :

• El usu ario root de MySQL n o tien e contrase ña,

• MySQ L está accesible desd e la red .

• Si instalamos PHPMyAdmin ta m bién pod remos acceder al servicio de sde la red.

• Los ejemplos y tes t están acce sibles.

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

SO LUCiÓ N: PRÁCTI CA 2.1


En esta práctica supondremos que ten em os un a máquina virtual o real con un siste ma
Windows de 64 bit s. Esta instalación será la base de práct icas posteriores. Esto s son los pasos:

[1] Desde la página http://www.apachelounge.com/download/ descargar el archivo ZlP de


Apache de 64 bits VCn . La versión recomendada en el mom en to de escribir este libro es la
versión 2 A .I2 de tipo VCn.

[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 / :
- - - - - - - - - - - - - -- -~ - ~

: . Dc...n lc~d \'IH.a IC - · P.t . x


- -m:_
Al usar este sitio acepta el uso d e cookies para análisis, contenido personarlZado y publicidad. Saber más 0
: . Microsoft

Download Center . E..-


Comp rar '" Productos v Categorias ~ Soporte' t écn ico ... Sequr ida d ...

•• Visual ( + + Redistributable para Visual Stu dio 2012 Update 4

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

~ DC.-:n :': llC '. 'S;J! ! ( - - Ft x

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 ¡
!, ,

Figura 2.15: Inicio de la in sta lación de Visua l CH


Redistributable para máquinas de 64 bit s

[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

[6 .3] Vete al apartado Opciones avanzadas.


[6.4] Haz dic en el botón Variables de entorno.
[6.5] Marca la variable Path en el apartado Variables del Sistema.
[6 .6] Haz clic en Editar.
[6.7] Aña de la ruta C:\A pache24\bin, en la qu e estarán ubicado s los ejecuta bles de
Apache . Observar que cada ru ta en el cua dro se separa con un punto y coma . En
ningún caso hay que borrar las rutas ya grabadas, por lo qu e hay que obr ar con
pr ecaución.

Propiedade; de! ~ i:; te ma i


Ventan a p rincipa l del Pan el de
cont rol
N~~3 Ed ita r la variab le de l sist ema

$' Administredor d e dispos itivos I Opcion es avanzaJas I L_~ I


Nombre de la variable:
6- Co nfig uración d e Acc eso Pera reetaer1, mavor te de estos d L
remot e Valor de la variable :
-9 Prote cc ión d el sistem a
Rendmrerro J
'5 on tgutaClon avanza 11 e
siste m a
,
Hectos vrsue'es. programadon
memore vntuel ¡
; Perfiles de usuario I I¡ "'Jl~SER_Of-poo.
venabe Valor

Ccrñoaracióndel escreonc co I os Vlndo,.. ,sJ ..rr


me C:\Windows\,system32¡C:\.. ·!Jndows;C:\.. .
.COMj.EXE;.BAT;.O·1O:.VBS ¡.\'BE;.JS¡... . -
~------;:~~~~~~~~~~
lnid o y recuperación 1
Inicio del set eme. errores del S:S I

o 1I Y-' deert~m 111: ¡ .


:~._-- _._, ~!
I

.
~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

windows está act ivado

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

nombre par a el servidor. Lo cual se puede arreglar más ta rde en el archivo de


configuración de Apache; en todo caso no afecta a la ejecución del servidor web
Apache.
[7.3] Ejecuta el comando httpd -k sta rt , Con este comando Apache debería
arra ncar.

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

Práctica 2.2: Inst ala ción de Ap ache en Linu x m edi ante el


código fu ente

SOLUC iÓ N: PRÁCTICA 2.2

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:

Linux tipo Debian:


I.?l'. apt-get update _ ..~ ~ _ .;
94 IM PLA NTACi Ó N DE APLICAC IONES W EB

Linux tipo red Hat:


!~ yum update '.,._ • .
"
• _ __v r ~ ~
:~ ''-;~
__ ....... ~

[2] Descarga el código fuente. Vete a la dirección http://htt pd.apache.org/download.cgi y des -


carga el archivo comprimido en form at o gz (podriamos utili zar otro formato comprimido
también) .

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'-{"'~ )

• saurce ' hr:~~1 PGP] I tlli~ J [ ~]


• CO'lmbuw.12 · e-"a',e, _
• SPOI'SQfS
• S['pn';orsh'R • S~CJrl1\' ftf'1 nIki?!! pf'lld1'-'s

• O'h?! fe''''<.

Apache HTTP Server 2.229 (htlpd) 2014-09-02


The Apache HTTP Server Project IS pleased 10 announce rbe release 01Apache HTTp se tver (httpd)verslon 2_2.29 .

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

• Source: hnQ:!-2.? ~>S.;(lf 0~ I PGP ] [ ~, J [ lli6l J


• source . I,nn;;·:.?2 ~·S ~:.¡r tJ?2 [ PGP ] [ ·.'D~ j [ S"¡Al ]

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

[3 ] Descomprime el código fuente. Por ejemplo, con el comando:


,- - - - - .... .- - -" - . -- - -- - ~-- --- - ......... -. --------~

c$ tar v~xf _ht!_l~d-2.4:J.2:.tar.g~ _ _ _ _ ';

El resultado es un directorio que contendrá los archivos fuente de Apache . Borramos el


archivo comprimido original.
I - - - -- - - .- - ----- -- - - - - -~

$
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'"

,# apt-get insta 11 bu i l d-essent ~ ~ ~ . , _ .".: . ' ':J,

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).

En otras distribuciones deberemos comprobar que tenemos esos paquetes in stalados.

[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

Figura 2.20: Página de descarga de las librerías apr y apr -uti l

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

-- . - -_.- - - ---- - -----

~ _~g~~ http://~tP .Cixug.eS/apaChe/apr/apr-util-1.5.4 :tar~·gz~


-~ ~- ---_.~- ----~----_.

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:

:$tar vzxf a pr-1.5.2.tar. gz


• ~.- - - -

.
~ - - - ~ ,~- - - -;- .. ,......... • • • ~

..'
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
--. .-
"' _
---- - - - -., -

OLUTION CENTER5 Go Parallel Resourc es News letters

. ..... .. .
":'.':
...;.;¿:"""", "-/ ."--.... - '::.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

5ummary Fíles Rev iews suooo rt w iki Feature ReQ uests

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

• pc re2 201 5·01-05 70 8 -


OPEN SHIFT'
20 15·01 -05 13 ,1 48 • by Red HatO

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

Los pasos para la instalación de esta librería son:


[6.1] Descarga con el comando wget la versión de sea da de la librería. Por ejemplo par a
descar gar la versión 8.36 de la librerí a:

[6.2] Descomprime el archivo descargado, se creará un directorio (pcre-8 .36) qu e con -


tien e el código fuente de la libr erí a.
. . .... - ._~ --~- . - -"'-~ ._- - ._-- .....
:$ tar vzxf pcre-8.36.tar.gz
$ rm pcre* .gz
[6 .3] Entra en el dir ecto rio y, en modo admin istrador, ejecuta los siguientes coman-
dos (suponemos qu e la librería la insta lamos en la ruta j usrj localjpcr e):
$ cd pcre-8. 36 . . - -....- .. ... ..
I .
$ sudo ./configure --prefix=/usr/local/pcre
$ sudo make
sudo make install
[7] Configura el código fuente de Apache . Tras haber cu m plido los req uisitos anteriores, pode-
mo s compilar el códi go fu ente de Apache. Bastará con en trar en el directorio de Apache
que con tie ne el código fue nte y, en mod o ad ministrador, lan zar el siguien te comando (co n
pr ivilegios administ rativos):
r. -- -- - .
¡$ sudo ./configure --prefix=/usr/local/apache2
: --enable-so - -with-pcre=/usr/local/pcre I

--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).

[8 ] Com pila e instala de Apache . Se realiza mediante los co man dos:


$ sudo make .. ... ...- . . .
audo vmake. instal1 ___ _ . ._. . .._ ._. __ _ ..
[9] Añ ade la carpeta bin al PATH del sist em a. De esa for ma los comand os de Apach e serán
accesi bles desde la línea de com andos de Linux. Para ello, basta encaden ar la ru ta a la car -
peta bin de Apa che en el PATH, mediante este coman do:
r--··---·---··_·---·· - - -oO- -- - - - -- -- •• - - - - - - - - -
[expor f PATH=$PATH :/usr/loca] (apac:~~~/.E_in _ _ _ _
Para qu e ese comando sea perm an ente y al inici ar sesión ya esté funcionan do, esa lín ea
deberí a esta r en el archivo .bas h_profile, en .bash_rc o en .profile (depen derá de la distri-
bu ción de Linux) en el directorio home de nuest ro usu ario. Si deseamos modifi car el PATH
de todos los usu ario s del siste ma, se coloca la lín ea en el archivo j etcjprofile.
98 IMPLANTACIÓN DE APLI CAC IONES WEB

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!

Práctica 2.3: Instalación de PHP en un servidor Apache en


Windows

SOLUCiÓN: PRÁCTICA 2.3

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 :

ti! Adnú ".istrad or: Símbolo c el sistem a

: , 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 >

Figura 2.22: Comprobación de la versión instalada de Apache

Mediante este comando tendremos la versión de Apache, se nos indicará además si es de 32


o 64 bits y además la versión de Visual C++ con la que se ha compilado Apache.

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>

[9] Reini cia Apache.


[10] Crear en la raíz de docum entos de Apache (c: \apache24\htdocs) el archivo prueba.php con
este contenido:
<?php
phpinfo ( ) ;
?>

[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).

[2] Descomp rime el archivo descargad o


j ~ - •••

:$. tar vzxf php.5: t.ar, g~ . . .__ . ... . .


[3] Crea el dir ectorio en el qu e se in stalará PH P:
l :i!...~~d.!r j us r / l oca l / php ... _ . _.__... ..__.._. _
[4] Puede ser necesario instalar el paqu ete Iibxmlz-d ev y el intérprete de Perl. Para ello se eje ..
cuta este comando:

• En Linux tipo Debian :


r--- _. -- --.' - -' ------ --- - ------.... -.-- --_._--
['"' apt-:-get i~sta~ 1 1ibxm12-dev _ ¡:>~.rl . _.. ._
• En Linux de tipo Red Ha t:

[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).

[6] Compila e in stala el código mediante estos comandos:


. - - - - - - - -- <._. - - . - - . __ ._-- -~---------- - - - - - - - ._._ •• _.

'"' 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 -- .~.

1# cp php, ini-development /usr/local!php/lib/php .'ini : ,. ',: .,; l.: . . J

[8] Modifica (o a ñade si no estuvieran) estas líneas en el archi vo gen eral de configur ación de
Apache:

LoadModul e php5_module mod u l e s / l i bphp5 . s o


<Files Match \ . ph p$ >
SetHan dl e r a pp licat ion/x- ht t pd- php
</F ilesMatch>

[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

[13] Comprueba que , en el navegado r, aparece la página de inform ación de PHP.

Práctica 2.5: Instalación binaria mediante archivo Z IP de


MySQL en Windows. Conexión a PHP
SO LUC iÓ N: PRÁCTICA 2.5

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.

Pulsa el botón Downlo ad cor respondiente al archivo de instalación elegido .


102 IM PLANTA CiÓN DE APLICACION ES W EB

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.

[2] Extrae el archivo ZIP en la ruta Cismysql.

[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

[5] Coloca el directorio bin de MySQ L en el PATH de Windows.

[6] Arranca por primera vez MySQ L:


- ~- - '"
> mysqld --console o _

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.

Práctica 2.6: Instalación mediante archivos binario s de


MySQL en Linux
SO LUCIÓ N: PRÁCT ICA 2.6

Estos son los pasos:


[1] Instala la librería libaio

• Linux de tipo Red Hat


-.---- ----------------.. _.....
r yum install l ibaio
#

• Linux de tipo Debian


.... - - ------
: ~__~I?~=_g~t _!'!~~~}}_ } i ba.i_~1 o_o. o _ __ _ _ •

[2] Descarga los archivos bin arios de MySQL


[2.1] En sistemas gráficos. Vete a la página dev.mvsql.com/downloads, elegir como
Sistema Linux - Generic y haz die en el botón Download de la parte inferior,
referido a binarios comprimidos en formato TAR gen éricos (no RPM).
U N IDAD 2. PREPARA CIÓN DEL ENTORNO DE TRAB AJO - PRÁCT ICA S 10 3

En la página siguiente podrem os darnos de alta o usar un usuari o y contraseña


de la red de Orade o de MySQL, si dispon emo s de él, o simple mente hacer clic en
"No thanks, just start my download", qu e se encuentra en la par te inferior y que
perm ite iniciar directamente la descarga.
[2.2] Desde la consola. Podemos, como siempre, utilizar el comando wget. Para ins-
talar MySQ L 5.6 en un sistema de 32 bits la descarga de los archivos se hace con:
l ' . . .. -_. - . . . --------~~-~-- - - - -,....--- -. . -:~ r~.· -~ J "(. • ~. :,..-;

:#
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

[3] Descomprime el archivo descargado:


f< \'
i $ tar vzxf rnysql.tar.gz
t........:.-... • __ •• ~ •••• • _ ••• ••• ~ _ ~ . _ .

[4 ] Mueve el dir ectorio que resulta de descomprimir a la rutajusrjlocaljmysql

[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

~ # groupadd rnysq1 . . "


¡# useradd -g . rTlysq 1 .as.i r __. ._. _.____ . _ _ _ _ __:
[5.2] Pero, es más lógico usar un usuario ya existente , bastará con a ñad irle al gru po
creado. Así si nuestro usuario se llama asir, las instrucciones serían:
- ~-- - - - _.
'# groupadd rnysql
# usermod -g rnysql ~ ~~r __ . .__ .. ___

[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.

[7] Lanza el script de instalación de MySQ L:


r------·---- --- - - . - -- -~ .- _.. - ---- - - - - - - - -
:# . /scripts/mysql_instal1_d!>_ . =-=-.l:l.?~E=a~ .ir __ __ _.. __ ___ _ __ .
104 IMPLANTACiÓN DE APLICACIONES WEB

[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 . . '. :~

Si se ejecutó correctamente MySQL, aparecerá un m ensaje en el qu e se n os in dica la versió n


de MySQ L, la forma de con exión e incluso el tiempo qu e lleva en ejecución (Uptime) . De
otro m odo se no s indicará un error.

[10] Desde esa misma ventana de consola, deten la ejecución de MySQL:


I - -P -

l$ /usr! Joca.l/mysql/bin/.my~qld~d,,!~n ...:-_u_ z:o.?-t:: ~~l:l.~~~w.n . oo. _

Si funciona correctamente, en la primera ventana de consola, se detendrá la ejecución de


MySQL

[11) Mo difica la configuración de MySQL. Para ello, edita el archivo de configuración jusrjlocalj
mysqljmy.cnf
. . .. . .... .. . _ .. oo.. • . _ . . ..

$ sudo nano /usr/local/mysql/my.cnf . .


[12] En el archivo confirma que has indicad o correctame n te la ru ta a la raíz de MySQL y a sus
archivos de datos.

bas edi r = / us r /loca l / mys q l


dat a d i r = / us r/ l oca l/mys q l / dat a
Si qu er emos otra ru ta de dat os, deb emos in dicarl o, pero previamen te deberíam os copiar el
conteni do de jusrjlocaljmysqljdata a la nueva ruta de dato s.

[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 - - - ~ .-. _ . - --.-------

,$. /u_sr/}oca.l/mys_ql ¿bin/mysq~ -u ...!:~ot .__ .__ . _ .


[15] Ejecuta el siguiente comando SQL, para mostrar las bases de datos actua les:
mysql> show databases --1

[16] Sal del en torno de mys ql con el coma n do e xi t .


UNIDAD 2. PREPARACiÓN DEL ENTORNO DE TRABAJO - PRÁCTICAS 105

[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

[$ '. /bin/mysqLsecure_installation . .'.

Tras ejecutar el script se rea lizan los siguientes pasos :


[17.1] Si el usuario roo t ya tiene contrase ña, se nos pedi rá intro ducirla y se nos pregun-
tará si queremos cambiarla. De otro modo (que es lo habit ual) se no s pedirá un a
contrase ña qu e tendremo s que introducir dos veces.

[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

ihave a user account created for them. This is intended


lonl y for testing, and to make the installation go a bit
s rnoot her . You should remove them before moving into a
production environment .
I
Remove anonymous users? [Y/n]
[17.3] Se nos pr egunta si desactivam os el acceso remo to a MySQL. También es reco-
mendable responder Y.

[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.

Práctica 2.7: Instalación por paquetes de Apache) PH P Y


MySQL en Ubuntu 14.04 Trusty.
SOLUCiÓN: PRÁCTI CA 2.7

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

[5] Asegura la instalación de MySQL ejecutando el script de seguridad:


~ - ~ - .-
;$ mysql_secure_installation
I _

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,

A las tr es preguntas siguientes responderemos pu lsando Intro, lo cual contesta afirmativa-


mente to das las preguntas para aseg urar al máximo nuestra instalación.

[6] In stalar PH P:
I ._ . - . . -- - .
;$ apt-get install php5 php-pear php5-mysql
I •

[7] Reiniciamos Apache :


!$- ~~ci~ - '~;~~ i~~ -a pa-ch~ 2 - re-~-tart-- -- ---- - - --- --- - ---- ..- - - --.----
• - - - - - ~> ~

[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.

Si la instalación es correcta aparecerá el te xto Conexión correcta

Práctica 2.8: Insta lación por paquetes de Apache + PH P +


MariaDB en CentOS 7
108 IM PLA NTACiÓ N DE APLICAC IONES WEB

SOLUCiÓN: PRÁCTICA 2.8


En este caso in stalar emos MariaDB. Suponemos in stalado CentOS Server en su versió n 7 (sin
instalar modo grá fico para rea lme nte sim ular un ser vidor real). Pasos a realizar :
[1] Instala Apache :
1[ $ ~udo yum insta11 httpd o' o ~' . oo, .. o
..... _ _Oo . ' ~ . . ~ :: __ ~

[2] Arran ca Apac he :


r' ----0-- -- - . . o - o 0"- -- ----- --- ------.- -.- -oo --
.$ sudo httpd -k start
I '

Tras esta instrucción, Apache estará funcionan do

[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:

1$ yum insta 11 mari adb-server mar i adb .. _ _. ,

[5] Inici a Ma ria DB


. _ - - - ----- -- _. - -- -~ -- - - - - - - - -- - - - - - -~ _ . _---_._-_ .._ . .
$ mysqld .
_ _ _ _ u,. .

[6] Asegura la in stalación de MariaDB ejecuta n do el script habitual de seguridad de MySQ L:


- - - -- - --- --_.
;$ mysql_secure_installation
l __ . _ _ _ _ _ _ _ _~ __ ,, ._ ._ ___ ___ _ _ _ _ __ _ . ~

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 _ .. •

[10] Instala PHP


- - -- --

l
$ yum install php php-mysql
oo. •• . . _ _ oo ...... •• • _
UNI DAD 2. PREPARAC iÓN DEL ENTORNO DE TRABAJO - PRÁCT ICAS 109

[11] Reiniciar Apache:

.$. 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.

2.9 PRÁCTICAS PROPUESTAS


Práct ica 2.9: Instalación de Apache en Windows con res -
tricción de acceso a directorios
• Observa la siguiente estruc tura de directorios.

, Disco duro C:\ . Disc o duro D:\

L Privad o L Pub lico

Pro duccion '-----r....-".j Monet

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.

Práct ica 2.10: Insta lación de Apa che en Linu x co n restric-


ció n de acceso a d irecto rios
• Observa la siguiente estruc tura de dire ctorios

O tro s

/ web

Pepe

Privado Prod uccio n Co me rcia l

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

• Observa la siguiente estructura de usuarios

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

Práctica 2.11: Instalación de PH P Y Apache en Windows


con creación de se rvidores virtual es
• Utiliza una máquina local o virtual con Windows instalado . Desinsta la cualquier instalación
previa de Apache .
• Instala Apache en c:\apa che y PHP en c:\ ph p5. Probar que funcionan ambas cosas.
• Cons igue qu e el servido r respon da a la dir ección wV,Iw.prue ba.local.
• Haz qu e la página de portada muestre el mensaje Bienvenido a mi servid or y luego un en lace
para ir a la zona privada (que será el destino http ://www.privado.local). el enlace no funcio-
nará al prin cipio.
• Consigu e qu e al escribir la dirección Vvw.privado .local aparezca la página index.html que
habr ás crea do en la dirección c:\www. privado.
• Logra que cuando el usuario escriba www.ser vidor.local en su navegador, aparezca lo mi smo
qu e con www.prueba.local.
• Hacer que al escri bir www.prueba .localjjorge salte mos auto máticame nte a la dirección
www.jorgesanc hez.net.
• Prohíbe que al usar una URL referida a un directorio, si en ese directorio no hay página
index, que aparezca un error y no se muestre el listado del directorio.
112 IMPLANTACiÓN DE APLI CACION ES W EB

• 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),

Práctica 2.12: Instalación de XAMPP en un siste ma de co n-


so/a Ubuntu Se rve r
• Consigue una máquina con un a instalación de Ubuntu Server.
• Instala en ella XAMPP con al menas Apache, PHP y MySQL
• Haz qu e la página de índice por defecto se llam e index.php y si no, inde x.html.
• Asegur a la instalación de MySQL de modo que el usuario roo t tenga como contraseña el
tex to lib ro -iaw, elimi na los accesos remotos y las bases de datos de prueba y test,
• Consigue qu e los datos de MySQ L se guar den en el dire ctorio joptjdata.
• Crea un servido r virtual en el puerto 8080 qu e mu estre el conte nido del dir ecto rio
jvarjwww.
• Prohíbe que Apa che se mue stre el contenido de un dir ectorio al que le faltan los archivos de
índice nos muestre el contenido del dir ectorio,
• Ha z que solo se pu eda acceder al servidor web por el pu erto 8080 si el origen de la petición
procede de nuestra red local.
• Ha z que los errores de código PHP no se muestren en pantalla.

Práctica 2 . 13 : Insta lación de un siste ma LAMP en una


máquina virtua l Vagrant Ubuntu
• Vagrant es un a excelente herramienta qu e merece una práctica para hacernos idea de su fun-
cionamiento. En Internet encontrarás instrucciones paras solucionar probl em as parecidos
al que se propone.
• Consigue qu e funcio ne Vagrant en tu máquina
• Prepara una máquina Vagrant que utili ce el box Hashicorpfñrecisej z
• Prepara un archivo de configuración que in stala Apach e, PHP y MySQL por paqu ete s y que
comparta el dir ectorio jvarjwwvvde la máquina Vagrant con un directo rio que llam arás html
y que crea rás en el dire ctorio de la máquina vagrant.
• En el archivo de configurac ión, con sigue también mapear el puerto 90 0 0 para qu e a través
de la dir ección localho st.oooo puedas acceder al pu erto 80 de la máquina virtual Vagrant.
UNI DA D 2. PREPARA C iÓN DEL ENTORNO DE TRAB AJO 113

2.10 RESU ME N DE LA UNIDAD


Los desarroll ado res de aplicaci ones web necesit an insta lar numerosas herramien-
tas como son : el sistema operativo, los serv idores n ecesario s (web, aplicac iones y base
de dat os), conectores, herramien tas de edició n de cód igo, depur ad ores, software de
máquina virtual, sistemas de con tro l de versiones y de tes t.

En la creación profesiona l de ap licacion es se utiliza un modelo de tr es estados en el qu e


se distin gue el en t orno de prueba local (Development), un entorno de sim ulació n lo
más real posible (Staging) y el ent orno final en producción (Produ ction). De esa forma la
aplicación se publica con mayores garan tías.

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.

• La configuración de Apache permite delimitar su fun cion amiento y es fundamental


conocer las principales dir ectivas y con figur acio nes, para asegurar y personalizar la
instalación.

• 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

2.11 TEST DE REPASO


¿Qué son Git, Subvers ial y Mercure? ~, Un intérprete de Perl, como
Software de máquina virtual Strawberry Perl
l:,\ Sistemas de control de versione s \. I El compilador de Visual C++
Redistributable par a Visual Studio
("; Servido res de aplicaciones web
d) Las librerías APR y APR-util
(\ Entornos de desarrollo
ei La librería PCRE
¿Cu ál es el servidor web más utilizado en
Internet? ¿Cuáles de estas librerías son necesarias
•1 para in stalación de Apache mediant e su
Apache
código fuente en Linux?
b) nginx
a APR
-~

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

¿Qué software necesitamos como pre- e' En torn o de desarrollo


rrequisito en una instalación Windows d: Servidor de aplicaciones web
de Apache mediante archivos binarios l 1 Servidor de bases de datos
comprimidos? f) Conector a base de datos
La plataforma .NET de Micro soft g, Software de máquina virtual
UN IDAD 2. PREPARACiÓN DEL ENTORNO DE TRABA JO 115

Supongamos que deseamos que nuestro En una instalación de MySQL en


servidor escuche por los puertos 80 y 8080 Linux,¿Cuál es el último archivo de confi-
¿Qué directiva del archivo httpd.conf lo guración que se lee?
conseguiría? / et c/my.cn f
Listen 80, 8080 /etc/mysql/my.cnf
;1 Listen 80 SYSCONFDlR/my.cnf
Listen 8080
I $MYSQL_HOME/my.cnf
el Port 80,8080
e' . . . j .my.cnf
" Port 80
Port 8080 - - En el caso de algun os Linux, MySQL no
forma parte de los repositorios estándar
1'" - ¿Qué directiva permite qu e el acces o a ¿Qué opción de base de datos abierta nos
un det erminad o recurso del servidor esté serviría igualmente por ser compati ble
restringido a un determinado grupo de con MySQU
usuarios?
Orade Data base
Allow
b. Maria DB
Deny
II SQLite
Requ ire
d Tiny SQL
d AuthType
Open MySQL
el AuthUserFile
- ¿En qué siste mas op er ativos se puede ins -
J. - ¿Qué directiva permite indicar que el talar XAMPP?
archivo índice del directorio sea aqu el que
Linux
se llame index.php y si no que se utilice
index.html? Windows
Directo rylndex index.php index.html Mac OSX
b. Directorylndex index.html index .php d' Android
Directoryln dex index .php, index.html 'l. - ¿Cuál es el comando que permite aseg urar
Direc torylndex index.html, index.php una instalación de MySQ L en Linux?
mysqLadmin
- ¿Cóm o se llama el archivo de configura-
ciónde PHP? mysqld
php.ini CI mysqlsecurej nstall
1) php .con f G mysql -o install
cl php .ini-development : ~ . En Windows existe ese mismo comando,
rl php .conf-development pero ¿en qué formato de archivo está?
'1/ Pyth on
En una instalación de software po r código
fuente ¿Qué comando nos permite esta- hl Perl
blecer la configuración de la in st alación? Shellscript
ma ke .bat
make install
configure
detail
UNIDAD 3

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

3.1 ¿QUÉ ES PHP?


3.1.1 LE NGU AJES DE SCR IPT DE SERVIDOR
Desde sus inicios, las página s web se crean me diante el lenguaj e de etiquetado HT ML. El
problema es que HTML es un lenguaje mu y limit ado para atender a los requerimientos que
actualme nte se exigen en las página s web (interactividad, per sonalización , almacenamien to de
información, etc.). Por ello se ha necesitado incorporar nuevos len guajes a HTML. Entre ellos
CSS para dar formato al contenido o ]avaScript para dar interactividad al mismo.

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

Actualmente , aun que otros muchos lenguajes crece n en nú me ro de programadores, lo cierto


es que sigue siendo el len gu aje favorito para pro gram ar en el lado del servi dor. La página w jtechs '
ind ica que es utilizado por el 82% de aplicaciones web programa das en el lado del servidor.

3.1.3 VENTAJAS DE PHP


[1] Multiplataforma. A diferencia de otros lenguajes de script, como por ejemplo ASP y
ColdFussion, se trata de un lenguaje que se puede lanzar en casi todos los servidores y
sistemas (Windows, Unix, Linux, Solaris, Mac. ..)

[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 htt p:/ /\v3techs.col11/t ech nologies/overview/pro gral11l11in g lan guage/all


120 IMP LANTA CIÓN D E APLI CACION ES W EB

3.2 HERRAM IENTAS PARA LA ESCRITURA


DE APLICACIONES EN PHP
Ente ndie ndo que ya tenemos un servidor de aplicacione s PHP instalado según lo visto en el
Aparta do 2.5 "Instalación y configuración de Pl-iP para Apache", en la página 70, escribir códig o
PHP solo requ iere un editor de te xto . Con lo que programas como el bloc de notas de Win dows
o los editores nano o vi de Linu x, serían suficientes.

No obstante, lo lógico, es utilizar software más especializado en crear documentos PHP. En


este sentido ten emo s las siguientes opciones:

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.

Entornos de desarrollo integrado (lOE). Se tr ata de un software más completo qu e


incluye todo lo necesario para escribir aplicaciones PHP : coloreado del código, correc-
ción auto má tica , ayuda con la sintaxis, depura ción, publicación de la aplicación en los
tr es ento rnos de trabajo (desarrollo, prueba y producción) , integración con siste ma s de
contr ol de versio nes , etc.

Los lDEs más populares para program ar en PHP son:


Basados en Eclipse . Eclipse es un entorn o de pro gramación, gratuito y de código
abierto, de aplicaciones crea do para progra mar fundam entalmente en el len guaje
Java, pero que dispone de muc has versiones y exte nsiones que le sitúa n como pla-
taforma para programar en diversos lenguajes. Se ha con vertido en un a de las plata-
form as de pro gramación más populares, aunque en esto s últimos a ños está un po co
más en declive. Las exte nsiones o aplicaciones basadas en Eclipse m ás populares para
pro gramar en PHP son :
Aptana. Sea la vers ión solo para PHP o la completa llam ada Studio Pro con posi-
bilidad de escribir código en varios len guajes, es una de las más populares. Es muy
utili zad a para escribir el código de aplicaciones web. Es un software gratuito .
PHP Oesigner Toolkit (POT). Considerada la exte nsión oficial de Eclipse para
pro gramar en PHP, ha sido la más utili zada po r los program adores de este len -
guaje. Ahora está siendo claramente super ada por la anterior. También es gratuito.
U NIDAD 3. PROGRA MAC IÓN BÁSICA DE APLICAC IO NES CON PHP 121

Zend Studio. Dispone de un framework (una plataforma de trabajo) m uy famosa


para crear aplicaciones PHP de forma más cómoda usando el patrón MVC. Su
entorno compite con los anteriores en prestaciones. Es una herramienta de pago,
para estudiantes se puede obtener por 29$.
Netbeans. Se trata del entorno libre de programación competidor con Eclipse y con
una filosofía parecida, pero en este caso auspiciada por la empresa Grade que es su
pro pietaria. Como Eclipse se dise ñ ó para programar en Java, pero se ha extendido
com o plataforma de trabajo en numerosos len guajes.
NetBeans dispone de un a exte ns ión para PHP e inclu so se pu ede descargar un a ver-
sión ligera de Net Beans solo para PHP. Es un a de las mejores opciones para progra-
ma r en PHP. Aunque pertenece a la empresa Orac1e, es también una herramienta
gratuita y de código abierto.
• Intelly] Idea y PHPStorm. Intelly] Idea es un entorno de programación para Java que
compite con Eclipse y Netbeans en popularidad y potencia. Perte nece a la empresa
JetBrains y es un software de pago. Integra todo tipo de herr ami entas para program ar.
De hecho , es, sin duda, uno de los m ejores entornos de trabajo par a crear aplicacio-
nes web del tipo que sea, gracias a qu e incorpora infinidad de plu gins qu e permiten
crear código HTML 5, [avaScript, CSS, Ruby, SQL, etc. Prácticam ente cualquier tec -
nología de crea ción de aplicaciones web está presente en Intelli)lD EA: po r sup uesto
también en PHP. Por lo qu e es una excelente opción de tr abajo.
Si deseamos concentrarnos solo en crear aplicaciones PHP, basa do en el motor de
ln telli J Idea, disponemos de PHPStorm. Es una versión más ligera, pero solo por-
qu e se ha centrado en la creación de aplicaciones web PHP. Recon oce perfectam ente
HT ML, CSS y JavaScript , y también casi todos los marcos (frameworks) de uso con
estos len guajes como Node.js, Ang ular.js, LESS, SASS, CoffeScript, Zend, etc.
PHPStorm no es gratuita, pero dispone de opcion es para obtener licenci as gratuitas
para profesores, estudiantes (incluso para centros educativos en te ros) y para proyec-
tos de código abier to .
• Visual Studio. El pop ular lDE de Microsoft fundamental está pen sado para crear
aplicaciones web fundame nta lme nte de tipo .NET. Recon oce los lenguaj es funda-
mentales HTML, CSS y JavaScript. De forma nat iva no trabaja con PHP, pero existen
extensiones qu e lo permiten. Así los ama ntes de esta plataforma la pueden utili zar
también par a crear aplicaciones PHP ..
• Herramientas de desarrollo visual. Se tr at a de software que permite crear do cumentos
web dibujando. Muchos tr aen herramientas para pod er trabajar con PHP .
• Adobe Dr eamweaver. Se trat a del software comercial de crea ción de páginas web
más famoso del planeta. Tien e capacidad para escribir código PHP e in cluso facilida-
des gráficas para hace rlo. Es in ferior a los anteriores en cuanto a escri tura de código,
pero muy superior cuando que remos conce ntrarnos en el formato visua l.
• Microsoft Expre ssion Web. Software come rcial competidor del anterior (aunq ue por
ahora mucho menos popular) y con capacidad de usar con PHP.
122 IMPLANTAC iÓN DE APLICACIONES W EB
- - - - _. _ - - - -

3.3 BASES DE PHP


El código PHP se escribe en un documen to de tex to al qu e se deb e indic ar la exte nsión .php.
En realidad se tr at a de un a página web HT ML (o XHTML) normal a la que se le a ñade n etiquetas
especiales.

3.3.1 AYUDA DE PHP


La dir ección http ://php .net nos lleva al sitio oficial de ayuda de PHP. Además, la dir ección
http://ph p.n et/manu al/esl. no s muestr a el manual oficial en españ ol, Cualquie r funci ón o ele-
mento del que deseem os saber su funcionamie nto po dremos bu scarlo en esta página.

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.

ACT IV IDAD 3.1:


• Desde tu navegador vete a la dirección http: //php.ne t/manualles/ y examina la documenta-
ción oficial de PHP en español.
• Esta página tiene que ser una de las referencias imprescindibles para tu trabajo con PH P.

3.3.2 ETIQ UETA <?PHP », t»


El código PHP que incluyamos en un documento web debe de estar indicado de esta forma:

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.3 HTML USA PHP Y PHP USA HTML


Como se ha visto anteriormente el código PHP se incrusta dentro del código HTML. Lo inte-
resante es qu e se pued en incrustar etiquetas HTML dentro del código PHP y tiene sentido, ya
que las funciones de escritur a (ech o y print) en rea lidad escrib en hacia el resultado final, que en
realidad es una página HTML por lo que se pu ede hacer algo como:
<?php
echo "Estoy es t ud i a ndo <stro ng> pr ogr a ma c i ón </strong >";
?>

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

3.3.5 BASE S D E ESCRI TURA


Las normas básicas para escr ibir lenguaje PHP se basan en las de sus len guajes padr es; es decir,
e y Perl. Son:
Todas las líneas de código deben de finalizar con un punto y coma.

11 Se pu ede agrupar el código en bloques que se escriben entre llaves.

• 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.

3.3.6 ESCRIBIR EN LA SAL IDA


Aunque hay mu chas funciones de escrit ura (para escribir en lo que será la página final) las
fun dame ntales son echo y pri n t.

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.

3.4 VAR IABLES


3.4.1 INTRODUCC iÓ N A LAS VARI ABLES
En todos los lenguajes de programación (y PHP no es una excepció n) Las variables son conte-
nedores que sirve n para almace nar los datos que utiliza un programa. Dicho más sencillamente ,
son nombres qu e asocia mos a det erminado s dat os.

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.

El no mbre de las variables se conoce con el término de id entificador de variable. Un identifi-


cador en PHP tien e que cumplir estas reglas:

• 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.

• No hay límite de tamafi o en el nombre.


Por supues to , el no mbre de la variable no pu ede ten er espacios en blan co (de ah í la posi-
bilidad de utili zar el guion 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

3.4.2 DECLARAR VARIABLE S


La prim era sor presa para los program adores de len guajes estructura dos es que en PHP no
es necesario declarar una variable. Simplemente se utili za y ya está. Es decir, si queremo s qu e la
variable Sedad valga 15, haremo s:

$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.

3. 4.3 ASIGNA CiÓN DE VALORE S


Esta operación consiste en dar valor a un a variable y se realiza con el símbolo =. Ejemplo:

$x=12 ;

Como se comentó anteriormente, en PHP no es necesario declarar una variable antes de su


uso.

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";

Se pueden asignar res ultados de aplicar fórmulas mediante operadores, como :

$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:

$x=18 ; l/ as i gnamos un nOme ro


$x=" Hola "; /asignamos un texto
U NIDA D 3. PROGRA MAC iÓN BÁSICA DE AP LICAC IONES CON PHP 127

3.4.4 VARIABLES SIN ASIGNAR VALORES


Un problema surge cuando queremos utili zar variables a las que no se les ha asignado ningún
valor. Como:

<?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:

error_ reporti ng (E_ALL ) ; l/ a v i s a de todos los errores

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
?>

3.4.5 T IPOS DE DATOS


3.4.5.1 NÚM ERO S ENT ERO S
A las variables se les puede asignar valores enteros. Los número s enteros se usan tal cual.
Pueden ser positivos o negativos:

$n1=17;
$n2=-175;

Se puede usar sistema octal si se coloca un cero antes de la cifra entra:

$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

3.4.5.2 N ÚM ERO S EN CO MA FLOTANTE


Los números decim ales en PHP son de tip o coma flotante. Este es un formato para alma cen ar
números decimales uti lizado en má qui nas digitales. La ventaja es qu e se man ejan muy rápido por
parte de un ordenador o cualquier otra máq uina electrónica. Además ocupan poco en mem oria.
La gran desventaja es que no son exactos. Solo no s pu eden asegurar un cierto nivel de precisión.
Si hacemo s operaciones complejas o utili zamo s mu cho s decimales, el res ulta do ya no será exacto .

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.

ACT IVI DAD 3.3:


• Averigua cuáles son los tipos numéricos permitidos en lenguaje C y compáralos con el len-
guaje PHP
• Haz la misma averiguación con el lenguaje Python y toma nota de cuál de los tres lenguajes
(C, Pyth on o PHP) te parece qu e es más sencillo para trabajar con números .

3.4.5 .3 CADE NAS O STR INGS


Se denomina así a los texto s qu e se utilizan en el código. Se asignan a las vari ables entrecomi -
llando (en simp les o dobl es) el texto que deseamos almacenar en la variable. Ejemplo:
$nombre =" J or ge Sánchez";

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:

$frase = ' Ant oni o dijo "Hola" al llegar';

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:

SECUENCIA DE ESCAPE SIGNIFICADO


\t Tabulador
\n Nueva línea
\f Alimentación de página
\r Retorno de carro
\" Dobles comillas
\' Comillas simples
\\ Barra incl inada (backslash)
\$ Símbolo dólar

Las secuencias de escape solo funcionan si están encerra das entre comillas dobl es. Es decir, si
escribimo s:

ec ho 'Antonio dijo \ " Ho l a\ " al llegar';

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

Por lo qu e si necesitamo s incluir el signo $ en un texto, debemo s utilizar su secuencia de


escape :
$t ex t o=" Su precio es de 15\$" ;
ec ho $texto; / / es c r i be : Su pre c i o es de 15$

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

3.4.5.4 BOO LEA NOS


Los booleanos son variables qu e se uti lizan para almacena r resultados de comprobaciones .
Solo pueden tomar como valores true (verdadero) o false (falso). En muchas casos se utilizan
como centine las, variables cuyo valor indica una det erminada situación .
130 IM PLAN TACi Ó N DE APLICAC IO NES W EB

Una simple variable boo leana se utiliza así:


$verdadero=true;
ec ho $verdadero; l/es cr i be 1

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:

Ente r os : cero=false, resto =true

Coma flotante: o.o=false, resto =tru e

• Cadenas: false si están vacías

• Arrays: false si no contie ne n ningún eleme nto

• Recurso : false si el recurso no es válido .

3.4 .5.5 CONVERSIONE S


Debido a que el len guaje PHP permite que las varia bles pue dan tomar valores de diferente tipo
cuando se no s antoje, result a que tien e que intentar que todas las expresiones te nga n sentido , y
así este código:

$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

El texto se en cade na como si fuer an dos strings normales.

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

Podemos usar los siguientes operadores de casting:

• (int) o (integer). Convi erte a entero

• (real), (double) o (flat). Convierte a coma flotante

• (stri ng). Convierte a forma de texto


(array). Convierte a array.

• (obj ect). Convierte a un objeto

3.4.6 REFERE NC IAS &


PHP también ha tomado prestado del lenguaje C++ el operador &. Mediante este operador,
conseguimos referencias. Las referencias son variables que en lugar de almacenar valores , se
convierte n en sinónimos de otras variables. Su uso princi pal lo vere mos cuando lleguemos al
Apartado 4.1.4 "Paso de parámetros por referencia", en la página 170 .

Con un ejemplo, intentar emo s explicar su uso:


$nombre="Antonio";
$r ef=&$n ombre ; II $r e f es una referencia a la variable $nombre
ech o $ref. " <br />" ; Il es cr i be Antonio
$re f ="Marisa"; Il a hor a se asigna el valor Marisa, a $ref
echo $nom bre,"<br />"
Il es cr i be Marisa , a través de la referencia se ha cambiado el
l/va l or de la variable $nombre

En definitiva, las referencias son variables qu e repr esentan a otras variables.

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:

define ( " PI " , 3 . 141592 );

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 ).

3.4.8 VARIABLES DE VARIABLES


Perm iten utilizar en PHP lo que se conoce como macrosustitución de variables. Se trata de
ut ilizar dos veces el signo dólar ($$), de mo do que se toma el contenido de la variable que está
defin ida mediante el segundo signo de dólar y con ese conteni do se da no mbre a un a varia ble. Se
entiende m ejor con un ejemplo:

$x="vari able1 " ;


$$x=5;
echo $variable1; l/es cr i be 5

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).

3.4.9 OPERADO RES


Lo habitual al program ar en PHP es utilizar expres iones que permitan realizar com pro bacio-
nes o cálculos. Las expres iones dan un resultad o que pue de ser de cua lquiera de los tipos de datos
come ntados ante rior mente (ente ros, decimales, boolean os, st rings ...)

3.4.9.1 ARIT MÉT ICO S

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

3.4. 9. 2 OPERADORE S CO N D IC IO N A LES


Sirve n para com parar valores . Siem pre dev ue lven valores booleanos (true o false). Son:

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:

$carnetCond ucir=tr ue;


$edad=20;
$puedeConducir= ( $edad> =18) && $carnetConducir ;
// $p ue deConduci r es verdadero , pue sto que Sedad es mayor de 18
l/ y $CARNET es tr ue

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:

$nieva =TR UE;


$llueve=FALSE ;
$gra n iza=FAL SE ;
$ma lT iempo= $n ieva l l$l l ueve l l$g ra n iza; / / ma l Ti empo es TRUE por que nieva
134 IMPLANTACiÓN DE APLICACIONES WEB

La diferencia entre la igualdad y la equi valen cia se puede explicar con este ejemplo:

$resultado= (18 == 18.0 ) ; Ilr es u l t ado es verdadero


$resultado= (18 === 18 .0 ); Il r es u l t a do es fa l so

En el ejemp lo 18===18.0 devuelve falso porque aunque es el mismo valor, no es del mismo tipo.

3.4.9.3 O PERA DO RES DE A SIGNA CI ÓN


Ya se ha come ntado el operador de asignación qu e sirve para dar valor a un a variable. Ejemplo:

$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:

$x++; Ile qu i va len t e a $x=$x+1;


$x-- ; Ilequiva l e nt e a $x=$x-1 ;

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

3.4. 9.4 OPERADORE S D E BIT


Permite utilizar operac iones binarias. Aplicados a número s (especialmente enteros), usan su
form a binaria para realizar la operación BIT a BIT.
UN IDAD 3. PROGRAMACiÓN BÁSICA D E APLICACIONES CON PHP 135

Los operadores disponibles son:

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;

3.4.9.5 CO NC ATE NAC iÓ N


El punto (.) es un operador que permite encadenar Str ings (textos). Su uso es mu y senci llo.
Ejemplo:
$x = "Hola ce ;
$y = "a t odo e l mu ndo";
$z = $x .$y; //$z vale " Hola a todo e l mundo"

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

3.5 ESTRUCTURAS DE CONTROL


Ha sta ahora las instrucciones que hemos visto, son instrucciones qu e se ejecutan secuencial-
mente; es decir, pod emos saber lo que hace el programa leyendo las líneas de izqu ierda a derec ha
y de arri ba abajo.
136 IMPLANTACiÓN DE APLICAC IONES WEB

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.

3.5.1 SENTENCIA CO ND ICIONAL IF


3.5.1.1 SE NTE NC IA CO N D IC IO NA L SIM PLE
Se trata de una sentencia que , tras evaluar una expresión lógica, ejecuta una serie de instru c-
ciones en caso de que la expresión lógica sea verdadera. Si la expresión tiene un resultado falso,
no se ejecutará ninguna expresión. Su sintaxis es:

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 ; ,

Un ejemplo de if típico podría ser este :

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

H ay otra po sibilidad de sin taxis par a la in strucción if

if( expr esi ón l óg i ca)


instrucc iones

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.

3.5.1.2 SE NTE NC IA CO ND ICIO NAL CO MP UESTA


En ella se añ ade a la in strucción if un ap artado else qu e contiene ins trucciones qu e se ejecu-
tará n si la expresión evaluada por el if es falsa. Sintaxis:

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.

- Escribe ' Suspenso' rSnot a<S) [Sno ta >=S)


- incrementa el
nOde suspensos
<

- - - - - - - 7 ) @ ~<--------J

Figur a 3.2: Diagrama repre sentativo de una estructura if compuesta

Ejemplo de sen ten cia if-else:

if ($nota >=5 ){
ec ho "Aprobado ";
$aprobados++;
}
138 IMPLANTAC iÓN DE APLICAC IONES WEB

else {
ec ho " Sus pen so" ;
suspensos++;
}

La forma simplificada (sin llaves) de esta sente ncia sería :

if ($ nota >=5 ):
ec ho " Apr obado" ;
$aprobados ++;
e lse :
e c ho " Sus pe ns o" ;
$suspensos++;
e ndi f ;

3.5.1.3 SE NTENC IA CO N DIC IO NA L MÚLT IPLE

•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

- Escribe' Sobr esaliente"


- lncrernen ta el
node aprobados

1
@
....
<,
....
<,
....
<,

Figura 3.3: Diagrama repr esentati vo de una est ru ctur a if múltiple

Permite unir varios if en un solo bloqu e. Ejemplo:


i f ( $nota <5){
ec ho "Suspenso" ;
$suspensos++;
}
UN IDAD 3. PROGRA MAC iÓN BÁSICA DE APLICAC IONES CON PHP 139

elseif ($nota <7 ){


echo "Aprobad o" ;
$a probados ++;
}
elseif ($nota <9 ){
echo "Notable";
$aprobados++;
}
e lse {
ec ho "Sobresal iente";
$aprobados++;
}
Cad a sente ncia elseif permite añ ad ir una condición que se examina si la ante rior no es verda-
dera. En cuanto se cumpla una de las expresiones, se ejecuta el código del if o elseif correspon-
diente. El bloque else se ejecuta si no se cumple ninguna de las condiciones anteriores.

La versión sim plificada sería:

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.

Ejemplo de instrucción switch:


s wi tc h ( $d ia Se ma na) {
case 1 :
$d ia=" Lunes " ;
br e ak;
case 2 :
$d ia=" Ma rte s";
br e ak;
case 3:
$dia =" Mi é r co l e s ";
break;
case 4 :
$dia=" J ue ves ";
br e a k ;
case 5 :
$d ia="V i e r ne s " ;
br e ak ;
case 6 :
$d ia=" Sá bado" ;
br e ak ;
case 7 :
$d ia="Domi ngo" ;
br ea k ;
defa ult :
$d ia=" ?";
}

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

En el código siguiente el texto Laborable se mue stra cuando te nemos un día r, 2, 3, 4 o 5. Si es


6 o 7 se escribe Festivo. Finalmente, ante cualquier ot ro valor se escribe una interrogación .
switch ( $d iaSema na) {
case 1:
case 2 :
case 3:
case 4 :
case 5 :
ec ho " La borab l e";
br eak;
case 6:
case 7:
echo "Festivo";
break;
defa ult:
echo "?";
}

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.

3.5.2.1 BUCL E WH ILE


Sintaxis:

wh il e ( expr esi ón _l ógi c a) {


sente nc ias que se ejecutan s i l a co nd ic ión es true
}

Un bucl e while sigue estos pasos:

[1] Se evalúa la expresión lógica.

[2] Si la expresión es verdadera ejecuta las sentencias, si no el programa aban dona la sentencia
while.

[3] Tras ejecutar las sentencias, volvem os al paso I.

Ejemp lo, bucle que escr ibe números del r al roo :

$ i=1;
while ( $ i< =100 ) {
ec ho $i." <br /> " ;
$i ++;
}
142 IMPLANTACiÓN DE APLICACIONES WEB

•t
- Inici a $i con valor 1

[Si> 100J [S;<= 100) - Escribe el val or d e Si


) - Increment a $i

Figura 3.4: Diagrama repr esen tativ o de una estructura while

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.

En todos los bucles de contador necesitamos saber:

[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.

[3 ] Las acciones a reali zar 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:

$ i =10 ; 11 Val or inicial del contad or , e mpieza valiendo 10

whil e ( $ i<=200 ) { 1* cond ición del bucle , mientra s $i sea


menor de 200, e l bucle se repet irá,
cua ndo $i r e ba s e este
va lor, e l bucl e te r mina *1

ec ho $ i . " <br / >" ; /* acciones que ocu r r e n en cada


vue lta del bucle . En este caso
s i mp l eme nt e se esc ri be e l va lor
del co nta dor y un e leme nto HTML
de s a lto de línea *1

$i+=10; /* Variación del contador, en e ste caso


cuenta de 10 en 10* 1
}
1* Al fina l e l buc l e escribe :
10
20
30

y así has ta 200


*/

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

Ejemplo de bucle centinela :

$sa l i r =f a l s e; 1* En este caso el centinela es una


variable booleana que inicialmente
vale f a lso *1
whil e( $s a l i r ==f al s e){ 1* Cond ición de r e peti c i ón:
que $s a l i r siga siendo
f also . Ese es el ce nt i ne la .
También s e pod ia ha be r escr ito s i mpl e mente :
while ( !salir )
*1
$n=mt_ra nd(1,500); 1* En cada vue lta, c a l cu lamos
ec ho ($n ); un número a leatorio de 1 a 500
y l e escr i b i mos *1
$sa l ir=($n%7==0); 1* El cent ine la vale ve rdadero
s i e l número es múl tipl o de
}

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 contador po demos considerar qu e es segur o qu e finalice, el de centine la


pued e no finalizar si el centine la jam ás varía su valor; aunque , si está bien programado ,
siempre finalizará.

• 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.5.2.2 DO ...W H ILE


La úni ca diferenci a, respecto a los bucl es whil e, está en qu e la expres ión lógica se evalúa des-
pués de haber ejecutado las sente ncias. Es decir, el bu cle al men os se ejecuta un a vez. Su funcio-
namiento consiste en
[1] Ejecutar sente ncias

[2] Evaluar expresión lógica

[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)

Ejem plo (contar de 1 a roo):

$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]

<> ~$i>= 1 00J

@
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:

for(i ni c i a l i zac i ón ; cond i c i ón ;i nc r e me nt o){


sentencias
}

Como en t od as las est ruc turas de contro l, dispon emos de una versión sim plificada :

for ( ini ci al i za c i ón ; cond i c i ón ;incr e men t o):


sente ncias
endfor ;

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:

[1] Se ejecuta la instrucción de inicialización

[2] Se comprueba la condición

[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

Ejemplo (contar números del I al IOOO):

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

El bucle anterior es equivalente al siguiente bucle while:

$i=1; II sentencia de inicialización


while ($i <=1000 ) { II condición
ec ho $i." <b r 1>";
$ i ++; II in cremen t o
}

3.6 USO DE FOR MULAR IOS HTML DESDE


PHP
3.6.1 ENVío DE DATOS DESDE U N FORMULAR IO
Los formular ios son el elemento de las págin as web que permiten recoger valores del usuario
y enviarlos a una dirección URL para que se les procese. En nuestro caso la URL será una pág ina
PHP que recogerá los valores introducidos en el formular io y actuará en consecuencia.

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.

3.6.2 MÉTODO S D E ENVío DE DATO S D EL


FORM U LA RIO
Los formularios envían los dat os m edi ante par es nombre/ valor. Es decir, indican un n ombre
de variable, que se correspo n derá con el indicado m edi ante el atribut o name de un control del
formulario , y un valor para la mi sm a; y esto se repite para cada uno de los valores qu e el formu -
lario sea capaz de enviar.
148 IM PLANTACiÓN D E APLICAC IO NES W EB

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 .

3.6.2 .1 PASO DE DAT O S M EDIAN T E GET


El método GET lo que hace es a ñadir a la URL destin ataria del formulario los nomb res y valo-
res recogidos en el form ulario .

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>

El resultado del código, rellenando los campos, sería :


Escriba su nombre Jorge
Escriba sus ape llidos S anchez-- - - -
Escriba su dirección Asenjo ~ - -- - - -
Escriba
_._- sus teléfono s:
-

66666666
99999999
enviar

Suponiendo qu e estam os probando el código en una página web con dirección


http://1ocalho st /fon11II.html, al pul sar enviar, se gene ra la URL:
http ://1ocalhost/re cogidar .php?nombre=Jorge&
apellidos=S%C3%Arnchez+Asen jo&direccion=C%2F+Los+Vientos
&teJefonor=666666666&telefono2=999999999
El apellido Sánchez se convierte en S%C3%Arnchez por que en la URL no pu ede hab er carac-
teres fuer a del códi go ASClI y el carácter se recodifica usando los dígito s Unicode dentro del
operador %.

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.

Supongamos, con el ejemplo anterior, que la página receptora, en la dire cción


http ://localhost /p rue bas/recog idar.p hp tie ne el cod igo siguiente
<!OOCTYPE HTML >
<ht ml l ang =" es - ES" >
<he ad>
<me t a c harset="utf-8" />
<t i tle ></ t i t.l e »
</ hea d>
<body>
<pr e>
<?php
print_r ( $_GET) ;
?>
</ pr e>
</ body>
</ ht ml>

Esa página , si recibe los datos de ejemp lo de este manual, escribiría:


Ar r a y
(
[nombre] => Jorge
[ap ellidos ] => Sánc hez As enj o
[d i recc ion] => C/ Los Vi en t os
[t el efono1 ] => 666666666
[te le fono2] => 999999999
)

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:

if (isset ($_GE T ["nombre" ] )

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.

• La depuración de nuestro s program as es má s cómo da si usam os GET, porque vemos lo


qu e realmente llega del formulario en la propia URL sin te ner qu e acudir a ot ras herra-
mientas. Una forma mu y hab itu al de t rabajar es pasar parám etros de forma GET durante
el desarroll o de la aplicación y luego hacerl o vía POST en la versión final.

3.6.2.2 PASO DE PA RÁ METROS M EDIAN T E PO ST

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.

3.6.3 RECEPCiÓN DE DATOS DE UN FOR MULARIO


DESDE UNA PÁGINA PHP
PHP permite recibir los datos pasad os por los parám etros usando dos variables, que son en
realidad do s arrays qu e conte ndrán todos los valores del formulario. Los arr ays se llaman $_GET
y L POST, cada uno de ellos dedicado a almace na r los datos enviados con el método corres pon -
diente. Hay otro array, de uso menos recomendable, llamado $_REQ UEST qu e recoge los valores
sin im portar si se han pasado por GET () por POST.
UNIDAD 3. PROGRA MACiÓN BÁSICA DE AP LIC AC IONES CON PHP 151
- - - -------- -

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.

3.6.4 USAR LA MISMA PÁGINA PARA EL


FORMULARIO Y LA REC EPCiÓN
A veces se usa la misma pág ina en la qu e está el formulario, para recibir los datos del mismo.
En ese caso la págin a del for mu lario será PHP, en el otro caso pu ed e ser un cód igo HT ML ya
qu e los for mularios se pueden crear sin n ecesidad de líneas de código PHP. Un uso habitu al de
esta técni ca, es validar los datos desde PHP. La págin a recibe los datos y les valida; si están bien ,
entonces se dan por buenos; sin o, informa del error.

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>

3.7 RED IR IGIR HACIA OTRA PÁGINA


Es mu y habitual al hacer aplicaciones web que ante una determinada condición , deseemo s
car gar otra página diferente a la qu e estamos. El método más sencillo con PHP es utilizar la fun -
ción header.

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:

header( ..Location:http: / /www .google.es.. );


UN IDA D 3. PROGRAMAC iÓN BÁSICA DE APLICAC IONES CON PH P 153

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).

Práctica 3.1: Imagen aleato ria


• Crea un a página PHP que mu estre de forma aleatoria dos imágen es. Es decir, se muestra una
u ot ra de form a aleatoria e imp redecible.

SOLUC iÓ N: PRÁCT ICA 3.1

Para realizar la práctica suponemos ya instalado el entorno de trabajo y, además, qu e hemo s


descargado las dos imágenes en un directorio. Supondremos también que las imág en es se llaman
imaqent.jpq e imaqenz.jpq. El código de la página sería:

<!DOCTYPE htm l >


<ht ml l ang= " es " >
<head>
<me t a c harset="UTF-8" >
<t i t le> I ma ge n a leator ia </t i t le>
</ head>
<body >
<?php
$numero=mt _rand (0,1) ;
if ($numero==0 ){
echo " c i mg s rc='imagen1.jpg'>";
}
e lse {
ec ho "dmg src=' imagen2. jpg' >" ;
}
?>
c/ body>
</ ht ml>

Práctica 3.2: Cálculo de salario


• Lee el nombre, los apellidos, el salario (número con deci ma les) y la edad de una pers ona (un
número) en un formulari o. Recoge los datos y con ellos calcula un nuevo salario para esa
person a en base a esta situa ción:
- Si el salario es mayor de 2 00 0 eur os, no cambiará
154 IMPLANTAC iÓN DE APLICACIONES WEB

- Si el salario está en tre raoo y 2000:


'. Si adem ás la edad es mayor de 45 a ños, se sube un 3%
'.' Si la eda d es m en or de 45 o igual, se sube un ro %
- Si el salar io es menor de ra oo
'.' Los men ores de 30 añ os cobrarán, a partir de ahora , exactamente lIOO euros
'.' De 30 a 45 a ños, su be un 3%
.. A los mayores de 45 a ños, sube un I5%

SOLUCiÓN: PRÁCT IC A 3.2

En este caso necesitamos crear do s documentos. El primero es el qu e realiza el formulario de


lectura de datos (a este archivo le llamamos [orm-practicaz.phpi:

<!OOCTYPE htm l >


<html l an g=" es " >
<he ad >
<me t a c harset=" UTF-8" >
<t i t l e> For mu l a r i o</t it l e>
</ head>
<body>
<f or m action=" pr ac t i ca2 . php" >
<l a be l for =" nombre" >Nombre </labe l >
<i nput type=" text" id="nombre" name ="nomb r e" ><br >
<la be l for="a pe ll idos">Ape l l idos</ la be l >
<i nput t yp e ="te xt " i d=" a pe l l i dos " name ="apellidos " ><br >
<l a be l f or=" edad" >Edad </ l a bel >
<i nput t ype=" number " id="edad" na me="e dad" ><br >
<l a be l for="salar io" >Salar io </ labe l >
<i nput type=" number" id="sa l ar io" name=" s a l ar i o" ><br >
<but t on>Env i a r</ but ton>
</ f or m>
</body >
</ ht ml >

El formulario envía la información al archivo practicaz.php cuyo código es:

<!OOCTYPE htm l >


<ht ml lang="es" >
<he ad>
<me t a charset="UTF-8" >
<t i t l e> Mos t r a r cálculo </t itle >
UNIDAD 3. PROGRAMAC iÓN BÁSICA DE APLICACIONES CO N PHP - PRÁCTI CAS 155

<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 &euro;" ;
}
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>

Práctica 3.3: Sa be r si hay núm ero


• Crea un formulario que lea un número , después un m ensaje nos indicará si era realmente o
no un número y, si es un número , si tenía decimales.

SOLUCiÓN : PRÁCTI CA 3.3

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

<!DOCTYPE html >


<ht ml lang="es" >
<head >
<me t a charset=" UTF-8" >
<t i t le> Deci ma les </tit le>
</ hea d>
<body >
<fo r m ac t ion=" practica 3 . php" >
<l a be 1 for =" n" >Es c r i ba un número </ 1a be 1 >
<i nput type="numbe r" ste p="0.001" name="n " id=" n" / ><br / >
<but to n> Env i a r </ button>
</ f or m>
</ body >
</ ht ml >

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.

<!doc t ype html >


<ht ml l an g=" es " >
<he ad >
<me t a c harset=" UTF- 8" >
<t i t l e>Compro ba r número </t it l e >
</ he ad >
<body >
<?php
i f ( i s s e t( $_GET[" n" ] )) {/ / s e ha r ec i b i do el número
$n =$_GET[ " n"] ; / / por comodidad us a mos la variable $n
if(is_numeric ($n )){ / / $n co ntiene real mente un núme r o
$rest o=$n-(int) $n ; l / qui t a mos la parte entera al núme ro
if($res t o==0)
ec ho "<h1>El número es entero</h1>" ;
else
echo "<h1 >El número es decimal</h1>";
}else{
ech o "<h1>No se ha recibido un número</h1>" ;
}
echo "<a href='form- practica3.html' >Volver</a>" ;
}else{
l/ no ha y número , volvemos al formulari o
header ( " l oc at i on : f or m- pr ac t i c a 3 . ht ml " ) ;
}
UNIDAD 3. PROGRAMACiÓN BÁSICA DE APLICACIO NES CON PHP - PRÁCT ICAS 157

7>
</ body>
</ ht ml>

Práctica 3.4: Fondo aleatorio


• Crea un a página PHP que ponga de fondo un color aleatorio
• Para ello recuerd a qu e en CSS el color de fondo se pu ede realizar mediante la función r gb
a la que se le pasan tr es números del o al 255, el prim ero es el nivel de rojo, el segundo el de
verde y el tercero el de azu l.

SOLUC iÓN: PRÁCTI CA 3.4

El código que soluciona este pro blema es:

<!doct ype html >


<ht ml lang="es" >
<he a d>
<7php
l/c ál c u l o a leatorio de c ada n ive l de color
$rojo=mt_rand (0 ,255 );
$verde=mt_rand (0 ,255 ) ;
$azul=mt_rand (0,255 );
7>
<me t a chars et="UTF-8" >
<t i t l e >Co l or a lea tor io</t i t le>
<s t y l e >
body{
bac kground- col or :
I <7=" r gb ( $roj o , $ver de, $a z u l ) ; " 7>
}
</ s t y l e>
</ he a d >
<body >
</ body >
</ ht ml>

Práctica 3.5: Asteriscos


• Crea un formulario en el que se pida un número entero positivo. Despu és, haz qu e la página
escriba ta ntos asteriscos (en la misma página) como el número qu e se haya escrito . Si se
escribe 5, se mo strarán 5 aste riscos .
158 IMPLAN TACiÓN DE APLICACIO NES W EB

SOLUCiÓN: PRÁCT ICA 3.5

Para soluciona r esta práctica, el código podría ser el siguiente:


<!doct ype html >
<ht ml lang="es" >
<head>
<meta c harset=" UTF-8">
<t i t l e >As t e r i s cos< / t i t l e >
<st y le>
. e r r or {
color: red;
}
</s t y l e>
</ head>
<body>
<for m ac t ion="pract ica5 .php">
dabel for="n" >E s criba el númer o de as ter i s cos </ labe l >
<i nput type=" number" name="n" id="n" min=" 1" / ><br / >
<but t on> Env i a r</ button>
</ for m>
<7php
l/compr oba mos si la pagIna recibe correctamente el
l/núme r o de asteri scos
if (isset ($_GET[ " n" ] »){
$n=$_GET[ " n"];
if (is_numeric ($n ) && $n>=1 ) {
l / l os datos son correctos , escribi mos l os as t er i scos
echo " <p>" ;
for ($i =1;$ i <=$n ;$i ++) {
echo "*" ;
}
echo "</p>";
} else {
echo "<p class='error' >Número incorrecto</p >";
}
}
7>
</ body>
</ ht ml >

Práct ica 3.6: Creación de tabla


• Crea un formulario qu e pida dos números. Ambos tien en qu e valer 1 o más, de no ser así se
indi ca el err or.
UNIDAD 3. PROGRAMAC iÓN BÁSICA D E A PLICACI O N ES CO N PHP - PRÁCT ICAS 159

• El resultado será un a tabla (se mo stra rá en la misma página del formulario) con el tama ño
indicado

SO LUC iÓ N: PRÁCTICA 3.6

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

f or ($j=1 ;$j <=$col umnas;$j ++) {


l/ e n cada celda escribimos un espacio en blanco
l/ pa r a asegurar que se muestre
echo "<td >& nbsp;< /td >" ;
}
ec ho " </tr>";
}
ec ho "</table >";
}
else {
echo "<p class= 'error' >" .
"Número de filas y/o columnas incorrecto</p> ";
}
}
?>
</ body>
</ ht ml>

..
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 &#241; en una página web, muestra el carácter ñ.

Práct ica 3.11:


• Com o última m ejora (muy avanzada), haz qu e la tabl a anterior se pu eda mo strar paginada.
De modo que en cada pantalla se muestren 5 0 0 cód igos y unos en laces permitan pasar a la
siguiente página.
• Ejemplo de salida (si hemos pu lsado dos veces al enlace de avance de página) :
162 IM PLAN TACi Ó N D E APLICACIONE S W EB

_ 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

3.10 RESUMEN DE LA UNIDAD


Hay diversos lenguajes de scripts, cuyo código se interpreta en el lado del servidor. PHP
es el más popul ar aporta un a sintaxis muy poco estricta, similitud con los len guajes C y
Perl y una enorme librería de trabajo.

• 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

3.11 TEST DE REPASO


¿Qué expresión nos permite saber si una r; ¿Cuáles de las siguientes proposiciones
determinada página PHP está recibiendo son ciertas?
datos vía GET de un control de formulario Cualqui er bucle se pu ede escribir con
llam ado apellidoit la instrucción while
,) if ( $_GET [" a pe ll i do1" J) " . ¡¡ Hay bucles que no se pu eden escribir
1), if(isset($_GET["ape llido1"] » con la instrucción while
(1 El cuerpo del bu cle while al m enos se
e) i f (i s _de f ( $_GET[ " a pellido1 "] » ejecuta un a vez
d\ No siempre se ejecuta el cuerp o de un
d) i f(is_defmed( bucle while
LGET ["apell ido1" ]
» .. . ¿Se pue de escribir código HTML dentro
de PHP?
¿Cuá l es la te cn ología del lado del servi dor No, nunca
más utilizada actualmente ?
Sí, pero solo etiquetas HTML , no se
a PHP puede incrustar en ellas código CSS
J) ASP L) Sí Ytambién código CSS
e) JSP el) Se puede escribir código de cualquier
d) JavaScript lenguaje que se pueda incluir en una
página web
¿El código PHP entre qu é etiquetas se
el Sí, pero solo código que iría dentro de
debe escribir?
la sección body.
:1) Entre <1 y 1>
b) Entre <iphp y 1> ¿Qué mostraría por pantalla este cód igo ?
el Entre <% y %> ec ho " Hola a \ t odos " ;
u) Entre <php> y «/php» a) Hola a \ todos
h) Hola a odas
¿Cuáles de los siguientes son come ntari os
válidos en PHP? (1 Ho la a
odas
I *c ome nt a r i o *1
b\ d Hola a
l / c o me nt a r i o
todos
l) --comen t a ri o
#comentario o ¿Qué at ributo HTML de los con troles de
formulario es el qu e defin e el ín dice que
e 'comentario
t endrá ese parámetro dentro de los arrays
¿Qué nombre ti en e el array de PHP qu e En LGET o L POST?
PHP ¿Cóm o se crearía una constante lla- id
mada TOTAL a la qu e le qu eremos asigna r bl name
el valor 250?
param eter
const $TAM=25 0 ;
d placeholder
J) const TAM =250 ;
~\ defme(TAM,250 );
el defme ( $TAM , 250) ;
U NI DAD 3. PROGRA MAC iÓN BÁSICA D E APLI CAC ION ES CO N PHP 165
-- - - - -- - - - -- -- - - -

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.

En definitiva , se tr ata de concentrar los esfuerzos en resolver problem as sencillos y un a vez


resue ltos , ensamblar todos los módulos de form a apropiada para reso lver el problema comp leto .
Esto no es más que modelar el famoso paradigma divide y vencerás en el mundo de la programa-
ción de aplicacio ne s.
En PHP la pro gram ación modular se implem enta mediante funciones. Un a fun ción es simple-
mente código qu e recibe unos datos y, tras operar con ellos, devuelve un resultado. En realidad,
no siempre se devuelve un resultado, a veces la función simplem ente rea liza un a determinada
tarea. A ese último tip o de funciones otros len guajes las llaman procedimientos.

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.

En PHP las funcione s tien en esta form a de trabajar:

[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.

4.1.2 DECLARACiÓN Y USO DE FUNCIONES


PERSONALES
Para crear nuestras propias funciones hay que seguir esta sintaxis:

f uncti on nombreDeLaFunción (listaDeParámetros ) {


código de la función
}

Entre el código de la función se puede encontrar la palabra re t urn qu e, como se ha comenta do


anteriormente, sirve para devolver un resu ltado. Ejemp lo de función:
f unct i on doble ($valor ) {
ret urn 2*$va lor;
}

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:

f unct i on negrita ($texto ) {


echo " <strong> " . $text o. "< /strong>" ;
}

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

Ejem plo de uso de la funci ón anterior:

negr ita ( " Ho l a"); l/ es cr i be <s t r ong >Ho l a</s t r ong>

4.1. 3 ALCAN CE DE LAS VARIABLE S


Las var iables defin ida s en una función, al finali zar la función se elim inan. Es decir , su ámbito
es local a la fu nción. Ejemplo:

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.

4.1.4 PASO DE PARÁ M ETROS POR REFERE NC IA


Por defecto las funcione s reciben los pa rámetros po r valor, esto significa que los parámetros
de la función usan copias de los valores :

funct ion f1 ($x ){


$x=9 ;
}
$x=7 ;
f 1 ($x);
ec ho $x; l / es cr i be 7

Este es un ejemplo de código confuso. La fu nción fr se ha definido de modo que requiere un


parámetro al que ha llamado $x y que dentro de la función toma el valor 9. Por otro lado, fuera
de la función se ha defi nido una variable qu e tam bién se llama $x, a la que se asigna el valor 7.
Cuando se invoca a la función con el código f i ( $x ) , lo que hace la fu nción es tomar una copia
UNI DA D 4. NOCION ES AVANZADAS SO BRE EL LEN GUAJE PHP 171

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í:

fu nction s wa p( &$x, &$y ) {


$au x=$x;
$x=$y;
$y=$aux;
}
$va lor 1=12;
$val or2=17;
swap ($valor1, $valor2 ) ;
ec ho $va l or 1 ." " . $va lor2 ;

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

Pro duce un error, porque la función swap espera variables y n o expresiones .


172 IM PLANTACiÓ N DE APLICACIO NES WEB

4.1.5 PARÁ METROS PREDEFINIDOS


Se pu ede indicar un valor por defecto a los parám etros a fin de permitir que dicho parámetro
sea opcional; de modo que, si se pasa el parám etro se toma el valor qu e se pasa y si no, se toma el
valor por defecto. Ejemplo:
functio n potencia ($base,$exponen te=2 ){
$val or=1 ;
for ($i =1; $i <=$exponente;$i ++){
$valor*=$base;
}
return $val or ;
}
echo potenc ia(2,3 ); // Es c r i be 8, es dec ir 2 3
echo pot en ci a ( 4 ) ; // Es cr i be 16, es decir 4 2

La segunda vez que se invoca a la función, el parám etro $exponente toma el valor por defecto 2.

4.1.6 VARIABL ES GLOBALES


Las variables globales permiten ser utilizadas en todo el código, sin que las fun cion es util icen
variables que se han definido fuera de la función . Ejemplo:
f unction encadenar ($número ,$carác terRel l eno ){

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.

Esta técnica, en principio, no es recomendable ya que la función ya no es indepen diente del


códi go que se ha escrito fuera de ella. Las funcion es deberían ser lo más independien tes posibles.
No es lógico qu e debam os con ocer el cu erpo de la funció n (el código interior a ella) para poder
utilizarla o que , para util izar la función, se no s obligue a definir variabl es globales.
En resumen, es una posibilidad que ofrece PHP, pero que es poco recome ndable porque con
ella se adquieren malas mafias al programar. Sin embargo hay librerías que requieren el uso de
variables globales, y esa es un a razón por la que conviene conocer esta técnica.
UN IDA D 4. NO CIONES AVAN ZADAS SO BRE EL LENGUAJE PHP 173

4 .1.7 VARIABL ES ESTÁTICAS


Se trata de varia bles locales a la función (solo se podrán ut ilizar dentro de la func ión), pero qu e
son capaces de recordar su valor entre cada llamada a la función . Ejemplo:
function estati ca ( ){
s ta tic $cuenta=0;
$cuenta++;
ec ho "Esta es la lla mada núme r o $cuenta<br / >" ;
}

for ($i=1;$i <=10;$i ++) {


e s t a t i c a() ;
}

La salida del código ante rior es:


Esta es la llamada númer o 1
Esta es la l l a ma da número 2
Esta es la llamada número 3
Esta es la llamada número 4
Esta es la llamada número 5
Esta es la ll ama da número 6
Esta es la llamada número 7
Esta es la l l a ma da número 8
Esta es la l l a ma da número 9
Esta es la l l a ma da núme r o 10

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)

4.1.8 RECURSI VIDAD


La recursividad es un a técnica de creación de funciones , pensada para solventar problemas
complejos. Se basa en que, dentro del código de la función, ésta se invoca a sí mism a.

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í :

function f a c t oria l ($n ) {


i f ( $n <=1) return 1 ; l / cond i c i ón de sa lida
else return $n * f ac t ori al ( $n-1 ) ;
}

La última in strucción (return $n':¡actoria/($n-I)) es la qu e realmen te aplica la recurs ivida d. La


idea (por otro lad o m ás human a) es consi de ra r qu e el fac tori al de nueve es, nu eve multiplicad o
por el fact or ial de oc h o; a su vez el de och o es ocho por el factorial de siet e y así suce sivam en te
hasta llegar al fac torial de un o, que devuelve uno.

[1] factorial(4) = 24

[2) / 4* faE o riaI(3)" 4*~ 24 = [8)

[3] /3* fa~oriaI(2)" = ~6 3*2 [7)

[4] / : ; : : (1)" = 2*1~2 (6)

[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

4.1.8 .1 ¿RECU RS IV ID AD O IT ERACi ÓN ?


Hay otra versión de la fun ción factorial resuelt a median te un bucl e for (solución it erativa), en
lugar de utili zar la recurs ividad. En con creto es;
f uncti on f act ori a1 2( $n){
$res=1;
f or ( $ i= 1 ;$ i <=$n;$ i ++) {
$res *=$i;
}
r e t ur n $res ;
}

La cuestión es ¿cuál es mejor? ¿La solución recursiva o la iterativa?Ambas utilizan sentencias


repetitivas hasta llegar a un a determinad a condición. Por lo que amb as pu eden provocar bucles
infinitos si se programan mal. En el caso de la it era ción es un contador el qu e perm ite det erminar
el final. Lo que hace la recur sividad es ir sim plificando el problema hasta gene rar una llamada a
la función que devuelva un único valor.

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.

¿Por qu é utilizar entonces la recursividad? Lo cierto es qu e si podemos resolver un problema


m ediante soluciones it erativas, no deb eríamos utilizar recurs ividad. La rec urs ividad se utili za
solo si:

No encontram os la solución it erativa a un problema

• 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.1.9 A MBITO DE LAS FUNC IO NES


Las funci ones en PHP siempre son globales. Es decir, un a fun ción se puede utilizar en cual-
quier parte del código PHP. Por supues to, esto pr ohíbe poner el mismo nombre a dos funci ones.

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.

4 .3.2 ARRAYS ESCALARES


Los arrays escalares cumplen a rajatabla la definición in dicada anteriormente: son un con-
junto de valores a los que se accede a través de un índice, que es un número entero en el que
el primer elemento tie n e índice cero , Así, por ejemplo , las notas se podrían almacenar de esta
forma :

$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 :

$va lor[0] =18 ;


$va lo r[1]="Ho la";
$va lor[2 ]=true;
$va lor[3]=3.4;

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

$va lor [] =18;


$valor [ ] ="Hol a" ;
$va lor []=tr ue;
$valor[ ] =3 04 ;

En este caso, los índices se van asignando automáticamente (empezando por el cero),

4.3.2.1 BUC LE FO R DE RECORRID O DE AR RAYS


La gracia de los arrays en to dos los len guajes es la facilidad de re llenar o utilizar su conte nido
median te bucl es foro Imaginem os que nece sita mos almacenar 1000 números aleatorios del 1 al
ro ; evidentemente sería terrible te ner qu e escribir rooo línea s de código para realizar esta labor:
$valor[0 ]=mt_rand (1,10 );
$valor[1] =mt_rand (1 ,10 );
$valor[ 2 ]=mt_rand(1,10 );
.0./ / i i i imucho trabajo! ! ! !

Lo lógico es escribir este código :


f or ($i =0;$i <1000;$i++ )
$valor[$i] =rand (1,10 ) ;

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,

4.3.2.2 AS IGNAC iÓN DE VALORES CON LA FUNC iÓ N ARRAYO


Los arrays pueden definirse de form a cómo da mediante la funció n arrayí), Dentro de esa fun -
ción se colocan los valores qu e tendrá el array ; y así en un a sola lín ea podemos asigna r todos los
valores del array. Ejemp lo:
$numero=array(17, 34, 4S, 2, 9, - S, 7 ) ;

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:

$n umero=a r r a y ( 1 7 , 34 , 3=>45 , 2 , 7=>9 , 10=> -5, 7 ) ;

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 ;

Los índices que no se indi can qu edarán sin definir

4.3.2.3 FUN Ci ÓN COU NT


La función count que posee PHP permite saber el tam a ño de un array . Es útil para usar un
array del que previam ente no sabemos su ta ma ño.

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:

f or ( $ i =0;$ i <count( $va lor) ; $ i ++) {


ec ho $val or[$i ] . " <br /> " ;
}

4.3.2.4 ELE ME NTOS VAcío s


En este código :
$n ot a[ 0]=5 ;
$nota [1] =9 ;
$n ota[ 3]=5;
$no ta [4 ] =6;
$n ota[5]=7 ;

Deliberadamente se ha dejado sin rellenar el eleme nto nota[2]. De modo qu e la cuestión es


¿qué sacaría por pantalla la in strucción e c ho $nota [2]? Nor malmente un servidor Apache en
el qu e se ejecute este código mo straría un m ensaje pare cido a est e:

No ti c e: Und e f in ed offset : 2 in E: \xa mpp \ htdocs \a r rays \a rr ay Prb1 . php


o n lin e 18

Undefin ed offset se puede tr aducir com o desplazamiento indefinido y ad em ás indica qu e dicho


desplazam iento ocurre por el número 2 . Es decir, lo que Apache indica es qu e al moverse el ele-
180 IMPLANTACiÓN DE APLICAC IO NES W EB

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:

for ( $ i= 0 ; $i <count ($ valor );$i++ ){


echo $val or[ $i ) ." <br / >" ;
}

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.

4.3 .3 ARRAYS ASOCIATIVO S


En este caso el índi ce es un texto qu e se compor ta como una clave qu e permite acceder al dat o.
Los ar rays así constru idos form an estruc turas de dato s de tipo clave/ valor , como ocurre con [os
ar rays L GET y S_POST. Ejemp lo:

$not a ["Anto ni o" ) =5 ;


$nota ["Luis" )=9 ;
$not a ["Ana" )=8 ;
$nota["E loy")=5;
$nota["Gabr ie la" ) =6 ;
$nota ["Berta")=7;

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);

El ejemplo anterior sería equivalente a:


$nota["Antonio"]=5;
$nota[0 ]=4;
$nota[1]=7;
$nota[5 ]=6;
$nota["Luis"]=9;
$nota[6]=2;
$nota["Berta"]=7;

4.3 .4 BUCLE FOREACH


Recorrer arrays asociativos o incluso escalares con elementos si inicializar, resulta muy com-
plejo (y pesado) con los bucles while o foro Por ello PHP dispone de un bucle mu y potente que
permite recorrer todos los elementos de un array sin importar si hay elementos indefinidos, ya
que es capaz de ignorarles; lo que le hace idóneo para recorrer arrays asociat ivos.

Se trata del bu cle for each que tiene esta sintaxis:

f or e ac h (ar ra y as índ ice=> valor ) {


sente ncias
}

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=arr ay("Antonio"= >5, 4, 7, 5=>6, " Luis"=>9, 2,"Berta"= >7);


foreach ( $not a as $ i= >$v) {
ec ho "La nota de $i es $v\n";
}
/ * Escribe :
La nota de Antonio es 5
La nota de o es 4
La nota de 5 es 6
La nota de Luis es 9
La nota de 6 es 2
La nota de Berta es 7
*/
182 IMPLANTACiÓN DE APLICACIONES WEB
------------ ~------- --- - ----

4.3 .5 ARRAYS MULTIDIMENSIONALES


Un arr ay multidimen sion al sirve para representar datos agru pados en un a estructura que ut i-
liza dos índi ces para representar cada elemento del array . Ejemplos:

$nota[0 ] [0]=9;
$nota [0] [1] =7 ;
$nota [1] [0] =9;

Por supuesto es posible que el array sea asociativo:

$poblaci on ["Alemania"] ["Berl in"] =4000000 ;


$poblaci on["Alemania"] ["Hanover"] =1200000;
$pobl ac i on ["Fr a nc i a" ] ["Paris"] =7400000 ;
$poblacion["Francia"] ["Lyon"] =2300000;
$poblacion["España"] ["Palen cia"]=80000;

Se pueden utilizar incluso más de dos dimensiones:


$poblacion["España"] ["Casti lla y León"] ["Palencia"]=80000;
$poblacion["España"] ["Castilla y León"] ["Valladol id"] =370000 ;
$poblacion["España" ] ["Asturias"] ["Oviedo"]=115000;
$poblacion["Alemania"] ["Brandemburgo"] ["Berl in"] =4000000;

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:

$alema nia=array("Ber l in", "Hannover" );


$francia=array("París", "Lyon" );
$espania=array("Palencia" );
$poblacion=array ("alemania"= >$alemania,
"francia"= >$francia,"espania"= >$espania) ;

4.3. 5.1 CO NST RUCT O R ARRAYO EN ARRAY S MULTIDIMEN SION ALES


La función arrayí) está pensad a par a arrays de un a dimen sión . Pero es posible utilizarla en
arrays multidimensionales consider ando que un array de dos dimension es es un array de arrays.
De esa forma:

$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

"F r a nc i a" =>ar r a y (


" Pa r i s"= >7000000,
"Lyon"= >2100000)
);

El código ante rio r no tien e porque ocup ar tan tas líneas, pero es más legible así.

Ese código es equivalente a:

$poblac ion ["España"] [" Pal en cia"] =800 00 ;


$poblac ion ["Espa ña" ] [" Vall adolid"] =350000 ;
$po b lac ion ["Espa ña"] ["Ov iedo"] =120000 ;
$pob lac ion["Franc ia"] ["Paris"] =7000000;
$poblacion["Francia"] ["Lyo n"] =2100000;

4.3.5.2 RECORRIDO M EDIANT E FO REACH DE ARRAY S


MULTID IM ENSIONALES
Nuevamente se basa la idea en consi derar que un array mu ltidimensional es un array de arr ays.
Así en el que caso de que con el array anterior hiciéramos este recorrido :

$po blac ion=a r ra y(


" Españ a"=>a r r a y(
" Pa lenc ia"= >80000 ,
" Val lado l id"=>350000,
"Ov iedo"=>120000
L
" Fra nc ia"=>a r ra y(
" Par is" =>7000 000 ,
" Lyon"= >21000 00
)
);
f oreac h ($poblac i on as $ i=$va lor ) {
ec ho " El í nd ice $ i val e Sva l or cbr /> " ;
}

El resultado es:

El índ ice Espa ña val e Array


El í nd ice Fran c i a val e Arr a y

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 >";
}

Que obt iene el resultado:


País: España, Ci udad: Pa lenc ia, pob lación = 80000
País: España, Ciudad : Vall adolid , pobl ación = 350000
País: España, Ciudad: Oviedo, población = 120000
País : Francia, Ciudad: Paris , pob lación = 7000000
País : Francia , Ciudad : Lyon, población = 2100000

4.3.6 IN SPECCiÓN DE ARRAYS M EDIAN T E


FU NC IO NES DE RECORR IDO
Se trata de funciones basadas en el manejo de punteros de los lenguajes tradicion ales. Uti lizan
un puntero virt ual, que sería un objeto que señala a uno de los elementos del array y que al
moverle perm ite accede r al resto de elementos.

Esta técnica se basa en el man ejo de las siguientes funcion es:

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

Ejemplo de recorrido de un array me diante estas funciones:

$cap ita l=arra y (


"Cast il la y León"= >"Valladolid",
"Astur ias"= >"Oviedo",
"Aragón"= >"Zaragoza"
);
whil e( cu r r en t ( $ca p i t a l »{
e c ho " <strong >".c urre nt($capital ) . " </strong><br /> " ;
ne xt($capital);
}

Para reco rrer el array al revés:


$cap ita l =a rra y (
"Cast i l la y León" =>"Vall adol i d" ,
" Ast ur ias"=>"Ov iedo",
" Ara gó n" =>"Za ragoza"
);
end ($capital )
while (current ( $ca pi t al »{
echo "<st rong >". c ur r e nt($ca p i tal) ." </strong ><br 1> " ;
prev ($capital );
}

4.3.7 FU NC IO NES Y ARRAYS


Las funciones pueden recibir y devolver arrays al igual que cualquier otro tipo de varia bles.
A diferencia de la mayoría de lenguajes estructurados, en PHP los arrays se pasa n por valor a las
funciones. Es decir, cua ndo se pasa como parámetro un array a una funció n, el parámetro genera
una copia del mism o. Así, las modificaciones al array que se hagan den tro de la función, no afec-
tan al array or igina l. Ejemplo:
funct ion prue ba ( $a ){
$a[0]=18;
}
186 IMPLANTACiÓN DE APLICACION ES W EB
- - - - - -- - - - -

$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:

function prueba( &$a){


$a[0]=18;
}
$a=a r r a y (1 , 2 , 3 , 4 , 5 , 6 , 7) ;
prueba ($a );
ec ho $a [0 ];

Aho ra sí escribe IS.

4.3.8 USO DE ARRAYS EN FORMULARIO S


Una de las virtudes de un array, es su capaci dad de recoger en una sola variab le, valores proce -
dentes de difere ntes contro les en un formulario. La man era de hacerlo es m uy sencilla , basta con
indi car un nombre de array como atr ibuto name en los eleme ntos del formulario ; para indicar
que ese nombre es de un array, se aña den al nombre la apertur a y cierr e de corch etes 1: y J. Ejemplo:

<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

<i nput type="checkbox" name="opciones []" value="nu merosa"


id="n umerosa" / >
<l a bel for="n umerosa" >Fa mi l i a nume r os a </ l a be l ><br / >
<i nput type =" c hec kbox" na me="opciones[]" value="minima"
id="mini ma" / >
<label for=" minima " > Renta mínima< /label ><br />
<i nput t ype="s ubmit" va l ue s =" Envi a r " />
</form>
</body >
</h tml >
La págin a resulta nte es (suponiendo qu e hem os marcad o despu és alguna s opciones):

En esta página, to do s los checkbox están asociado s a un arr ay lla-


E lig e estas opciones:
mado opciones. Dicho array contendrá un valor por cada elem ento al
'-' Menor de edad
que le hayamo s hecho d ic. Los índices se indican de form a escalar; es
Minusvalía
decir, el primer valor (en el or den de escritur a de la página web) será el
- Familia nume ro sa cero, luego el uno...
Renta mínima
[~~~I De modo qu e si el código de la página qu e recoge el arr ay
(formA rray get,php) es:

<! DOCTYPE html >


<html lan g="es-ES" >
<head>
<meta charset=" UTF-8" >
<titl e >Impr esi ón de opc iones </ t i tle >
</he ad >
<body>
<?php
pr int_r ($ _G ET[" opc i ones "] ) ;
?>
</body>
</ html>

La salida de dich a página tras recoger los valores del formulario anteriormente comentado s
es:

Array ( [0 ] => me nor [1] => numerosa )

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 ).

Es po sible utili zar índices con creto s en el arr ay al recoger valores .


188 IMPLANTACiÓN DE APLICACIONES WEB

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.

4.3.9 ANEXO : FUNCIONES DE USO CON ARRAYS


4.3. 9.1 FUN CION ES BÁSICAS

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

4.3 .9.2 ORD ENACi ÓN D E ARRAY S

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

El segundo parámetro permite establecer la forma de ordenación


pudi endo indicar esta s posib ilidades:

• SORT_REGULAR. Ordenación nor mal (utilizada por defe cto), se


adapta según el valor sea nu mérico o String. Solo funciona bien
carac te res perten ecientes al código ASCn origina l, por lo qu e no fun-
ciona con símbolos com o la e ñe o las vocales con tilde

• SORT_NUMERIC. Ordena entendiendo qu e el array contien e valo-


res numéricos

• SORT_STRING. Ordena entendiendo qu e el array contie ne valores


String (texto). Ordena según el código ASCn
UNI DA D 4. NOC IONES AVANZADAS SOBRE EL LENG UAJE PHP 18 9

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)

En cualquier caso no sirve para arreglar el probl ema de la ordenación


de caracteres fuera del Ase n

• SORT_NATURAL. Ordena el array considerando sus valores com o


lo haría un ser humano (es decir el texto "textoz" iría delante de
"textoto" porque entendería el diez como un núme ro superior al dos,
y no orde naría com o si fueran textos alfabét icos. El fun cionami ento
es el mismo que la función natsort

SORT_FLAG_CASE Permite combinar (usan do el opera dor OR (i) a


nivel de bit s) con SORT_STRING o SORT_NATURAL para ordena r
cadenas de form a inse ns ible a mayúsculas/minúsculas. Por ejemp lo:

Al ord ena r mediante la función sort, los Índices desaparecen , el array


final es un arr ay escalar (el primer Índice será el cero , luego el uno,
etc.)
usort( array, Orden a el array utilizan do un a fun ción de usuario. Dicha fun ción se debe
funcionUsuario) crea r de forma qu e reciba do s parám etros y devuelva un número mayor
de cero cuando el primer parám etro sea mayor qu e cero , cero cuando
sean iguales y un n úm ero menor qu e cero cuando el segund o par ám et ro
sea mayor qu e el primero

usort recibe el nombre de la función entre comillas. Ejemplo:

us ort ($ array , " fun ci on1 " )

Se supone que la funcíonr ha sido creada previamente y cumple los requ i-


sitos indicado s anteriorm ente. Esto perm it e crear ord enaciones per sona-
les con los arrays. Las claves se pierden (al igual qu e ocurre con la función
sort) y solo se ordenan los valor es, resultando un array escalar
uasort(array, Igual qu e la an terior, pero se respeta la relación de las claves con sus
fun cionUsuario) valores
uks ort(ar ray, Igual qu e la anterior, pero lo qu e ordena son las claves en lugar de los
funcion Usuario) valores
rsort(array, [flagsJ) Funciona igual qu e sort, pero ordena en ord en descendente
asort(array, [flagsJ) Idén tica a sort, pero los Índices no se despr ecian y se respetan . Es decir,
se ordenan los valores y se asegura qu e cada valor sigue siendo accesible
a través de su Índic e or iginal
190 IMPLANTACiÓN DE APLICAC IONES WEB

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
)

En el ejemplo, el pri mer array ($a) se ordena en descendente y de form a


numéri ca, m ientras qu e el segu ndo ($b) se ord en a de forma textua l

4 .3.9.3 BÚ SQUEDAS Y FILT ROS EN LO S ARRAY S

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 .

array_filter aplica dic ha fu nción a cada ele mento del array y


devuelve un nuevo array que contiene los elementos del primer
array que , enviados co mo parámetro a la función, hacen que ésta
dev uelva falso . Es decir, elimina to dos los elementos qu e no cum-
plan la condición establecida por la fu nción .

4.3 .9.4 FUNCIONES PARA MANEJO ALEATORIO

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

4.3.9.5 FUNCIONES DE MAN IPULACiÓN DEL CONTENIDO DEL


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 ;
}

$a= a r r a y( 1,2,3 ,4 , 5);


$b=arra y_map( " doble" , $a )
pr i nt _r($ b) ;
// Es c r i b i r ía : 2,4 ,6,8,10
U NI DAD 4. NOCIONES AVANZADAS SOBRE EL LENGU AJE PHP 193

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.

En el caso de qu e los valores del arr ay sean otro s arrays, se ejecu-


tará la func ión para dic hos arrays
array_pad(ar ray,n ,valor) Devuelve un nuevo array copia de l primero, al cua l se le a ñaden
elementos con el valor indicad o, hasta alcan zar el ta ma ño m ar cad o
por el parámetro n. Si n es un número posit ivo el rellenado de valo-
res se hace hacia la derech a y si no , hacia la izqu ierda. Ejem plo :

$a=array("a" ,"b", "c);


$b=arra y_pad($a, 5, "x ")

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

Las po siciones indicadas se t oman de forma esca lar, es decir el pri -


m er eleme nt o ti ene la po sición cero, el segun do uno,... El array
original no cam bia, pero en el resultante los índices nuevos será n
escalares; es decir, co mienzan a numer ar los ín dices desd e el cero
194 IM PLAN TACIÓN DE APLIC ACIONES W EB

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 la hora de indicar la poslnicio, se maneja el array com o si fu er a


escalar. Es decir, el primer eleme n to es el cero, el seg un do es el uno ,
etc . Indicando un tamaño , solo se cam bian el número de elem en -
tos indicados por ese par ámetro. El par áme tr o arrayS u bs t indica
una array qu e servirá para sus tit uir los elementos elim in ados por
los que están con te n ido s en el a rray

Devue lve un array con los elemen tos elim inados


array_c h unk( Devuelve u n array multidime nsio nal, resultado de dividir el array
array qu e se pasa como par ámetro en trozos del ta ma ño indicado.
.t a m a ño
[,r cspet a r Claves ] El parámetro opcional respetarClaves, si vale true (por defecto es
fal se) respeta las claves originales; de otro m odo, las claves se pier -
den y cada array se ren u mera de for ma esc alar.

4.3.9.6 CO NVERS iÓ N DE ARRAYS A PARTIR DE VARIA BLES


CO M UNES Y VICEV ERSA

FUNCiÓN SIGNIFICADO ', '


list(list a DeVa ri a b les)=a rray Perm ite dar a una lista de variab les valores proced entes de un
array. Ejemplo:

$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

FUNCIÓN ' SIGNIFICADO . .' '.


compact (lista de variables) Se le pasa una lista de var iables. La list a es en realid ad una
list a de textos (strings) qu e contiene n el nombre de las varia-
bles (sin el sign o $). La func ión devu elve un array con esos
valores y usa como índices del array, el nombre de las varia-
bles. Ejemplo:

$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
)

Si el array es escalar se renumeran de nuevo todas las claves y


sí aparecen las claves con ín dices re petidos
array_m erge_recu rsive( Igual que el anterior, solo que ahora si hay índices repetidos,
ar .az ,...) en el array resultante, cada valor se convertirá en un array que
contiene todos los valores de ese índice

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

4.4.2 AS IGNAC iÓN DE STRI NGS


Ya se ha explicado en la unidad anterior (Apartado 3+3 "Asiqnacion de valores", en la págin a
=. El texto lit eral se debe
I26). Par a asignar valores a un string bast a con utilizar el op erador
en trec omillar, ya sea en tre com illas dob les o simples.

$str ing1=" Soy un texto" ;


$stri ng2=' Yo también ' ;

En el caso de los caracteres especiales, éstos solo se pueden in dicar dentro de comillas do bles.

4.4.3 CO NC ATE NACiÓ N DE TEXTOS


Como se ha comentado en aparta dos anteriores, el op erador de concaten ación de t extos es el
sím b olo de l punto (.). Ejemplos:

$texto1 =" Ho l a" ;


$texto2=" a todos y todas" ;
$texto3=$texto1. " " . $texto2;
echo $texto3;

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).

Podemos usar el operador de concatenación y asignación:

$texto1 =" Ho l a " ;


$texto1 . =" a todos y todas " ;
e c ho $texto1;

El re sultado es com o en el t exto anterior ya que el símbolo .= permite a ñadir al fin al de la


variable el String qu e se in diqu e.

4.4.4 USO DE VAR IABLES EN STRINGS. USO DE


LLAVES
Una de las gra n des capacida des PHP es la de po der traducir contenidos de variables por su
valor dentro de un te xto. Ejemplo:

$ 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

Sin embargo, este có digo daría error:

echo " <br / >Me gusta patinar en $libresty le";


198 IMPLANTACiÓN DE APLICACIONES WEB

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.

ec ho "E l dobl e de x es" . x*2 . " <br /> " ;

4.4 .5 MANEJO DE STRINGS COMO ARRAYS DE


CARACTERES
Se puede usar un string como si fuera un array donde cada elemento lo form a cada carácter
del st ring. Esto nos per mite dar más versati lidad a los arrays Ejemp lo:
$str i ng1="Es t e es el text o de prueba" ;
$stri ng1 [6]="X";
e c ho $s t ring1; // Es cr i be : Es t e eX e l texto de prueba

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.

4.4.6 CADE NAS HEREDOC


Permiten asigna r valores de texto exte nsos , sin usar comillas. A t ravés de delimitadores.
Ejemp lo:

$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

Es decir , en un a página web, el texto aparecería como:

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

No se ha interpretado la variable $nombre, se ha ente ndido qu e es un texto no rm al. Esa es la


diferencia con los textos heredoc.

4.4.8 ANEXO: FUNCIONES ESTÁNDAR DE USO CON


STR INGS
PHP tie ne una enor me batería de func ione s para trabajar con strings . Eso nos va a facili-
ta r enorme mente realizar ta reas difíciles, como validar dat os de formularios, o rea lizar acciones
avanzadas con los texto s que introduzca el usuario.

4.4.8 .1 FU NC IO NES BÁSICAS


200 IM PLANTACi Ó N DE APLICAC IONES WEB

4.4.8.2 M AYÚ SC U LAS Y M INÚSCULAS

FUNCiÓN SIGN IFICADO


strtolower(t exto) Convi erte el text o a minúsculas
strtoupper(texto) Convie rte el texto a mayúsculas
lcfirst (texto) Retorna un string resultad o de pon er en minúsculas el prirner carác-
ter del texto (suponiendo que sea una letra).
ucfirst(texto) Ret orna un string resultado de po ne r en mayúsculas el primer carác-
ter del tex to (supon iendo qu e sea una letra).

4.4.8.3 FU NC IO NES DE CO M PA RAC iÓ N

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

4.4.8.4 FUN C IONES DE BÚSQUEDA Y REE MPLAZO

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:

$a="Esta es l a co muni da d de "


"Cas t i l l a y Leó n" ;
ec ho strpos ($a ," Castilla" );

Escrib iría 24 , ya qu e Castilla em pieza a ap ar ecer en la posición 24


del String $a
st ri pos(t ext o , Igu al qu e la anterior pero no ti ene en cue n ta mayúsculas n i minús-
textoBusq ) cul as. Solo es válida co n te xtos que no usen caracte res fuera del alfa -
beta in glés
strpbrkítext o, listaCars) listaCars es un string qu e contiene todos los caracte res que desea -
m os buscar en el te xto de m odo qu e busca cua lquiera de esos carac-
teres dentro del texto

La función si encuen tra cualquiera de eso s caracteres, de vuelve el


resto desde la posición del primer carácter qu e en cuen tre. Ejemplo:

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:

strip_tags ( $text o ." cp » <st ro ng")

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

4.4.8.5 FU NC IONES DE EXT RACC iÓ N DE TE XTO

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:

$s= " soy una fras e , con unas , "


"c ua ntas , comas" ;
$a =exp lod e( ", ",$s );
pr i nt_r ( $a ) ;

Escribirá:

Array ( )
( [0 ]=>soy una f r as e
[1 ] =>con unas
[2 ]=>c ua ntas
[3] =>comas

implode(array) Devuelve el string qu e resulta de conca tenar todos los elementos


del array
str, word_count( Sin indicar segundo ni tercer parám et ro, devuelve el n úm ero de
texto palabras encontra das en el texto
[,for m at o
[,1istaCaracteres]] El parám etro f ormato puede tomar los valores:
)
1 La función devuelve el número de palabras encontradas
2 Devuelve un array escalar con todas las palabras
enco ntradas
3 Devuelve un array asociativo donde cada valor es cada
palabra encontrada y su índice la posición en el texto
original.

lista Caracteres es un st ring que contiene caracteres que en esta fun -


ción se deben de con siderar com o parte de una palabra y no com o
caracte res separadores de palabras (como la coma o el punto). Es
mu y útil para texto escrito en cualquier len gua distinta del inglés y
así considerar, por ejemplo, a la e ñe com o parte de una palabra

4.4.8 .6 FUN CI ON ES D E LIMPI EZA D E TEXTO


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

El segundo parám et ro perm it e in dicar un a lista de caracteres ent re-


comillada que serán los que se elimine n si se encuentran al final y al
principio del texto (en lugar de eliminar los espacios)

4.4. 8.7 OB T EN ER CÓ D IGOS ASCII

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

4.4 .8.8 FUNCIONES DE FORMATO DE DATOS

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

i Formatea el número usa ndo los símbolos y separado-


res per tine ntes segú n lo especificado por la fun ción
setl oca le basándose en el siste ma mon etario inter-
nacional. Por ejemplo si antes hemos usad o
setlocale(LC_ ALL,"es-ES"), el formato del número será el
correspondiente al formato m onetari o español
n Idén tica al anterior pero usa el siste ma nacion al de mon eda,
según la configurac ión regio na l especificada por setlocale
=f Se especifica un carácter de relleno para el número (por
defecto se usa el espacio en blanco)
1\ Deshabilita el separador de mil es
206 IMPLANTACiÓN DE APLICACION ES W EB

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:

echo number _format (1 234567 . 892 , 2 , " , " , " . " ) ;


I I Resultado: 1 . 234.567 ,89

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.

4.5 .1 ALGORITMOS DE CIFRADO


La vulnerabilida d de los hash tiene qu e ver con los algoritm os de cifrado . Los más populares
son MDS , SHAr y SHA2S6 para los que PHP dispone de varias fu nciones. Pero , lo cierto es qu e
no son recome ndables actualm ente porque se pueden descifrar utiliza ndo algoritmos de fuerza
bruta aprovecha ndo la gran pot encia de las máq uinas actuales.

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.

4 .5.2 FUN CiÓN PASSWORD HASH


Se tr ata de la funci ón recomend ada actualme nte para el cifrado. Su sintaxis es:

assword hash (tex to, algo ritmo [,0 dones])

Se explican a continuación los parám etros de esta función.

texto. Es el texto a cifrar, norm alm en te una contrase ña.

algoritmo. Es un número entero qu e indica el algoritmo a utili zar. Se ut ilizan las


constantes:
PASSWORD_DEFAULT. Utiliza el algoritmo bcrypt (disponible desd e la versión
5.5 de PHP). De modo que ut ilizará automáticamente el algoritmo de cifrado más
robusto que tenga disponible nuestra in stalación de PHP.
PASSWORD_BCRYPT. Utiliza el algoritmo Blowfish. Eso asegura la compatibilidad
con la función crypt (utilizada tradicionalmente para estos mene steres).

• opciones. Se trat a de un array asociativo que permite utilizar estas claves:


salt oPermite indicar un a sal manual al obtener el hash. Sin usar esta opción, la fun-
ción genera una sal aleato ria.
costoCost e. Un valor entre 4 y 32 que indica el número de itera ciones (en base 2) que
realizará el algoritmo. Por defecto se usa ro. Pon er más coste hace que se tarde más
en generar la clave (a cambio de más segur idad).
La función retorna el texto ha sh resultante de aplicar las opciones. Ejemplo:
echo password_hash ("prueba" ,PASSWORD_DEFAULT,
array ( "salt"= >"123456789ABCDEFGHIJKLM" ) );

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.

• 10$ . Coste empleado. En este caso ro.


• 123456789ABC DEFGHIJKL. Sal
20 8 IMPLANTACiÓN DE APLI CACION ES W EB

Ys1 iXtCFs / v7 Qo2eLjFKj WUt nf ZRpd. Texto hash

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.

4.5 .3 OTRAS FUNCIONES DE CIFRADO


FUNCiÓN o o RESULTADO O" • • ':

passwordget jnfothas h) Recibe un t exto hash y no s devuelve un arr ay asociativo


con información sobre el tex to. En ese array tendremos los
siguientes índices:

algo. Devue lve un entero relaciona do con la cons tante


pr ed efinid a qu e representa el algoritmo ut ilizado como
PASSWORD_D EFAULT por ejemplo

• algoN ame. Nom bre del algoritmo, por ejem plo bcr ypt

• options. Array de opciones utilizado al cifrar


password_verify(t ext o,hash) Devuel ve ver da dero si el hash es correcto para ese t exto. Es
la función principal de verificació n de un a contrase ña

Ejemplo de uso de password_verify:

if (password _verify( " pr ue ba ",


"$2y$10$123456789ABCDEFGH1JKL .Ys1iXtCFs/v7Qo2eLjFKj WUtnfZRpd.")) {
ec ho "Con tras eña cor r ecta !";
}

4.6 EXPRESIONES REGULARE S


Se trata de uno de los elem ent os más interesantes a utilizar por pa rte de los pro gramadores.
Se utilizan, sobre todo, para establecer un patrón que permit a validar el conte nido correcto de
un texto. Ese pat rón permite búsquedas avan zad as, crite rios avanz ados de verificació n de claves
o códigos, et c.

PHP permite el uso de do s tipos de expr esiones regu lar es:

• 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.

4.6.1 FORMATO DE LAS EXPR ESI ON ES RE GULARES


PCRE
Las expresiones regulares utili zan símbolos especiales para indicar el patrón corres pondiente.
Las expresiones regulares de tipo Perl deben ir delimitadas por algún carácter. De ma nera clásica
se suele delimitar con la barra de dividir (j), pero vale cua lquier delimi tador (símbolo de soste-
nido, menor y mayor, etc). Ejemp lo:

$expReg=" I I\[ A- Z] {8} [0- 9]$1"; 118 l etras y un núme r o

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

CÓDIGO SIGNIFICADO '


Símbo lo matemático
Símbo lo de m oneda
Otros símbolos
Núme ro
Núm ero decimal
Núme ro alfabético. Por ejemplo un número roman o.
No otros símbolos numéricos
P Carácter de puntuación
Pd Guión (sea corto o largo)
Ps Apertura de parén tesis, corchete, llave o sím bolo similar
Pd Cierre de paréntesis, corchete, llave o símbolo similar
Pi Comillas de inicio (no valen las rectas)
PE Comillas finales (no valen las rectas)
Pe Carác te r de conexión, como el guión bajo
Po Cualquier otro carácter de puntuación
Z Separa dor
Zl Separa dor de línea
Zp Separador de párr afo
Za Separa dor de espacio
alfabeto Permite indicar un código de alfabeto . Por ejemplo
\ p{Greek}, vale para cualquier carácte r del alfabeto griego)
\ P{xx} Caráct er qu e no cumpla la propiedad xx (donde xx pu ede ser cualquiera de los
códi gos de la tabla ante rior)
La letra i al fina l de los delimitadores permite igno rar mayúsculas y minúsculas.

4.6. 2 PROBLEMAS CO N UNI CODE


Aunq ue, en teoría, hay muchas opcio nes para trabajar con texto Unicode, lo cierto es que PHP
es un lenguaje que no está preparad o para ello. De ahí que el mo dificador \p sea de obligado uso
cuando esta mos validando textos Unico de. Es el caso de los símbolos pro pios de l español como
las letras acentuadas, la e ñe, etc. Obse rvando este código:

$exp=" ¡r' [\ p{L}] +$/";


ec ho preg _ma tc h($exp ," Españo l") ;

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 .

Así el ejemp lo anterior funcionaría si escr ibimos:


$exp="/( *UTF8)1\[ \ p{L}]+$I";
ec ho preg_matc h ($exp,"Es pa ñol") ; l/ a hor a e scribe verdadero

4.6.3 FUNCIONES DE EXPRES IONES REGULARES


FUNCiÓN SIGNIFICADO
preg.matchf Utiliza una expresión regular (parámetro patrón ) para validar que el
patrón , string uti lizado como segundo par ámetro la cumple. Devuelve ver-
string dadero si se cumple la expresión
[, arraykesul t]
[, flag] Si se indica el parámetro arrayResult, que tie ne que ser un array ,
[.despl] en tonces en él se almacena el texto dentro del string que cumpla
ese pat ró n. De mo do que el eleme nto cero del array será el texto
completo que cump la tod o el patrón , el elemento 1 será el tex to que
cumpla el prime r subpa tró n que se haya definido (1os sub pa trones se
indican en tre paréntesis), el eleme nto 2, el segun do subpa trón, etc.

El paráme tro flags permite utilizar la cons ta nte PREG_OFFSET_


CAPTURE para qu e el array ante rior alma cene además de cada
texto que cumpla la condición, la po sición en la que esta ba ese texto
dentro del arr ay ori gin al (10 coloca en el array detrás de cada text o
qu e cumpla la condición)

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
)

El parámetro opcio nal límite indica el m áximo de trozos a obtener


preg replaceí Busca el patrón en el st ring in dica do y cua n d o lo enc ue n tra , devu elve
patrón, un nu evo st ring resultad o de sus ti t u ir el patrón enc on tra do por el
reemplazo, texto de reemplazo espec ificado.
string
[, límite] Escribe:
[, cuenta] Este es un docume nto PH P, y no de la isla de PHP

El patrón puede incluso ser un array con varios patrones: si es así, se


susti t uye cada patrón del arr ay en el strin g por el texto de reemplazo
indicado

El parám etro opcional límite pone un top e al número de re emplazos


efectuados. Por ejemplo si vale 1, solo se ree mplaza la primera apari-
ción de l patrón. Por defecto vale - 1 (es decir, no h ay lími te)

La variabl e cuenta, si se utiliza, sirve para almacenar el número de


reemplazo s efectua dos
pregjquotef Hace qu e en el string texto que se pasa como primer pa rámetro,
texto todos los sím bolos habituales de ex presión re gul ar : \ + :;: ? [ /\ ] $ ( ) {
[,d elim it ad or] } = ! < > I: - pasen su forma escapada y así no se les considere como
carácte res de significado especia l. Lo que h ace es a ñadir la barra
invertida para provocar su sec uencia de escape. Por ejemplo , el sign o
$, se co nvertiría en \$

En el segundo parámetro (opcional) se in dica el carácter delimitador


de la ex pres ió n regular (tradicionalmen t e la barra normal / ) qu e se rá
también co nve rtido a su forma escapa da (V)
preggrepí Devu elve un nuevo array qu e co nti ene t odos los elementos d el arr ay
patrón .array que se pasa como seg un do parámetro , que cumplan la expresión
[,flags] re gular in dica da en el primer elemento
214 IM PLANTACi ÓN DE APLICACION ES W EB

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

Se pu ede indicar una fecha concreta y un valor verd adero


como segundo parámetro para indicar qu e deseam os un array
asociat ivo en lugar de escalar
st rtotime(texto) Analiza el texto y devuelve la fecha corre spo ndien te . Ejemplos
de uso (extraídos de la página oficial de ayuda de PHP, php.
net):
<?php
echo strtotime ( "now" ) , " \n" ;
ec ho strti me ( "10 September 2000" L " \n ";
ec ho strtoti me ( "+1 day " ) , " \ n" ;
echo strtotime ( " +1 we ek " ) , " \n" ;
ec ho strtotime( " +1 wee k 2 " .
" days 4 hour s 2 seconds") ,
" \n" ;
echo s trt ot i me ( " next Thursday" ) , " \n " ;
echo s trt ot i me ( " last Monda y" L " \ n" ;
?>
216 IMPLANTACiÓN DE APLICAC IONES WEB

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

4.8 PRÁCTICAS RESUELTAS


Práctica 4.1: Uso de arrays con formularios
• Crea una página PHP que permita elegir una serie de artículos de una tiend a online mediante
checkbox.
• Cada check box permite seleccionar un artículo , en el que se indica su precio .
• Tras pul sar el botón Enviar del formulario, se nos indi cará el detall e de la compra, así como
el total de lo qu e hemos comprado.

SOLUC IÓN: PRÁCT ICA 4.1

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:

<!doctype html >


<html l ang =" es " >
<hea d>
<me t a char set=" UTF-8" >
<t i t l e>Ti e nda on - l ine </tit l e >
</ head>
<body>
<h1>Se l ecc i one l os artículos que desea co mprar </ h1 >
<f or m actio n=" prac t i ca1. php" method=" pos t " >
<i nput type="c hec kbox" name=" art i c ul o [ ' Bo l í gr a f o rojo '] "
value=" . 35" id="boliRojo" / >
<l a be l f or="boliRoj o" >Bol ígrafo Roj o (35 cént i mos) </ la be l><br l>
<input type="chec kbox" name=" a r t i c ul o ['Bol ígrafo azul']"
value=". 35" i d=" boliAzul " / >
<l a be l for="bo liAzu l"> Bolígrafo Azul (35 cént imos) </ label ><br/ >
<i nput t ype="checkbox" name="a r t i c ul o [ ' La p i c e r o grueso'] "
value=" . 27" i d="l a pizGrue s o" / >
<l a be l for="l ap izGrueso" >La pi cero gr ueso (27 céntimos) </ la be l ><br/ >
<i nput type=" ch e ckbox" name=" a r t i c ul o [ 'Lapicero fino'] "
value=" . 30" id="l apizFino" / >
c l ab e l for="lapizFino" >Lapi cero fin o (3 0 c é nt i mos) </ l a be l ><br/>
<i nput ty pe= " ch eckbox" name="articulo['Goma de borrar'] "
val ue=".35" id="goma" / >
<l a be l for ="goma" >Goma de borrar (35 céntimos ) </label ><br / >
<but t on> Env i a r </ but t on>
</ for m>
</ body>
</ html >
218 IMP LANTACi ÓN DE APLICACIONES W EB

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:

<!doct ype ht ml >


<ht ml l ang= " es " >
<head>
<met a c harset=" UTF-8" >
<t i t l e>Li s t a de compra </title >
</ head>
<body>
<h1>Ar t í c ul os comprados </h1 >
<?php
if(iss e t ($ _POST[" a r t i c uI o" ])){
$a r t i c ul o=$_POST ["art iculo" ];
if ( is_array ($articulo )){
echo "<ul>" ;
$suma=0;
foreac h($articulo as $nombre=>$va lor ) {
echo "<1i> $nombr e, precio: $valor &euro; </lb" ;
$s uma+=$vaIor ;
}
ec ho " </ ul >";
echo "<p ><s t r ong>Tot a l : $suma &euro;</strong></p>" ;
}
else{
echo " <p>Los datos no se han enviado correctamente </p>";
}
}
else {
echo "<p>No se han comprado artículos </p >";
}
?>
</ body>
</ ht ml>

Práctica 4.2: Clas ificac ión de la liga de fú tbol


• Crea un arr ay qu e conte nga to dos los equipos de fútbol de primera división españ ola, al final
de la temporad a 20 15 y los puntos que consiguieron.
UNIDAD 4. NO CION ES AVAN ZADAS SO BRE EL LENGUAJ E PH P - PRÁCT ICA S 219

• La lista no hace falta qu e esté ordena da.


• A través de ese array , consigue que aparezca un formulario con un cuadro combina do qu e
permita elegir el equ ipo y, tras hace r1o, se no s indiquen los puntos del equipo y su posició n
en la clasificación.

SOLUCiÓN : PRÁCTICA 4.2

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

<!doct ype html >


<ht ml lang=" es " >
<head>
<met a c ha rset =" UTF-8" >
<t i t l e >Cl as i f icac ión </ t i t le >
</ head >
<body>
<form ac t ion="equ ipos .php" method=" pos t " >
<labe l for="eq uipo"> El ij a e l eq ui po </ la be l>
<s e l ec t na me=" equi po" id=" equi po" >
<?php
l / Or de na mos e l array para que e l c uadr o co mbinado
l/mues t r e los equ ipos en orden alfabético
ksort($listaEquipos );
foreach($listaEquipos as $nombre=>$p) {
echo " <option val ue= '$nombre' >$nombre </opti on >";
}
?>
</ s e l ect> <br />
<button >Com probar </button >
<?php
if(isset ($_POST[ " e qui po"] )){
$equipo=$_POST[ " equi po"];
/* comprobamos s i e l equipo ex iste, de ser as í, toma mos los
puntos y buscamos s u pos i ci ón e n c lasif i caci ón
Pod r í a no existir si algu i e n ma n i pu l a l os par§metros
*/
if (isset ($li sta Equipos[$equ ipo] ) ){
$punt os =$l i s taEquipos[$equipo] ;
$pos ic ion=arr a y_searc h( $equi po, $c l a s i f i cac i on) +1;
ec ho "<p >El $equipo t iene $puntos puntos, a hor a mismo".
" es el $pos i c i on" . " Q en la clas ificación </p>";
}
else{
echo "<p >Equipo innex i stente.".
" Has inten t ado liarme</p>" ;
}
}
?>
</ f or m>
</ body>
</ ht ml >
UNI DAD 4. NOC IONES AVANZADAS SOBRE EL LENGUAJE PHP - PRÁCTICAS 221

Práctica 4.3: Bandas de color aleatorio


• Crea una página rellenada por lOO franja s hori zontales de color aleatorio.
• Las franja s deben ocupar toda la página, la altura, por lo tanto, será calculada de forma qu e
se reparta equitativamente entre cada fran ja
• Además realm ente solo habr á ro colores distintos. De modo qu e las ro prim eras fran jas serán
realmente aleatorias, pero luego se repiten en el mism o or den hasta rellenar la página
• Ejemplo de resultado :

- - ~ n _
--

SOLUCiÓN: PRÁCTICA 4.3

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

<!doct ype html >


<ht ml l a ng=" es " >
<head >
<me t a c ha rset=" UTF-8" >
<t i t l e>Fr a nj as a leator i as< / t i t l e >
<s t y l e>
div {
positi on : fi xed ;
widt h:100%;
heig ht: 1%;
}
body {
ma rg i n :0;
fon t - size :1px;
}
</ s t y l e>
</ hea d>
<body>
<?php
l / es cri b i mos cada fra nja 10 veces
$top=0;
f or ($i =1;$i <=10;$i++) {
f oreac h ($arraycolor as $j= >$color ){
// Es t a es la línea más co mpleja:
//$co l or coloca el código de color de cada capa
// $top% => va subiendo la coordenada vertical de cada capa
// de 1 en 1 en %
ec ho " <d i v style= '$color ;top :$top%; ' ></div >";
$top++ ;
}
}
?>
</ body>
</ ht ml>

Práctica 4.4: Función de dib ujo de arrays


• Crea una función llamada dibujarArray que reciba un array y escriba el array usando una
tabla HTML de dos columnas, en la primera aparecerán los índices (esta primera estará som-
breada de gris) y en la segunda los valores.
UN IDA D 4. NOC IONES AVANZADAS SOBRE EL LENGUAJE PHP - PRÁCT ICAS 223

• Ejemplo de res ultado:

índice valores
Palencia 80000

Valladolid 306000

Murcia 439 0 0 0
Albacete 17°000

Bar celona 160 0 0 0 0

A Coru ña 25°0 00

SOLUCiÓN: PRÁCT ICA 4.4

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

ec ho " <br >";


$simbolos=arr ay ( " Au" => " Or o", " Ag"=>" Pl a t a" ,
" Hg"=>"Mercurio","H"=>"Hidrógeno");
d ibujar ($ sim bol os );

?>
</ body >
</ ht ml >

Práctica 4.5: Valid ación del NI F


• Crea una pág ina web que pida los dat os per sona les de una persona: (Nombre, Apellidos ,
Nombre de us uario, DNI o NIE, Teléfono). Después crea ot ra que valid e los datos de esta
forma:
- Nos comunicará un error si en el nombre y los ape llidos hay texto diferente de letras y/o
espacios y guiones. Cualquier otro símbolo provocará un error.
- Para el nombre de usuario solo se admite comenzar por letra (sea mayúscu la o minúscula)
y des pués seguirán números o más letras. Mínimos tiene que haber seis caracteres.
- El DN I tiene que cumplir las reglas de los DN I españoles: 8 números y una letra. Pero se
pue de especi ficar ta mbién un NlE , en cuyo caso cons ta de una letra (solo pu ede ser X, Y o
Z) y de siete n úmeros más un a let ra final.
- Ade más la letra fina l del DN I cum ple esta fórmula. Los números se divide n en tre 23 y se
toma el rest o, el res to se sustituye por un a letra siguien do este patr ón :

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 .

SO LUCiÓ N : PRÁCT ICA 4 .5

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:

<!doct ype ht ml > <ht ml lang="es" >


<he ad>
<me t a c harset =" UTF-8" >
<t i t l e> Datos personal es </titl e >
</ he ad >
UN IDA D 4. NOCIONES AVANZADAS SOBRE EL LENGUAJE PHP - PRÁCT ICAS 225

<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 >

Código de la págin a practicas.php :

<!doct ype htm l >


<ht ml l a ng=" es " >
<head>
<me t a c ha r set=" UT F-8" >
<t i t l e>Va l i da r datos personales </t it le >
<sty le >
. e r r or {
co lor :red;
}
</ s t y l e>
</ head >
<body>
<?php
$todoBien=tr ue ;
if (i s set ($_POST[ " nombr e " ] ) && iss et ($_POST[ " a pe ll i do1" ] )
&& iss e t ($_POST[ " a pe ll i do2"] ) && isset ($_POST[ " ni f "] )
&& isset ($_POST[ " us ua r i o"] ) && isset ($_POST[ " t e l e f ono" ] ) ) {
$nombre =$_ POST["nombre"];
$a pe lli do1= $_POST["apellido1"];
$ape lli do2= $_ POST["apellido2" ];
$n if=$_ POST["nif"];
$us uar io=$_POST["usuario"];
$telefono=$_ POST["telefono"] ;
226 IMPLANTACiÓN D E APLICACIO NES W EB

l/conj unt o de caracteres alfabéticos del espaAol


$letrasValidas=" A-Za-záéíóúüÁÉÍÓÚÜñÑ";
i f (preg_match( "/I\[$ l etras Va l i das \ - ] +$/" , $nombr e) ==f a l s e ) {
echo "<p class=' erro r ' >Nombre no válido </p >";
$todoBien=fal s e ;
}
if (preg _matc h( " / I\[$ letras Vali das \ - ]+$/", $a pe l l i do1)==f a l s e ) {
ec ho " <p class='error' >Primer apellido no válido </p>" ;
$todoBi e n=fa lse ;
}
i f( pr eg_mat c h ( " / I\[$ l e t r asVa l idas \ - ]+$/" , $ape l l i do2) ==f a l s e ) {
echo "<p class=' error ' >Segundo apell ido no válido </p>";
$todoBien=f a l s e;
}
if ( pr eg_ma t ch ( " / I\[$letras Vali das ] [{$ l e t r as Va l i das}0-9]+$/" ,
$us uari o )==fal s e ) {
ec ho " <p class='error ' >Usuar io no vá l i do</ p>" ;
$todoBien=fa lse;
}
i f (preg_match ( " / 1\ [0- 9] {9}$/" , $t e le fo no) ==f a l s e ) {
echo "<p class='error'>Teléfono no válido</p >" ;
$todoBien=fa lse;
}
i f( pr eg_mat c h( " / 1\ [0- 9XYZ] [0-9] {7} [A-Z]$/" , $nif) ==f a l s e ) {
ec ho " <p c l ass ='er ror ' >NI F no vá li do </ p >" ;
$todoBien=fa lse;
}
el se{
if( $ni f [0 ] ==" X" ) $n i f[0] =" 0" ;
elseif ( $n i f [0 ]==" Y" ) $nif[0 ]=" 1";
elseif ($n i f [0 ] ==" Z" ) $n if [0 ] =" 2" ;
$numer os NIF=s ubstr ($nif, 0,8 ) ;
$ letras= " TRWAGMYFPDXBNJ ZSQVHLCK E";
$resto=$numeros NI F%2 3 ;
if ( $nif[ 8] !=$letras[$resto ] ) {
ec ho "< p cl as s =' er r or ' >Letr a de NIF i nc orrecta< / p> " ;
$todoBi en= fa lse ;
}
}
if( $t odoBi e n==true) {
echo "<p >Dato s co r rec t os </ p>";
}
}
UNIDAD 4. NOC IONES AVANZADAS SOBRE EL LENGUAJE PHP - PRÁCT ICAS 227

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:

Encriptado y desencriptado tipo César


Escriba el texto a encriptar o desencriptar

Elija lo que desea '


. 'Encriptar U Desencriptar

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.

Práctica 4.7: Palíndromos


• Crea un formulario en el que se pida un text o y después de enviar su conte nido se nos indi-
qu e si es un palíndromo. Ejemplos de palíndromos (no se usa rá n letras fuera de ASCII):
- dabale arroz a la zorra el abad
- se verlas al reves
228 IMPLANTACiÓN DE APLICACION ES W EB

- adivina ya te opina, ya ni miles origina, ya ni cetro me domina, ya ni monarcas, a repaso ni


mulato carreta, acaso nicotina, ya ni cita vecino, anima cocina, pedazo ga llina, cedazo terso
nos retoza de can illa goza, de panico camina, onice vaticina, ya ni tocino saca, a terracota
luminosa pera, sacra nómina y animo de mortecina, ya ni giros elimina, y a ni poeta, ya ni
vida

Práctica 4.8: Pa líndro mos


• Crea una fun ción PHP a la que se le pasen do s texto s y nos digan si ambos son anagramas
de la mi sma raíz. Un anagrama es un apalabra form ada por los mismo s caracte res qu e otra.
Ejem plo: ESPONJA - JAPON ES, son do s anag ramas de la misma raíz.

Práctica 4.9: Valida r emails


• Crea una función que reciba un array de strings (no hará falta validar la variable, supondre-
mos qu e efectivamente es un array de strings). En dicho array se verificará que cada elemento
es un string que contiene una dirección de email válida.
• La función devolverá verda dero si to dos los eleme ntos del array contienen direcciones de
ema il válidas ; devolverá falso de no ser así.
• Consid erarem os un email válido si tenem os a la izquierda de la arroba, letras del código
ASCII, guiones , núm eros, el guion bajo o un punto (pero el punto solo pu ede ir entre media s
de los anteriores). Tras la arr oba solo permitirem os corr eos de los dominios gmail.com ,
y ahoo.es,yahoo.com o hotmail.com. Ejemplos:
- andres.perezrSeoyahoo. es -7 válido
- evacinnasn.es -7 inválido
- pedro@[email protected] -7inválido
- [email protected] -7inválido
- [email protected] -7válido
- pedro.diez.crespoqoyahoo.com -7 válido
- [email protected] -7inválido , no pu ede haber dos puntos seguidos, delante y detr ás
del punto debe de haber letras, n úmero s o el guion bajo
- _._@yahoo. es -7 válid o
U NI DAD 4. NOC IONES AVANZADAS SOBRE EL LENGUAJE PHP - PRÁCT ICAS 229

Práctica 4.10: Pri m itiva


• Crea un a pág ina PHP que m uestre 100 com binaciones aleatorias de lotería primitiva ; cada
una de las cuales estará formada por seis números.
• Se debe de consegui r qu e en cada combinación no se repite ningún número.

Práctica 4.11: Validación avanzada al estilo JavaScript


• Crea un formulario qu e sirva para pedir los da tos para un soporte t écn ico. El formulario debe
de pedir y validar estos datos:
- Casilla de verificación o botón de radio qu e permita elegir si la n acionalidad es espa ñola
o no.
- Edad. Tiene que ser de 1 a I SO.

- 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

4.10 RESUMEN DE LA UNIDAD


Las funciones son uno de los elementos que aporta PHP para escribir código modular
que permita su reutilización.

En PH P se pueden crear funciones co n paso de variables por valor y por referencia,


funcion es recursivas, variables globales, variables estáticas, par ám etros con valores por
defect o, etc. En definitiva, todas las posibilidades de funciones qu e n os pu ede aportar
un lenguaje avanzado.

• 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.

PHP admite el uso de arrays multidim ension ales.

• 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

4.11 TEST DE REPASO


¿Qué es una variable estática? ¿Qué saca por pantalla el código
Una variable cuyo valor es siempre el ech o count ($ nota )?
mismo Sale un error al ser un array
II Una variable cuyo valor persiste ent re bidimension al
llamadas a la función en la que se creó
,) Una variable dentro de un a funci ón , e: 2
cuyo valor está asociado al valor de
d) 3
una variable creada fuera de la función
el) Un parámetro al que se le asigna un 1,. ¿Qué diferencia hay entre las funciones de
valor po r defect o ordenación de arrays sort y asort?
La primera ordena en ascendente y la
- ¿Q ué tipo de función es la qu e se defin e
segunda en desce ndente
con este códi go?
Ninguna, son funciones sinónimas
fun ction f($n){
i f( $n <=2) r et ur n $n; La pr imera ordena los valores y la
else r e t ur n f($n-2)+f($n-i); segunda los índices
} La primera elimina los índices origina-
les y la segu nda los respeta
Estática
) ) Referencial Si la variable $t esto es un string, como
el Calcular podemos mo strar po r pantalla su quinto
carácter?
d) Recursiva
$texto(5)
Usando el código de la pregunta anterior, $texto(4)
si invocamos a esa función con el código
$t ext o[5]
echo f (5 ) ¿Qué sale po r pantalla?
,) $texto( 5)
15
r\ UI 8 - ¿Q ué función permite obten er el tamaño
() 5 de un st ri ng?
di 8 •J l en gt h
.) 12 hl str le n
s ize
En PHP los arrays...
di wi dth
aJ Solo pu eden ser unidim ension ales
1)) Solo pu eden ser escalares ¿Cuáles de estos t extos cum plen la
siguient e expresión regular?
e) Son colecciones de datos del mismo
tipo / A[K- N] ? [0- 9 ] +[ASD] $/
lo Todas las respu estas anteriores son kA
falsas 78655I44 565SD
Ob serva este código: 786551445655
$nota[0] [0] =9; L78655I44565S
$no t a [0] [1] =7; '-1 K78 655I44565S
$nota [1] [0] =9 ; eI K786 55I44 565ASD
g, KS
UNIDAD 5

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

5.1 LIMITACIONES DEL PROTOCOLO


HTTP
El protocolo que se uti liza para navegar por la web es http. Con lo cua l la programación de
aplicaciones web dep end e de este protocolo. http es un protocolo de petición (request ) y res-
pu esta (response ); básicam ente un clien te hace un a petición de recurso y un servidor http res-
ponde a esa pet ición .

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.

5.2 FORMAS D E G EN ERA R UN ESTADO O


~

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.

5.2.2 PASO DE PARÁMETROS MEDIAN TE CADENA


DE CO NSU LTA
Toda URL pu ede ten er una cadena de con sulta. Por ejemplo, si escribim os en nu estro nave-
gador la ur l: https://www.google.es/#q=PHP abriremo s la página de Google en Espa ña y auto -
UNI DAD 5. INT ERCAMBIO D E INFORMACiÓN ENT RE PÁGINA S WEB CO N PHP 235

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).

ACTIVI DAD 5.1:


• Crea un a página capaz de recoger un nomb re median te un parám et ro GET de cadena
de consulta . Así si la página se llam a consulta.php, la podremos invocar con el texto :
consulta.phpinombre-jorqe.
• Con sigue que la página escriba Hola seguida del nombre que le mandes en la cadena de
consulta.

5.2.3 PASO DE PARÁMETROS MEDIANTE MÉTODO


POST
Los formularios también permiten pasar información entre páginas. Si ese paso se hace por
GET, ten emo s la desventaja de que los datos se ven en la barra de dirección , al igual qu e hemos
visto en el apartado ante rior. Si usáramos POST, en lugar de GET, para pasar información ent re
páginas, los dato s no se ven en la barra de dir ección , sino qu e viajan en la cabecera del paqu ete
http (véase Figura 3.6 en la página I50).

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.

ACTI VIDAD 5.2:


• Prueba a crear un formulario que te nga un control visible y un control ocu lto. En el cont rol
visible pide por ejemp lo el nombre al usuario. En el oculto almace na el texto "No me ves".
• Haz un a página qu e rec oja estos dato s vía POST y com pru eba que recibes ambos valores
m ostrándolos por pantalla.

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.

5.2.5 SES IO NES


En rea lidad todas las técnicas anteriore s sirven para generar información de sesion.
Ente ndien do por sesión la actividad que tiene un usuario en su navegador desde qu e lo abre
hasta qu e lo cierra.

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.

5.2.6 BASES DE DATOS


El uso de esta técnica se explica en detalle en la siguiente unidad. Es el m étodo habitual de
almac enaje perm an ente de información. Se trata de que desde PHP accedemos a un siste ma ges-
tor de bases de dato s encargado de almac enar la información que necesitamo s.

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.

5.3 USO DE COOKIES DESDE PHP


5.3.1 FUNCIONAMIENTO DE LAS COOKIES
Son indudablem ente la opción más hab itual para almacenar información del usuario. Lo malo
es lo ya comentado: el clien te de un sitio web puede prohibir o borrar las cooki es almac ena das,
con lo qu e n o te nemos la segur idad de qu e esta técni ca funcio ne en to dos los clien tes.

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

( Respuesta (graba coo kies)

Siguientes pet iciones

(adjunta n coo kies) ~7 SERVI DOR PHP

DIRECTORIO
DE COOK IES
.>
Figura 5.1: Esqu ema de fu n cionam ien to d e las cookies

Las cookies se pasan en la cabecera de la petición http por lo qu e su in formación viaja en el


mismo paquete . En el m om ento que el servidor decide gra bar los datos de la cook ie, esta viaja con
el paquete en todas las peti cion es y resp uestas de esa sesió n.

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

5.3.2 AL MACE NA M IENTO DE COOK IES DESDE PHP,


SETCOOKIE
La función setcookie es la encargada de aña dir (o borrar) una nu eva cookie. Sintaxis:

setcookie ( nomb re [ , va l or [ , exp i r ac i ón [ , r ut a [ , domi n i o [ , s e gur a


[s o l oHt t p]]] ]]
238 IMPLANTACiÓN D E APLICACION ES W EB

Los parám etros son:

• nombre. Es el nombre que le dam os a la cookie. Después podremos consultarle para


pod er saber su valor.

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.

• soloH ttp. Disponible desde la versión 5.2 de PH P. Es un valor boolean o qu e indi ca qu e


la cookie solo está disponible mediante el protocolo http y no , por ejemplo, desde
JavaScript. La idea es paliar, en cierta forma , problema s de segur idad al hacer qu e la
cookie no se pu eda recoger en un ataque de tipo Cross Side Scriptinq (XSS).

Ejemplos:

setcookie ( " v i si t a s " , 1 ) ;


l/gr a ba la cookie visitas con valor 1 y que caduca con esta sesión
setcookie ( " us ua r i o", " a ndr e i " , time ( )+60*60*24 )
l/ gr a ba la cookie con nombre usuario y valor andrei que
/ /c a duc a r ¿ a l dia sigu iente

5.3.3 ACCEDER A LOS DATOS DE LAS COOKIES


El array global L COOKIE permite acceder a las cooki es almacena das. Para acceder al valor de
un a cookie con cret a, basta indic ar el nomb re de la cooki e com o índice de este arra y. Por ejemplo,
$_ COOKIE["visitas''] devolvería el valor de la cooki e con nombre visitas (suponiendo que esté
definida dicha cookie). Ejemplo:
if (isset ($_COOKIE ["v i s i t a s " ] ) ){
ec ho "esta es t u vi s ita núme ro {$_ COOKIE [" v i s ita s" ] }" ;
}

5.3.3.1 BORRAR COO KIES


Cuando se vuelve a utilizar la función set cookie indicando el nombre de un a coo kie ya exis-
tente y un nu evo valor, el n uevo valor sobrescribe el ante rior valor qu e tu viera dicha cookie. Bajo
la misma idea, si usamos setcookie indic and o un nombre de cookie existe nte y el valor cero o
false , entonces, se eliminará la cookie con ese nombre.
UNIDA D S. INT ERCAM BIO DE IN FO RM ACiÓ N ENTRE PÁGINAS WEB CON PHP 239

Ejemplo:

s e t c ooki e ( "v i s i t as " , f a l s e ) ; l l e l i mi na la cookie de nombre visitas

Podemos ta mbié n eliminar cookies más antiguas indicando una fecha de caducidad anterior
a la actual, por ejemplo:

setcoo kie (" visitas" ,fa lse ,t i me()-60*60*24*7 );


1* e limina la cookie de nombre visitas con fecha de caducidad de
hace a l menos una semana *1

5.3.3.2 ALMACENAR DATOS BINARIOS EN COO KIES


En las cookies no se pu eden almacenar dato s bin ario s. Las cookies solo admiten valores de
tipo str ing. Es decir, no es válido el código:

setcookie (" notas" ,arra y (9 , 7,6 ,5 ) ) ; Il i nvá l i do : datos bi narios

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:

set c oo kie (" not as " ,seria l ize ($array1 ) ) ;

El problema ahora es qu e cuan do lo qu eram os leer, te ne mos el problem a contrario: es decir,


conver tir el texto en el binario corres pondiente . Ese pro ceso es incluso más difícil; pero PHP
lo facilita mediante la función contraria: unse rialize. Esta funci ón realiza el pro ceso inverso a
serialize. Para extraer el array del ejemplo ante rior escribiríamos este código:
$array1=un s e ri ali ze($ _COOKIE["nota s "]));

5.4 USO DE SESIONES EN PHP


5.4.1 VE NTAJAS Y DESVE NTAJAS
PHP permite auto ma tizar la gestión de sesiones. Las sesiones, comparadas con [as cookies
ofrecen estas ventajas:

• 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.

Los pasos son los siguien tes :

[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.

[3] Asociado a ese identificador de sesión, se crea un archivo en el servidor en el qu e se almac-


narán físicamente los datos de la sesión.

[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 .

[6] La sesión finaliza automáticamente cua n do el usuario cierr a el n avegador.


UNIDAD S. INTE RCAMB IO DE IN FO RMACi ÓN ENTRE PÁGINAS W EB CO N PHP 241

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:

<!doct ype html >


<ht ml l an g=" en " >
<hea d>
<me t a c harset=" UTF-8" >
<t i t l e> Doc ume nt</ t i t l e>
</ he ad>
<bod y >
I <?= "Hola ". $_SESSI ON["nombre" ] ?>
</ body>
</ ht ml >

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.

Utilizando el código anterior, el proceso de funcio na miento de la sesión sería el siguiente:

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

4) Se gra ba la cookie , 5) Se hace cr


cad uca con la sesión Se pide la le ~n el enlace de I ' .
sesiÓn en ~agtna2. php y Se a pagma2¡
arma de cookie en\t¡a e/ ID de

DIRECTO RIO 6) Se devu elve el


DE COOKIES códi go HT ML usando dato s
obten idos de la ses ión
PHPSESSID=
43349823789 23
PAGINA2.PHP

Figura 5.3: Funcionamiento de una sesión gestionada a través de una cookie

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

tiene el nombre habitual de PHPSESSID , con el identificador de sesión 8FR45237A89 y


estamos en la URL http://prueba.com/pogr.php, la sesión provoca un a URL parecida a
esta:
http : / /prueba .com/pog1 .p hp?PHPS ESSID=8FR45237A89
Para que sea esta la opción que está funcionando , deberemos modificar el archivo php .
ini y hacer estos cambios:
sess i o n. use_ coo kies 0
s ess i o n. us e tra ns id 1

El esquema de funcionamiento de sesion es con identificador en la URL sería el siguiente:


, - -- - lo..
nombre-jorge

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.

5.4.3 INI CIO D E SES iÓ N


Una sesión comienza en la pr imera página PHP que invoque a la función session_start. Esta
función no tiene argumentos, simplemente inicia la sesión si no ha sido iniciada , o bien permite
el acceso a los datos de la sesión si ésta ha bía sido in iciada anteriormente. Iniciar la sesión implica:

[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.

5.4 .4 USO DE LA SES iÓN PREVIA MENTE INICIADA


Si la sesión ya habí a sido iniciada cuando se invocó a sessión_star t , entonces, no se crea un a
nueva sesión sino que:

• Se sigue utili zando la sesión anterior

• 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.

5.4.5 OBTENER DATOS DE LA SESiÓN


Dos funciones permiten obtener (y cambiar) los datos de la sesión:

• 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.

5.4. 6 USAR VARIABLES DE SESiÓN


Una variable de sesión permite asociar una clave a un valor de la sesión act ua l.
UNIDAD S. INTERCAMB IO D E INFORMACiÓN ENTR E PÁGINAS W EB CO N PHP 245

Para almace nar un dato de sesión basta usar esta sintaxis:


........_ ........-"
i $_SESSION[" c l ave" ] =va l or 1
Para recoger un valor almacenado se utiliza el mismo array in dican do la clave o nombre del
valor que deseam os recoger. Por ejemplo:

$varia ble=$_SESSION["cla ve"]

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.

5.4.7 BORRAR DATO S D E LA SESiÓ N


Si deseamos elim ina r un dato de la sesión basta con usar la función PHP de eliminación de
variables unset. De modo que si deseamos elimina r los datos de la sesión asocia dos al nomb re o
clave visitas, har emos lo siguiente:
uns et($_SESSION["v i s itas "])

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.4.8 EL IM INAR LA SES iÓ N ENT ERA


Elimina r la sesión de forma absoluta, consiste en:

s es si on_s t art ( ) ; Il s i no la hub iéramos invocado ya


unset($ _SESSION); Il e l i mi na el array , sino se queda gastando memoria
s ess i on_des troy ( ) ; l l f unc i ón de eliminación en si de la sesión
246 IM PLANTACi Ó N DE APLICACIONES W EB

,
5.5 PRACTICAS RESUELTAS

Práctica 5.1: Grabado de preferencias de usuario con cookies


• Crea un a página web ipracticai -index.phpí en la que se pregunten datos del usuario,
concreta me nte:
- Nombre y apellidos
- Color desead o para el fondo
- Color deseado para la letra
- Elegir un a de entre tres tipos de letra (pue den ser, por ejemplo, tre s tipo s accesibles en la
página de Google fonts)
• Tras aceptar los datos, una segunda página tpracticat-saludo.phpi saluda al usuario, por
ejemplo, con el men saje Ho la Ana Fernández , utili zando e! tipo de let ra y colores elegido s.
• La siguiente vez qu e accedamos a la página inicial ipracticat-index.php), ya no nos pregun-
tará las preferencias porque se dar á cuenta que tien e los datos en cookies y no s llevará a la
segunda página.
• Si intentamos acceder directamente a la página del saludo y no hem os graba do las preferen-
cias, esta página nos llevará a la página con e! formulario.
• En la página de! saludo , un enlace nos per mitirá borr ar las preferen cias.

SOLUC iÓ N: PRÁCTICA S.l

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

Código de la página inicia l (formulario), practicar-index.php. Simplemente se comprueba si las


preferencias no están ya guardadas. Si lo están, directamente se redirige la página a la del saludo,
si no se mostrará el formulario.
<?php
/******** pr act i ca1 . i ndex . php********************/
i ncl ude Ipractica1-comprobar.php" ; l/ca r ga l as fu nc iones de comprobac ión
i f ( ha yCooki e ( ) ){
l/ s i tenemos prefe r e nc ias ya guardad as , d i r ect amente vamos al s aludo
he ade r( l l oc at i o n :pr ac t i c a1- s a l udo . php") ;
}
?>
<!doc t ype html>
<ht ml lang=" es" >
<head>
<met a c harset=IUTF-8 " >
<t i t l e>For mul ar i o de recog ida de preferen c ías </title >
</ head >
<body >
<for m ac t ion=lpractica1-saludo.php">
<labe l for=l nombre" >Nombr e </l ab el >
<i nput ty pe=" t ext" name ="nombr e " id=" nombre" / ><br / >
<l a be 1 for= "a pe 11idos" >Ape 11idos </l a be 1>
<i nput t ype="text" name= "apell idos" id=" apell idos" /> cbr />
<l a be l for="fondo" >Color de fondo </ l a bel >
<i nput t ype= "co l or " name= "f ondo" i d=" fondo "/ ><br / >
<l a bel f or e " fre nte " >Co lor de l e t r a </l ab el >
<i nput type="col or " name ="f r e nt e " id="fr en t e" / ><br / >
<la be l for= " l etra " >Tipo de letra </l ab el >
<se lect name ="l e t r a " id=" l etr a ">
<opt ion value="'Sh adows In t o Li ght ' , c urs ive " >
Shadows Into Light
</ opt i on>
<opt i on va lue="' Sl a bo 27px ' , ser if" >Slabo 27px</opt ion>
<opti on valu e= " 'Robot o', s a ns-se rif " >Robot o </ opt i on >
</se lect> cbr />
<butt on> Env i a r</ but t o n>
</ fo r m>
</body>
</ ht ml >

A continuación se expone el código de la página practicar-saludo.php. Básicamente com-


prueba si tenemos cookies con los valores de preferencia de usuario y, si no es así, com prueba si
están llegando las preferencias vía GET (lo cual significaría que nos los está enviando el formula-
rio anterior). Si no llegan datos correctos, entonces cargamos de nuevo la página del form ulario.
248 IMPLANTAC IÓN DE APLICACIONES WEB

<?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 >

<p>< a href="practica1-borrar .php" >Vo l ve r a cambiar las preferenci as


</ a ></ p>
</ body >
</ ht ml>

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>

Práctica 5.2: Grabado de preferencias mediante sesiones


• Se trata de hacer la misma página que en la práctica anterior, pero ahora utilizando sesiones.

SO LUCiÓ N: PRÁCT IC A 5.2

Básicamen te el funcionamiento es el mismo. La única precaució n al utili zar sesiones es invo -


car a session rstart antes de utilizar el array LSESSlüN.
250 IMPLANTACiÓN DE APLICACIONES WEB

Código del archivo practicaz -comprobar.php:


<?php
f unction hay Coo kie ( ) {
return i sset ($ _COOKIE[ "nombr e"] ) && isset ($_COOKIE[ " ap e ll i dos "] )
&& isset ($_COOK IE["fondo"] ) && isset($_COOKIE[ " fr en te"] )
&& i s s e t ($ _COOKIE[" l e t r a"] ) ;
}
f unc t i on ha yGe t ( ) {
r e t ur n i s s et ( $_GE T[ " nombr e"] ) && i s s et ($ _GE T[ " a pe l l i dos "] )
&& i s s e t ($ _GET[" f ondo"] ) && i s s e t ( $_GET [" f r e nt e"] )
&& isset($_GET [" letr a"]);
}
?>

Código de la página del formulario , practicaz-index.php:


<?php
i ncl ude "prac t ica2-comproba r.php";
i f ( ha ySes i on()){
l / s i tenemos preferencias ya guardadas, di rectamente vamos al sa ludo
header ( " l oc at i on : pr ac t i ca1- s a l udo . php" ) ;
}
?>
<!doct ype html >
<ht ml l an g=" es " >
<hea d >
<met a c ha rset=" UTF-8">
<t i t le> For mular io de r ecog i da de prefer e ncias</t it le>
</ hea d>
<body>
<f or m act i on="practica2-saludo.php" >
<l a be l for="nombre" >Nombre </ labe l>
<i nput t ype=" text" na me=" nombr e " id="nombre" / ><br / >
<l a be l for="ape l l idos" >Ape l l idos </ la be l >
<i nput type="text" name="apellidos" id="ape l lidos" / ><br / >
<l ab e l for=" fondo" >Colo r de fondo e / l a be l >
<i nput type="color" na me="fondo" id="fondo" va l ue=" #FFFFFF" / ><br / >
<l a be l for ="frente" >Co lor de letra </ la be l >
<i nput type="color" name="frente" i d=" f r e nt e " / ><br / >
<l a be l for="letra" >Tipo de letra </labe l >
<s e l ec t na me="l e t ra" id=" l e t r a" >
<opt i on val ue='''S hadows Into Li ght ' , c urs i ve" >
Shadows I nto Lig ht
</ opt i on>
<opt ion va l ue="'S la bo 27px', ser if"> Sl a bo 27px</opt ion >
UN IDA D s. IN T ERCAM BIO DE INFORM ACiÓN ENTRE PÁGINAS WEB CON PHP - PRÁCT ICAS 251

<opt i on val ue='"Roboto ' , sans-serif" >Roboto< /optio n>


</ s e l ect >< br/>
<but t on> Env i ar</ but t on>
</ for m>
</ body>
</ ht ml>

Código de la página de saludo, practicaz-saludo.php:


<?php
include " pr ac t i c a1- c ompr obar . php" ;
l/ nos dice si tenemos preferencias de usuario
$ha yPreferenc ias=true;
l/accede al array , sea GET o POST con las preferencias
$array=null ;
if(hayCook i e ( )==f al s e){
if(hayGet ( )==f al s e){
$hayPre f eren ci a s =false;
}
else{
$a r ra y=$_GET;
}
}
else{
$array=$_COOKI E;
}
if( $hayP r eferen c i as ==false)
l /si no te nemos pr efe r e nc i as , vo lvemos al for mu lario
header ( " l ocat i on : pr ac t i c a1- i ndex . php" ) ;
else{
// Re cor r emos el array con los datos de usuario
l/y creamos una variable con cada nombre de preferencia
foreach ( $array as $indi ce=> $va l or){
$$i ndice=$valor;
}
l / gr a ba r cookies con l as pre f erenc ias de us uario
s etcookie( "nombr e ",$nombre,time() *60*60 *24 *30 );
setcookie ( "a pell i dos " , $a pell idos , time ( )*60 *60*24 *30 ) ;
setcookie ( " f ondo",$fond o ,time ( )*60*60*24 *30 );
s et cookie ( " f r e nt e " ,$frent e ,time ( )*60*60*24*30 ) ;
setcook ie("letra",$ let r a ,t ime(h60*60 *24 *30);
}
?>
252 IMPLANTACiÓN DE APLICACIONES WEB

<!doc t ype html >


<ht ml lang=" es " >
<head >
<me t a c ha rset=" UTF-8" >
<t i t l e>Sa l udo</ t i t le>
<!- - Ca r ga de l as l e t r as desde Google fonts -- >
<l in k
hr e f =' ht t p:/ / font s .googl eapi s .com/ css ?fami l y=Shadows+Int o+Li ght ISl abo+27px IRobot o'
<sty le >
body{
background -color: <?=$fondo? >;
color : <?=$frente ?>;
font -fami ly :<?=$ letra ?>;
}
a{
background -color:white;
}
</ s t y l e >
</ head>
<body>
<h1>Ho l a <?="$nombre $apellidos"?> </ h1>
<p><a hre f=" pr ac t i ca1- bor r a r . php" >Volve r a camb i a r las preferenc ias
</ a></ p>
</body >
</ ht ml >

5.6 PRÁCTICAS PROPUESTAS


Práctica 5.3: Z ona restringida
• Crea un a página PHP llamada practicm-restrinqida.php , bastará con qu e simpleme nte mues-
tre el me nsaje Zona restringida.
• Dicha página no se podrá ver por parte de ni ngún usuario que no se haya autentificado en la
página practicat -autentificacion.php, la cua l pedirá una contrase ña.
• Cua ndo entramos en practiccq-autentificacion.php y escribimos la contrase ña correcta, se
nos enviará automáticamente a la página practicaj-restrinqida.php.
• Si inten tamos acceder directame nte a la zona restringida sin haber pasado nunca por la
autentificación, no se nos per mitirá entrar y se nos enviará a practicaz- autentiii cacion.php
para qu e escribamos la contrase ña.
• Tras hab ernos aute ntificado, durante la sesión po drem os acceder dire ctamente a [a zon a
rest ringida y no se nos pedirá la con t rase ña,
UNIDAD 5. INTERCAMBIO DE INFORMACiÓN ENTRE PÁGINAS WEB CON PHP - PRÁCT ICAS 253

• 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.

Práctica 5.4: Lista de tareas


• Muestra una página web en la qu e disponga mos inicialmente de un formu lario en el que
te nemos un cuadro de texto y un botón con el tex to Añadir tarea .
• Ese formulario no s permitirá escribir el nombre de un a tarea y al pul sar a ñadir, aparecerá la
página mo strando un a lista de tareas donde ya aparece la que hemos a ñadido.
• Pode mos seguir aña dien do tareas y cada vez qu e lo hacem os, la lista va crecie ndo.
• Al lado de la lista de tareas a ñadidas , cada un a de ellas tendrá un enlace que diga Qu itar
tarea, dicho enlace nos permitirá qui tar la tarea de la lista.
• En todo momento el usuario tiene que ver la misma página en la que la lista muestra las
tareas que ha ido a ñadiendo y donde ya no aparecerán las que ha ido eliminando.

Práctica 5.5: Ju ego visu al


• Una págin a web nos mostrará cinco palabras aleatorias. Solo nos mos trará esas palabras
dur ante ro segundos, despu és de los cuales se most rará una segunda página.
• En esa segun da página aparecerán 5 cua dros de text o que nos preguntan por las 5 pa labras
qu e se nos han mostrado en la primera págin a.
• Tras escribir las 5 palabr as, un a tercera página nos permitirá saber cuá ntas hem os ace rta do y
un enlace no s dará la posibilidad de volver a jugar de nu evo.
• Nota. Para que un a página se redir eccione a otra pasados ro segundos, lo más cómodo es
escr ibir este código JavaScript:
wi ndow.on loa d=f unct io n()
{
setI nt e rval (f unct io n( ){ l oca ti on= '' ht tp : / / goog l e . es"} , 1000 ) ;
}

Práctica 5.6: JavaScript y PH P para seleccionar un tono


• Esta práctica solo se puede realizar con ciertos conocimientos en JavaScript. Se trata de mos-
trar un a página que divida la pantalla en 20 rectángulos iguales. Cada rectángulo m ostrará
un color aleatorio.
• Al hacer die en uno de los rectán gulo s la página se reca rga mostrando otros 20 colores y en
un a zona llamada colores elegidos se mo st rará el color elegido.
• Cada vez que elegimos un color, éste se coloca en la barr a de colores elegidos.
254 IMPLANTACIÓN DE APLICACION ES W EB

5.7 RESU MEN DE LA UNIDAD


El protocolo http es un protocolo sin estado. Cada petición es independiente de la
anterior.

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

• Las sesiones en PHP:


Requi eren el uso de un identificador de sesión que se puede grabar en una cookie o
enviar como cad ena de con sulta en la URL.
Se gene ran o utili zan mediante el método session_start.
Se leen y edita n variables de sesión mediante el arr ay global L SESSION .
Se borran utili zan unset(LSESSION) y el m étodo session_destroy.

• El peligro de las cooki es es que alguien acceda a sus datos, ya que se envían en el paquete
http.

• El peligro de las sesion es es que alguien obtenga el identificador de sesión, ya qu e tam -


bién se envía en el paqu ete http.
UNIDAD S. IN T ERCAMBIO DE INFORMACiÓN ENT RE PÁGINAS W EB CO N PHP 255

5.8 TEST DE REPASO


¿Cuáles de estas afirm aciones son ciertas? En el servido r
Cookies y sesio nes son los únicos Parte en el ordena dor del clien te y
elementos para enviar dat os de una parte en el servido r
página a otra No requieren ser almacenados
Los datos de los controles ocu ltos de
los formulario s solo se pueden enviar (ó - ¿Qué función se debe invocar obligato-
mediante POST riamente para poder utilizar datos de
sesiones?
( .l http es un protocolo qu e no permite
almace nar el estado de la sesión a) ini t_session
Las cookies solo se pu eden utilizar si la t) sess i on_start
sesión no se ha cerrado sess ion_beg i n
., ¿Cuál de estas afirmaciones es cierta?
No se requiere invo car a nin guna fun-
ción para utilizar dat os de sesión
Las cookie s se almacenan en el orde-
nador del cliente ¿Qué función se debe in vocar obligato-
Las cooki es se almace nan en el riamente para poder utilizar datos de
servidor cookies?
Parte de los dat os de las coo kies se ,) i ni t_cooki es
alm acenan en el ordena do r cliente y cook i es_sta r t
parte en el servidor cookies_begin
Las cookies no requieren ser (l) No se requiere invocar a ninguna fun-
almacenadas ción para utilizar dat os de cookie s
¿Cuál de estas afirmaciones es cierta? Supongamos que deseamos borrar los
,,1 Tanto las cookies como las sesiones datos de una cookie llamada edad ¿Qué
admite n valores binarios instrucción lo haría?
bI Las sesiones admi te n solo strings, a: unset($ _COOK I E["edad"])
las coo kies además admiten valores cooki e_destroy ( "edad " ) ;
binarios
L, cooki e _destroy ( "edad" , fa 1se ) ;
1 I Las sesiones admiten valores binarios,
setcook ie ("edad" ,fal s e ) ;
las cookies solo admiten strings
Tanto las sesiones como las coo kies "1 - Supongamos qu e deseamos bor rar los
solo permiten valores en forma de dat os de un dato de sesión con n ombre
st ring edad ¿Qué instrucción lo haría?
unset ($_S ESSION ["edad" ] )
- ¿Cómo se pasa el identificador de u n a
sesión? session_destroy ( "edad" ) ;
Mediante una cookie session_destroy ( "edad " ,fal se ) ;
Por parámetros GET e' $_SESSION ["edad"]=false ;
e, Por controles de formulario ocu ltos .- ¿Para qué sirve la función serialize?
Puede ser tanto por una cookie como Convierte valores binarios en strings
porGET Convierte strings en valor es binarios
¿Dónde se almacenan los da tos una sesión? Convierte strings a formato Unicode
a) En el ordenador del cliente Convierte strings en formato Ascn
UNIDAD 6

ACCESO A BASES DE DATOS


MEDIANTE PHP
OBJETIVOS
- Analizar las ventajas que ofrece conecta r - Tra nsformar datos procedentes de la
con sistemas gestores de bases de dat os base de datos a una forma más humana y
en una ap licació n we b visu al
- Dete rminar los e lementos necesarios - Crear estructuras re lacionales apropiadas
pa ra utilizar bases de datos desde una pa ra almacena r la información de una
ap licación web a plicació n web
- Captura r e rrores de bases de datos - Crear aplic ac iones web que requier a n
adecuada me nt e man ipular bases de datos
- Ejecutar instrucciones SQ L desde la
ap licación web

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

6.4 ESTABLECER CONEXIÓN CON MYSQ L 6.8 SOPORTE D E TRANSACC IONES


6.8 .1 TRAN SACC IONE S EN M YSQ L
DESDE PHP
6.8 .2 AU TOCO M M IT
6.4 .1 PERSISTENCIA D E LAS CO NEXIO N ES
6. 8.3 CO N FIRMA R Y A NU LA R
6.4 .2 CO NT RO L DE ERRO RES EN LA
TRAN SACC IONES
CO N EXiÓ N
6.4 .3 CERRAR LA CONE XiÓ N CON LA BASE 6.9 PRÁCTICAS RESUELTAS
DE DATOS 6.10 PRÁCTICAS PROPUESTAS
6.5 SELECCIO NA R BASES D E DATOS 6.11 RESUM EN D E LA UNIDAD
6.6 EJECUC i Ó N DE IN STRU CCION ES SQL 6.12 T EST D E REPASO
6.6. 1 SQ L GENÉ RICO DE MYSQ L
258 IMPLANTACiÓN DE APLICACIONES WEB

6.1 BASES DE DATOS


Nota: Se da por hecho en este tema que se tiene n conoci mien tos almenas básicos sobre el len -
guaje SQL y el funciona mie nto de las bases de dato s relacion ales tales como : creació n de tablas,
uso de transaccion es, con sultas, modifi cación de datos, etc.

6.1.1 VENTAJAS DE LAS BASES DE DATOS


El uso de bases de datos es imprescind ible en cualqui er aplicación web de hoy en día. Algunas
razon es para utilizarlas son:

• Proporcionan almacenamiento permanente. Es dec ir, los dato s que se almacenan, en


principio, lo harán de forma permanente.
• Añaden una capa más de seguridad. Los datos están fue ra del alcance directo del usua-
rio, ya que no se almacenan en las peticione s http. Los dato s se encuentran en un ser-
vidor de base de datos con el que se com unica el ser vidor web. Esta comunicación es
totalmente opaca al usuario, el servidor PH P presenta los resu ltado s de in teraccion ar
con el servidor de bases de datos, pero no el código ni las claves para abrir la base de
dat os.
Aunq ue hay téc nica s para intentar acceder a la base de dato s usando trucos, lo cierto es
que las bases de datos son un software más preparado para la seguridad que si nosotros
gest ionáramos directamente la información.

Proporcionan herram ientas avanzadas de gestión de datos y usuarios. Los Sistemas


Gestores de Bases de Datos son un software espec ializado en la gestión de dato s, permite
hacer consultas avanzadas, crear diferentes vista s y per mitir su uso a ciertos usuarios.
Tamb ién apo rtan facilidad para hacer copias de segur idad de los datos, gestión de tran -
sacciones, validació n avanzada de datos, etc.

• 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.

6.1.2 PROCESO DE ACCESO A UN SISTE MA DE


BASES DE DATOS DESDE PHP
Para que podam os acceder a siste mas de bases de datos desde PHP, necesitamos instalar una
interfaz software que comunique a ambos servidores. Cua lquier len guaje de servidor (aun que no
UNI DAD 6. ACCESO A BASES DE DATOS MED IANTE PHP 259

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.

6.1.3 PROCESO DEACCESO A LAS BASES DE DATOS


DESDE PHP
Suponiendo que tenemos correctamente instalado el acceso al serv idor de bases de datos
deseado desde el servidor de PHP, una aplicación que desee ut ilizar inform ación de un a base de
datos necesita realizar los siguientes pasos:

[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:

Dirección IP o nombre del servidor de la base de datos. En entornos de producción,


el servidor de base de datos suele ser físicam en te diferente del servidor PHP, por lo que
necesitamos indicar cuá l es.

• 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.

[3] Ejecutar la instrucción SQL.

[4] Recoger los resultados de la instrucción SQL y mostrarles al usuario.

[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.

[7] Podemos ejecutar más instrucciones, para lo cual volvemos al paso 2.


[8] Cerrar la conexión y liberar recursos.
~

6.2 GESTION DE ERRORES


6.2.1 IM PO RTAN CIA DE LA GESTiÓN DE ERRORES
En los pasos de pro ceso de bases de datos come ntados en el pun to anterior, faltarían aquellos
que permiten gest iona r los errores.

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 .

• Fallo al recoger la información de la instrucción SQL.

• Fallo al cerrar la conexión.


• Fallo por interrupción de la comunicación con la base de datos.
No gest ionar estos errores significa depender de la gest ión que el servidor PHP haga de ellos.
Sin gestión y por defect o, el servidor muest ra los errores como un mensaje Warning qu e aparece
UNI DAD 6. ACCESO A BASES DE DATOS MEDIANTE PHP 261

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.

6.2.2 CONFIGURACiÓN DE REPORTE DE ERRORES


Dentro de la configura ción de PHP (mediante el archivo php.ini) pod emo s especificar qu é
errores se mo strarán al usuario. La directiva errorj reporting es la enca rgada de decidir qu é err o-
res se mu estran y cuá les se ignoran , según su nivel de gravedad.

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_NOTICE. Avisos en tiempo de ejecución (más leves que las anteriores).

• 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_COMPILE_WARNING . Avisos de compilación de motores como por ejemplo Zendo

• E_USER_ERROR. Errores gene rados por el propio programador.

• E_USER_WARNING. Advert encias generadas por el propio programador.

• E_USER_NOTlCE. Avisos generados por el propio programador.


11 E_STRICT. Avisa del código utilizado por el pro gram ad or qu e, aunque funciona, no es
correcto (porqu e podría te ner problem as en versione s futuras 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_DEPRECATED. Avisos sobre código obsoleto.

• E_USER_DEPRECATED. Avisos sobre cód igo ob soleto lanzados por el propio


programador.
262 IMPLANTACiÓN DE APLICACIONES WEB

• 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);

6.3 USAR MYSQL DESDE PHP


6.3.1 CO NE XiÓ N A MYSQL DE SDE PH P
Supo ne mos ya instalado y funcio na ndo MySQL. MySQL dispo ne de tres API para PHP:

La API clásica mysqI.

La API mejorad a mysqli (disponible desde la versión 5.0).

• La api PDO (dispo nible desde la versión 5.r).

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

6.3.2 USO DE MYSQ LI. ¿FU NCIO NES U OBJETOS?


Los usu arios de la librería mysql clásica de acceso a MySQ L n o sue len estar cómodos con el
uso de obj etos. Por ello se permite utilizar con mysqli la forma clásica qu e no imp lica el uso de
objetos.

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:

$mysq l = mysqli_connect( I1 27. 0. 0. 1 ", "root", "12345");


mys q l L s e l ec t _db( l pr ue ba " ) ;
$res ultado = mysq l i _qu e ry( "SELECT * FRO M alumn os" ) ;

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:

$mysqli = new mys q l i( I 127 . 0 . 0 .1 " , "root" , "12345" , "prueba") ;


$resu l tado = $mysqli - >query ("SELECT * FROM alu mn os ") ;

En este man ua l se ha optado por la segunda opción al ser la recomendada actualmente. A


pesar de no haber explicado en este manual cómo funcionan los objetos, el uso de la librerí a es
mu y sen cillo y entendible. También hay qu e observar qu e para acce der a una base de datos en el
servidor local, se utiliza la dir ección IP de máquina local: 127.0.0.1, en lugar del nombre local-
host, ya qu e la dir ección es más seguro que fun cione en todos los sistemas.

6.4 ESTABLECER CONEXiÓN CON MYSQL


DESDE PHP
Si ya h emos instalado correctamente MySQL, establecer la conexió n sign ifica crear un nuevo
objeto qu e re presentará la propi a conexión con la base de dat os. La sintax is para crear una nueva
conexió n es:
obj e t oMySQL = new mysq l i( [s e r v i dor [ ,usuario [,contraseña
[, baseDa tos [, puerto [ ,socket]]] );
Los parámetros son todos opc ionales. Se explican a continuación:

• servidor. Nombre y puerto de la máquin a a la que n os conectamos (es decir, el servi-


dor MySQL). Se indica su nombre o IP y, opcionalmente el puerto. Si no se indica su
valor se recoge de la directiva PHP (prese nte en el archivo de configuración php.ini)
mysql.default_host qu e, normalmente, vale localhostgjoé (es decir , conexión a ser-
vidor local MySQ L mediante el puerto 33 06, el puerto habitual de comunicación de
MySQL).
264 IMPLANTACiÓN DE APLI CACIONES WEB

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.

• socket. Indica el nombre del socket a uti lizar. Si no , se usa el establecido en


mysql.default_socket, que suele tomar el valor MYSQL.

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.

6.4.1 PERS ISTENC IA DE LAS CO NEX IO NES


La librería mysqli admite que las conex iones sean pers iste ntes. Sin persisten cia, un a conexión
se cier ra cuando se ha ejecutado el código PH P de un a pág ina. Sin embargo, un a conexión per-
sistente se man tiene abier ta en diferen tes páginas. Para ello, la conexión a la base de datos en las
páginas se debe crear usando el mismo servidor, usua rio y base de dat os. De no ser así se creará
más de una conex ió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.allow_persistent. Pue de valer I (se permite la persistencia) o O (no se admite la


persistencia).

• mys qli .max_persistent. Máximo número de conexiones per sistentes que se pueden
crea r. Con valor o son ilimitadas.

• mysqli.maxIinks. Máximo número de cone xiones qu e se permite hacer.


UNI DA D 6. ACCESO A BASES DE DATOS MEDIANTE PHP 265

6.4.2 CO NT ROL DE ERRO RES EN LA CO NEXiÓ N


Hay tres métodos fundamentales en la compro bación de erro res :

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:

$mysqli=new mysqli ( l oc a lhos t , 'andrei', '12345' , ' pr ue ba ') ;


if ($mys q li - >connec t _e r r or) {
echo "Error al conectar: " . $mys q l i- >conne c t _e r r no
$mysqli- >connect_error;
}

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.

6.4.3 CERRAR LA CO NEXiÓ N CON LA BASE DE


DATOS
El método close se encarga de cerrar la conexión. No lo debemos utilizar si deseamos que la
conexión sea persi stente, pero siempre es conveniente cerrar las conexiones cuando no preve-
mo s utilizarla; de no hacerlo, estaremos malgastando recursos. MySQL con el tiempo cerrará
todas las conexiones que se ha yan abierto y no se utilic en , pero si dejamos que lo haga MySQL
podría ocurrir que no tuviera tiempo de cerrar si abrimos demasiadas conexiones ( y no cerramos
ninguna).

Ejemplo (si $mys qli es el objeto creado para conectar):

$mysqli- >cl ose ( );


266 IM PLANTACi ÓN DE APLICAC IONES W EB

6.5 SELECC IO NAR BASE S D E DATOS


En MySQL las ta blas pe rte necen a una base de datos, por lo qu e es imperati vo elegir la base
de datos en la qu e vamos a trab ajar. Se pu ed e elegir durante la co n exión , pero ta m bién de spu és
m ed iante el m étodo select jlbí), al qu e se le pasa el nombr e de la base de datos.

Ejem plo:

$mys q l i - >se l ect_db(" a lmace nes" ) ;

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.

6.6 EJEC UC iÓ N DE IN ST RU CCI ON ES SQL


6.6. 1 SQ L GENÉRICO DE MYSQL
La fu nc ió n m ás versá til de PH P para utilizar bases de dato s es la funció n quer y. Dicha función ,
recib e una instrucció n SQL en form a de string y sim plemente se la envía a MySQL ut ilizando la
conexión y base de dat os seleccion ada. Ejemplo:

$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:

Si es una in strucción de tipo SELECT, SHüW, DESCRIBE o EXPLAIN, dado qu e so n


instrucciones que devuelven un conjunto de resu ltados, retornan un objeto de ti po m ys-
qli_result, lo que co múnmente se co noce como un result set u objeto de conjunto d e
resultados. Si la in strucción falla , el m étodo query devuelve falseo

• Con cualquier otro ti po de instrucción, devu elve true si ha sido exitosa y fal se de no ser
así.

6.6.2 OBTENER EL NÚ MERO DE FILAS


MODIFI CADAS EN INSTRUCCIONES DML
Ya se ha explicado en el ap artado anterior qu e la fun ción query es la que se utiliza para enviar
in strucciones SQL a una ba se de datos MySQL. De esta forma las instru ccion es INS ERT, DELET E
o UPDATE. Se pued en ejecu tar directamente con la in strucción anterior.
UNIDAD 6. ACCESO A BASES DE DATOS M EDIA NT E PHP 267

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" ;
}

En estas instruccion es es no rm al querer saber cuántas filas ha modificado la in strucción. La


librería mys qli aporta un mét odo para obte ner esta información . Se trata de affecte d_rows que
devuelve el nú mero de filas que se han modificado. ASÍ, podríamos mejorar el código anterior de
esta forma :
$sql= "UPDATE pe r son as SET salar i o=salari o*1 .1 WH ER E cod_de part=9" ;
i f ( $mys q li - >query ( $sq l ) ) {
ec ho "Se han modi f ic ado $mysq l i - >affected _rows pers onas " ;
e l se{
echo "Ha f a l la do l a instrucción ";
}

Ahora in dicam os cuántas personas han modificad o la instru cción .

6.6.3 GESTiÓN DE ERRORES AL EJECUTAR


IN STRU CCION ES SQL
Cua ndo falla un a inst rucción SQL, deberemos gestiona r los errores para obrar de la forma
más apropiada. Los mét odo s qu e gestiona n este tipo de errores son:

• error. Contien e el men saje de err or procedente de MySQ L.

• errno. Número de error.

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

6.7 OBTENER INFORMACiÓN MEDIANTE


INSTRUCCIONES SELECT
6.7.1 USO DE LA SE NTE NC IA Q UERY PARA
EJEC UTAR IN STRUCCIONE S SELECT
Como se ha explicado en el Apartado 6.6.1, en las in struccione s de tipo SELECT (también en
las instrucciones no está ndar DESCRIBE, SHOW o EXPLAIN, propias de MySQ L), se devuelve
un conjunto de resultados (un result set ).

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:

$sq l =" SELECT nombre,apellido1,telefono FROM clientes";


$res=$mysql i -> que r y($sq l ) ;

Sres es la variable que recogerá el conjunto de res ulta dos (valdrá false, si falla la instrucción
SQ L).

Realmente la funci ón qu ery tiene un segundo parámetro. Se tr ata de un número entero


que indica la forma en la que vamos a recoger los datos de la consulta. Se usa con dos posibles
consta ntes :

• MYSQL_STORE _RESULT. Es el valor por defecto y hace qu e en la variable se alma-


cen en todos los resultados de la cons ulta. Esta forma de funcionar requi ere bastan te
m em oria y si hemos ejecutado una consulta con numerosos resultado s, pod emo s pro -
vocar un err or de desbordamiento de memoria y detener la ejecución de la aplicación .
Si no son mu cho s los resultados devueltos , MYSQL_STOR E_D EFAULT es la form a más
conveniente de trabajar ya que es más rápid a.

MYSQL_USE_RESULT. Representa la form a de tr abajo contraria. Los resultado s se


almacen an hasta llenar un búfer de resultado s. El resto de resultado s no se vuelcan y
cuando los necesitemos, tendremos qu e hacer una nueva petición de dato s a MySQL. La
venta ja es que no gasta ta nta mem or ia y la desventaja es que supone más peticiones a la
base de datos.

Por lo tanto, si la instrucción anterior req uiere almacena r mucha inform ación , lo correcto
sería :

$s q l =" SELECT nombre ,apellido1,telefono FROM clientes";


$r es =$mys q l i->q uery( $sql , MYSQL_USE_RESULT );
U NID AD 6. ACCESO A BASES D E DATOS MED IANTE PHP 269

6.7.2 RE CO GIDA DE LO S RESU LTADO S


Los conj untos de resultados son un paso previo pa ra realmente obte ner los resultados de una
consulta SELECT. Hay var ios métodos pertenecientes a los objetos de tipo result set que perm i-
ten recoger los resultados. El más interesan te es fetch_ass oc . Este método permite recorrer fila
a fila los resultados de un conjunto de resultad os. Cada vez qu e invo camos a fetch_assoc nos
devuelve un array asoc iativo qu e contiene los dato s de la fila de la consulta en la qu e no s enc on-
tr amos actualm ente; las claves de ese array son el nombre de cada columna.

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

[3J Si se vuelve a invocar a fetch_assoc, se cambia la po sición a la fila siguien te de l resultado , de


la cua l se devuelven los valores. Así seguire mos in vocand o a fetch_assoc hasta qu e devuelva
false, indicando enton ces qu e no ha y más resulta dos .

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.

En resumen , el proceso de lectur a de datos de una consulta SELECT es el siguien te :

[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.

[6J Leer la siguie nte fila in vocando de nuevo a fetch_assoc.

[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>

6.7. 3 FUN CION ES INTERESANT ES DE LO S


CO NJU NTOS DE RESULTADO S
• n um_rows. Propiedad de los conjuntos de resu lta dos, que devuelve el número de filas de
la instrucción SELECT. Si la instrucción se generó con la constante MYSQL_STO RE_
RESULT, es decir, sin usar bú fer de resultados, entonces, esta función podría fallar al
UN IDAD 6. ACCESO A BASES DE DATOS MED IANTE PHP 271

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 );

6.7.4 COD IFICACiÓ N DE CARACTE RES


Uno de los problemas más habitu ales en la lectura de datos proce dentes de MySQL es la cues-
tión de que la página web muestr e la información usan do una codificación de texto (por ejemplo
Unicode UTF-8) y la info rmac ión se recibe de MySQL usando otra modific ación (por ejemplo en
formato Latín r).

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:

while( $ fil a){


echo "<tr> ct d» " . utf8_encode($fila ["nombre"] ) . "</td>" ;
echo " <td >" . utf8_encode($fila ["apellido1"]) ." </td> </ t r> " ;
$fila=$res- >fetch_assoc();
}

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]

## UTF a Set t i ngs


init-connect= \'SET NAMES ut fa \'
de faul t-chara cter-set=ut f a
collati on_server=u tfa_u n i code_ci
c haracter_set_s erver =utfa
skip-character-set-c l ient-ha ndshake

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

6.7.5 PROBLE MAS DE SEGURIDAD. INYECCIONES


DESQL
Puesto qu e muchas veces los dat os qu e se envían a través de SQ L al servidor utilizan formula-
rios que rellenan los usuarios , los hackers podrían tener un resquicio de acceso a la base de datos
median te técni cas de inyección SQL. Estas téc nicas con siste n en a ñadir de manera camuflada
in strucciones SQ L para obt en er información de nuestra base de datos.

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

$pas s =$_POST [ "pass"] ;


$mysq li = new mysqli ("1 27 . 0 . 0 .1 ", "root " , "s1D43We7" ) ;
if ( $mysqli - >conn ect_e r ror ) echo "Er r or al rea li zar la conexión" ;
else {
$mysq l i -> select_db ("prueba" ) ;
$sql ="SELECT nomb re,pas s FROM usuar ios WHERE "
"nombre= '$usuari o ' and pass= '$ pass''' ;
$res=$mysqli ->query($sql) ;
i f( $res ){
$fil a=$res - >f etch _assoc ( ) ;
i f ( $fil a )
ec ho " <p>Us ua r i o y contraseña correcta</p>" ;
el s e
echo "<p>Usuario o contraseña incorrecta</p>" ;
}
else echo "<p>Fallo al e jecutar la instrucci6n</p>" ;
}
}
else header( "Loca t i on : f or mul a r i o . ht ml " ) ;
?>
</ body>
</ ht ml >
En pri ncipio todo va bien , cuan do el usu ario po ne los da to s corr ectos , entra correctam ente
y si pon e una m ala con tr ase ña, n o entra. Sin embargo, en cua nto en la con traseñ a colocáramo s,
por ejemplo, una com illa, el m ensaje sería el de "Fallo al ejecutar la instrucción': Ese m en saje no
es el habitual y da la pista de qu e algo raro está pasando. Y así, si el usuario (si es conoced or de las
técnicas de inyección de SQ L) esc ribe estos datos en el formular io:

Datos de acceso
Usuario jorge
Contra seña 1'12
""1"""3"'-
4""'5 -or..,-'1..,-
'=.,-
'1 - - - -
Enviar

Figura 6.1: Ejemplo de inyección SQ L

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

Estas medi das pueden ayud ar :

• Utilizar la función reaLescape_string que recibe un texto y le devuelve a su form at o


seguro . Lo que hará es qu e los caracteres peligrosos (como las comillas, saltos de línea,
etc.) se pasan a su form a escapada. Por ejemplo, la comilla simple (') se convierte en (\ '),
con lo cual no se pueden delimitar nuevas instruccione s o elementos y estaremos más
pro tegidos ante un a inyec ción .
$sq lS eguro=$ mysql i- >rea l_esca pe_stri ng ( $s ql );
$my sqli - >query ($ sql Segu ro );

• 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 .

6.8 SOPORTE DE TRANSACCIONES


6.8.1 TRAN SACCIONES EN MYSQL
En SQ L está ndar existe n dos ins trucc iones qu e permiten anular o confirmar transaccio -
n es: son ROLLBACK (anular) y CO MMIT (confirmar). Ambas trabajan con la tran sacción en
curso . Una transacción comi en za cuan do se ejecuta una instrucción DML (INSERT, DELET E o
UPDAT E) y finaliza cuando se acepta o confirma (también pu ede finalizar por otras razo nes com o
cerra r la con exión o ejecutar un a in strucción DDL por ejemplo).

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.

Pero el objeto de conexión (normalmente le llamamos $mysqli) posee un método llamado


au tocommit que recibe como parámetro un valor booleano: true significaría que se confirma
automáticamente cada instrucción DML y false que se gestionan transacciones, por lo que las
instrucciones serán definitivas si se usa el método COMMIT.

6.8.3 CONFIRMAR Y ANULAR TRANSACCIONES


La forma de anular y confirmar tran sacciones es a través de dos métodos del objeto de cone-
xión ($mysqli):

commit. Confirma la tran sacción actual.

• rollback. Anula la tr an sacción actual.

Ejemplo de func ion ami ento:


<?php
$mysqli = ne w mysqli ( "mi s e r vi dor . com", "alice" , "45FdA", "almacenes ") ;
$mysqli ->a utocommit (false ); l/ s e act iva la gestión de transacciones

$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

l/ nue vas instrucciones


$mys q li-> quer y( " I NSERT INTO ventas VALU ES(12 , 350 , 'Samsung galaxy S4' )");
$mys q l i->q ue r y( " UPDATE productos SET precio=precio*1.1") ;
// ....
$mysqli->commit ( ); / / con f i r ma mos las dos instrucciones anteriores
?>
276 IM PLANTA Ci Ó N DE APLIC ACIO NES W EB

6.9 PRÁCTICAS RESUELTAS

Práctica 6.1: Búsqueda de datos de localidades


• Para reali zar esta práctica debemos descar gar y ejecutar (con permiso de root en MySQL) los
archivos de esta prácticas presentes en la dirección http: //w w\v.jor gesan chez.net /l ibro -iaw
• Una vez hayamos ejecuta do esas instru cciones, nu estra in sta lació n de MySQL ten drá un a
nueva base de dato s llamada geografia que contien e datos de la mayoría de localidades de
Espa ña.
• La estruc tura relaciona l de esas tablas es la siguiente:

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.

SOLUCiÓN: PRÁCTI CA 6,1

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.

A continuación mo stramos el código del primer formulario al qu e hemos llamado


cornunida des-prac ticar.php:
<!doc t ype html >
<ht ml l a ng="es" >
<he ad>
<meta ch ars et="UTF - 8 " >
<t i t l e>El ecc ión de la co mu nid ad autónoma </titl e >
<l i nk re l= "sty l e sheet " hr e f =" es t il os . cs s" l>
</ he ad>
<body>
<?php
l/conex i ón a la base de datos, l a haremos de
// t ipo pe r si s t en t e por eso no la cerramos
$mysq l i =new mysql i( "127. 0 . 0 . 1 "," geo"," t 1234Fa " , "geogr a f i a ");
i f ( $mys q 1 i ) {
$res=$mysq li- >query("SELECT nombre FROM comunidades ".
" ORDER BY nombre" ) ;
if ($res ) {
?>
<for m actio n="pr ovi nc i a s - pr act i ca1 . php" >
<1abe l for= "comu ni dad"> Eli ja l a co mun i dad deseada </ la be l >
<s e l ect name="comuni dad" id= "comu n idad" >
<?php
$fi la=$res- >fetch_assoc();
while ($f i la ){
echo copt on va lue= r {$ f il a ["nombr e"] } >" .
11 í I

" {$fila [" nombr e"]} </o ption >";


$fila=$res- >fetch_assoc( );
}
?>
</ s e l e ct>
<butto n>8uscar provin cias </b utto n>
</ for m>
278 IMPLANTACiÓN DE APLICACIONES WEB

<?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

<form acti on= l l oca l i dades - pr ac t i c a1 . php" >


<l a be l fo r ="provi nc i a"> El i ja l a prov i nc i a deseada </ labe l >
<s e lect name="provi nc i a " id="provincia" >
<?php
$fila=$res- >fetch_assoc();
while ( $ fi la){
echo <opt i on value=' {$f ila ["provinc i a"]} ' >" .
11

" {$f i la [ "provi ncia " ] } </option> " ;


$f i l a=$res-> fe tc h_assoc() ;
}
?>
</ s e l ect>
<but t on>8us ca r localidades </button >
</ for m>
<?php
} e lse
echo "<p class='error ' >No se pudo obtener e l li s t ado</p >";
} else
echo "<p class= 'error'>No se pudo conectar con la base de 11

"datos</p>" ;
?>
</ body>
</ ht ml>

El código del formulario final en el qu e se mu estr an las localidades de la provincia elegida, es el


código más complejo. En él, si no se envía por GET un nombre de pro vincia, volvemos al formu-
lario anterior (así evita mos qu e directamente se intente entrar en esta página). Mostrarem os una
lista combinada con to das las localidades, en orden alfabético, de la pro vincia elegida. Fina lme nte
cuand o elijamos una localidad , esta misma página detecta que se le ha enviado una localidad y
tras el cuadro anterior se muestra la población de esa localidad.

La dificultad está en el momento de pasar la localidad , como queremos qu e se siga mostrando


la lista de localidad es de la provincia elegida para facilitar elegir otra localidad de la misma pro-
vincia, la solució n está en utilizar un control de form ulario ocu lto en el que se almacena la pro -
vincia que habíam os elegido. De esa forma cuando pasemos la localidad, pasaremos también la
provincia y así la pág ina es más grata para el usuario.

Se expone el código de localidad es-practicar.php:


<!doctype html >
<ht ml lang= "es " >
<head>
<me t a c ha rset= IUTF-8 " >
<t i t l e> El ec c i ón de l a co mun i dad a utó noma </t it le >
<l i nk r el =" s t yl esh eet" hr e f ="estil os. css" / >
280 IMPLANTACiÓN DE APLICACION ES W EB

</ head >


<body>
<?php
if (i sset( $_ GET["provinc ia"])==fa lse )
l/s i n haber ind icado provincia, vo l vemos al formulario anter ior
header (" Loc at i o n : prov i nc i as - pr ac t i c a1 . php");
else {
$mysq li = ne w mys qli ( "127 . 0 . 0 . 1 ", "geo"¡ "t1234Fa " ¡ "geograf ia" ) ;
if ( $mys qli) {
l / he mos rec i bi do l a pr ov i ncia ¡ buscamos s us localidades
$prov incia = $_GET[ "prov i nc i a "] ;
$s q l = "SELECT l .nombre localidad 11 •

"FROM localidades 1 " .


"JOI N provincias p USING ( n_pr o v i nc i a ) "
"WHERE p.nombre=' $pr ov i nc i a ' " .
"ORDER BY localidad" ;
$res = $mysqli - >query($sql ,MYSQLI_USE_ RES ULT);
i f ( $r es) {
?>
<f or m acti on= "l oc a l i dade s - pr ac t i c a1 . php">
<label f or e " l oca l idad" >
Elija la l oc al idad deseada </label >
<s e l ect name="l oc a l i dad" i d="local i dad" >
<?php
$fila = $res- >fetc h_assoc() ;
whi l e ( $ fil a) {
ec ho "<opti on va lue =' {$fila [ "l oca lida d"] } ' >"
"{$fila ["loca li dad "] } </ opt i on> ";
$fila = $res- >fetch_assoc() ;
}
?>
</ s e l ect>
<!- - la prov i ncia la reenv iamos co mo
cont ro l oc ul to de form u l ari o -- >
<?="<i nput type=' hidden ' name=' prov inc ia' va lue= ' $prov i ncia' / >"?>
<butto n>8usca r l ocal idade s </bu t t on >
</ f or m>
<?php
} else
ec ho "<p class='error' >No se pudo obtener el listado< /p> ";
if ( i s s e t ( $_GET[ "l oc a l i dad"] )) {
l/he mos r ec i bi do una local idad, la buscamos
// y mostramos l os datos
UNI DA D 6. ACCESO A BASES DE DATOS M EDIA NT E PHP - PRÁCT ICA S 28 1

$ local idad = $_GET [ " l oca l i dad " ] ;


$sql = "SELECT nombre,poblacion FROM localidades 11 •

11 WHER E nombre=' $ l oca l i dad'" ;


$res = $mys q l i- >que r y( $sq l ) ;
if ( $r es - >num_r ows == 0 )
ec ho " <p class = ' e r ror ' >No exist e l a l oc a li dad 11 •

"$ l oc a l i dad</ p> " ;


else {
$fila = $res- >fetch_assoc();
echo " <p>Loc a l i dad $localidad, poblacion= 11

$fila["poblacion"] . habitantes< /p>" ;


11

}
}
}/ / 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>

Prácti ca 6.2: Paginación de resu ltados


• Utiliza los dato s de la base de dato s geografia. Para obte nerlos e in stalarlo s véase el enun-
ciado e inicio de la solución de la Práctica 6.1.
• Muestra una primera página qu e pida mediante un cuadro de texto el nombre de un a pro -
vincia espa ñola.
• Al enviar ese dato se busca la pro vincia. De no existir se indica que no exist e. Hay que tener
en cuenta que , al bu scar, no tendremos en cuenta si la pro vincia se ha escrito en minúsculas
o en mayúsculas.
• Si la provincia sí existe, se mo strará n los dat os de to das sus localidade s en orden alfabético y
de forma paginada. Se mos trarán 25 localidades por página . Una serie de boton es nos permi-
tirán pasa r a la página siguiente, a la ante rior o a un nú mero de página conc reto.

SO LUCIÓ N : PRÁCTICA 6.2

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

Cód igo de forrn -practi caz.html:

< ! doc type htm1>


<ht ml lang=" es" >
<head>
<me t a c harset= "UTF-8">
<t i t l e>8e l e cc i 6n de provinc i a </ ti tl e >
</ head>
<body>
<f or m act ion=llistad o-practica 2 .ph p" >
<la be l for= "prov i ncia ">Escr i ba e l nombr e de l a pr ovin c i a </l ab el >
<i nput type= "text " name="pr ov i nc i a " id= "provi ncia "/ ><br / >
<but t on> Env i a r</b ut t on>
</ for m>
</ body>
</ ht ml >

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.

Cód igo de listado -practicaz.php :


< ! doctype htm1>
<ht ml lang=" es" >
<he ad>
<me t a c harset="UTF-8 " >
<t i t l e>Li s t ado de localidades </title >
<s t y l e >
. e r r or {
co lor :red;
}
UN IDA D 6. ACCESO A BASES DE DATOS MEDIANTE PHP - PRÁCTICAS 283

.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
- - -- -- - - -- - --

$res=$ mysq l i- >query($sql );


if ($res- >num_rows==0) {
echo "ep class= 'error ' >No e xiste esa provincia e/p>" ;
}
e l s e{
// ****Text o de cabecera de tab la ind icando lo que vemos
ec ho "eh 1 >Localidades de $p rovincia e/h1 >" ;
l /comprobac ión y preparac i ón del nQ de pág i na
if(i sset( $_GET[" pg " ] » {
$pg = $_GET[ "pg " ] ;
if ($ pg e=0 I I i s _nume ri c ($pg )==false ) $pg=1 ;
}
else
$pg =0;
//******* pr e par ac i ón de la barra de paginaclon
l/ va r i a bl e con la parte comOn de los enlaces, falta calcular
l/ l a p§gina pa ra cada uno de e llos
$d i r eccion =" l i s t ado- pr ac t i c a 2 . php?pr ovi nc i a=$prov inc i a&pg=" ;
ec ho " ep class='pagina' >Página: ";
if ( $pg >1 )
l/ bot ón de p§gina anterior, s i mbol o e
echo " ca href= $di recc ion " . ($pg-1) . ' >&1 t ; e/a >" ;
1 11

//c§ l c u l o del total de p§ginas


I
I St ot a l _pg=( i nt ) ( Sr es - >num_r ows / 25+1 ) ;
l/ bot ones para ir a una p§gina concreta
f or ($ i=1;$ i e=$total _pg ;$ i+ +) {
if ( $i ==$pg ) l/para que sa lga difere nte el nQ act ua l
ec ho" es pa n c lass='pagin aActual ' >$ i e/sp an > ";
e l se
ech o "ca href='$direccion ". $ i.''' >$ i e/a> " ;
}
if ($pg <$total _pg )
l/ bot ón de pagina siguiente, simbolo >
ec ho "c a href=' $d i r ecc i on ". ($pg+1). "'>&gt ;e /a >";
echo " e/p> " ;
//***********c§ lc u lo de la posi ci ó n de fi la segO n l a pag ina
de seada
Spos ic ion=($pg-1 ) *25;
Sres- >data_seek ($posic ion );
// ******* l i s t ado de localidades, c omo mucho se deben listar 25
$con t=1 ;
$f i la=$res- >fet ch _a ssoc ( );
e cho " d able >ct r» et h> Local idad e/ t h>" .
" eth >Pob lación e/ t h>e/ tr> 11 ;
UN IDA D 6. ACCESO A BASES DE DATOS M EDI A N T E PHP - PRÁCT ICAS 285

while ($fila && $c ont <=25 ){


echo " xt r» c t d»{$ f il a [ ' l ocal dad " ]} </ t d>" ;
í

echo " <td >{$fila [ 'poblacion' ]} ha bitantes</td >" ;


$fila=$res- >f etch_assoc ( ) ;
$con t ++;
}
echo " </table >" ;
}
}
}
?>
</ body>
</ ht ml >

Práctica 6.3: Servicio de men sajería


• Crea un peque ño servicio de mensajería instan tánea accesible des de un a ap licación web. De
mo do qu e el funcionamiento sea el siguiente:
- En la págin a de acceso los usuar ios tien en que pod er dar se de alta (simp leme nte indican do
su n ombre de usuario y con traseña) o sim pleme nte decir qu e ya está n dados de alta y entrar
en su cue nta indi cando el usuario y la contrase ña,
- Los nombres de usu ari o solo pu ed en conte ne r let ras y números (n o vale espacio) . La con-
trase ña tiene que ten er entre 6 y 30 caracte res .
- Al en trar en su cue n ta aparece n los m en sajes qu e tien en y el nombre del usu ario qu e les ha
enviado el mensaje.
- Desde cada cue nta se n os permite la posibilid ad enviar un mensaje a otro usuario .

• Es imperati vo contro lar los erro res para qu e el usuari o sepa lo qu e ocurre en cada mom ento

SOLUCiÓN: PRÁCTICA 6.3

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

CREATE DATABASE mens a j es ;


USE mens aj es ;
CREATE TABL E usuarios (
id_usuario INT NOT NU LL AUTO_INCR EMENT ,
usuar io VARCHAR( 30 ) NOT NULL,
pass VARCHAR(100 ) NOT NULL,
CONST RAINT usu ari os _pk PRIM ARY KEY (id _usuari o ),
CONSTRAI NT usuari os _uk UN IQU E( usu ari o )
);

CREATE TABLE mensaj es (


i d_mensaj e INT NOT NULL AUTO_INCREMENT ,
texto VARCHAR( 300 ) NOT NULL,
i d_r emit e INT NOT NUL L,
id_dest i no INT NOT NULL ,
CONSTRAI NT mensaj es _pk PRIMARY KEY (id_m ens aj e ) ,
CON STRA INT us uarios _ fk1 FORE IGN KEY (i d_r emi t e )
REFERENC ES us uar ios( id _us uar io),
CONSTRA INT us uar ios_f k2 FOREI GN KEY (i d_des ti no )
REFERENC ES usuari os (i d_usuari o )
);

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 ;

//ar r a y de mensaj es, que r e l aci ona


l/ cód i gos de error con su mensaje
$mens a j e Er ror =ar r ay (
ERROR_CONEXIüN= >"Fallo en la conexión con la base de datos",
UNIDA D 6. ACCESO A BASES DE DATOS MEDI ANTE PHP - PRÁCTICAS 287

ERROR_DOS_PASSWORD=>"La s contraseñas no coi nciden" ,


ERROR US UARIO EX ISTE= >"Es e nombre de us uario ya se está "
"ut i l i zan do",
ERROR_US UARIO_NO EXI STE=>"No existe ni ngún usuario con ese nombr e" ,
ERROR _US UARIO_PASS WOR D= >"El nombre de us uario o la c o ntraseña no "
"coinciden",
ER ROR USUARIO INVALIDO=>"Nombr e de us uar io i nc orrecto, "
"s o l o se admiten letras y números ",
ERROR_GRABAR= >"Fall o al gra bar l os dat os ",
ERROR_PASSWOR D_CORTA=>"La contr aseñ a deb e tene r a l menos 6 "
"c ar ac t e r e s "
);
?

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.

Có digo de index-practicat.php, observar co m o incorpora el có digo de los errores y como mos-


traría el error en el cas o de que reciba u n código de error.

<!doc t ype htm l >


<ht ml la ng="e s ">
<hea d>
<me t a c harset= "UTF- 8 " >
<t i t l e>Ser v i c i o de mens a j er i a , e ntrada </t it le>
<l i nk rel= "sty les heet " hr e f ="e s t il os- pr ac t i ca 3 . c s s" >
</ he ad>
<body>
<h1>Conex ión co n e l serVI CIO de men s aj er í a </h1 >
<d iv id="i zda" ><h 2>Ent r ar e n l a c ue nta< / h2>
<f or m action="10g i n- pr ac t i c a3. php" method="POST" >
<i nput type="text " name=" us uar i o " placeholder= "us uar io "><br >
<inp ut t ype=" pas sword" name ="pas s wor d"
pl ac eh old er=" contr as e ña" ><br >
<butto n>Va lidar </ button>
</ f or m>
</ d i v >
<d i v i d="dch a" ><h 2>Nue vo us ua r i o </ h2>
<f or m act ion="nue vo- pr ac t i c a3 . php" met hod="POST" >
<i nput type= "text " name ="us uar i o " max l e ngth =" 30"
placeho lder=" us uar io " required ><br >
288 IM PLANTA CiÓN DE APLICACION ES W EB

<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 ] ) ){

$er ror=$_GET["error " ] ;


e cho "<p> <strong>Error : </strong > {$mensajeError[$er ror]}</p>";
} ?>
</ d i v>
</body>
</ ht ml >

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" );
?>

El siguiente código PH P es el correspondiente a la página loqin -practiciu.php que se encarga


de validar a un us uario y si su contrase ña y usuario son correctas, pasamos a su bu zón. El funcio-
namiento es parecido al de la página anterior:

<?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>

Indudablemen t e, la página m ás com pleja es la dedi cad a al buzón de m en sajes o espacio de


us uario ya qu e ofrece cuatro funcione s: Mostrar la list a de mensajes (si no hay me nsa jes, se
indica con un texto), po sibili tar enviar nuevos m ens ajes, cerra r la sesión de usu ari o y m ost rar los
erro res ocur rid os durante el envío de un m en saje (si les hubo). Cada una de estas fun cione s está
UNI DA D 6. ACCESO A BASES D E DATOS MEDIANTE PHP - PRÁCT ICAS 291

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

<h2>Li s t a de me ns a j es </h 2 >


<?php
l/a la izquierda mostramos la lista de mensajes
l/ bus ca mos los mensajes del usuario
$sq l ="SELECT usuario remite /texto FROM mensajes"
"J OIN usu a r ios ON( i d_us ua r io=i d_remi t e ) "
"WHERE id_desti no=$ i d_ us ua r i o ORDER BY id_mensaje DESC " ;
$res=$mysq l i- >que ry ($sq l ) ;
i f( $res ){
i f ($res - >num_rows= =0 )
ec ho "<p ><strong >No ha y mensajes</strong ></p>";
e l se{
$f i la=$res- >fetch_assoc() ;
echo " <ul >" ;
whi l e ( $ fi la){
ec ho "<1i ><s t r ong >De: </strong >{$f i l a [" remi t e"] } cbr» " ;
ec ho $ fil a ["texto") . " </ 1 i>" ;
$fil a=$r es - >fetch_as s oc ( ) ;
}
$res- >cl os e ( ) ;
ec ho " </ul> ";
}
}
?>
</d i v >
<d i v i d="dch a" >
<h2>Nue vo men s a j e </h 2 >
<f or m a ct ion="e nvi ar -pr act i c a 3 . php" me thod="POST" >
<i nput type=" t ext " na me=" de s t i nat a r i o" maxl e ngth =" 30"
p l aceho lder ="Dest i natario " r equired ><br>
<!- - de manera ocu lta pasamo s el id_u suar io como r e mi t e del mensa je- - >
<i nput t ype=" hidden" na me= " id _remi te" va l ue=" <?=$id_usuario?> "/ >
<text a r e a name="texto" i d= "text o " co l s ="30 " r ows="10 "
p l ace ho lder= "Text o del me ns aje " ></ t ext are a ><br / >
<but t on> Env i a r men saj e </ button >
</ f or m>
</ d i v>
<d i v i d="er r or " >
<?php
if (i s s e t ($_GET [ "e r r or " ] ) ) {
$error=$_GET["error") ;
i f ( i s s et ( $me ns a j eEr r or [$e r r or ) ) )
ec ho "<p> <s t r ong >Er r or : </ s t r ong >{$me ns a j e Er r or [$e r r or ] } </ p>" ;
} ?>
</ d i v>
UNIDAD 6. ACCESO A BASES DE DATOS M EDIA NT E PHP - PRÁCT ICAS 293

<d i v id="cerrar" >


<p>< a href="cerrar-practica3 .php" >Cerrar s es i ón </ a ></ p>
</ d i v>
</ body>
</ ht ml >

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

e lse $error=ERROR _CONEXION;


}
else $error=ERROR _CONEXION;
}
else header(I Locat ion:buzon-practica3 . php");

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>

Finalmente el código PH P más sencillo es el de la página qu e cierra la sesión de usuario y


devuelve el control al formul ario de entrada . Código de cerrar-practicaj.php:
<?php
l /e lim inación de l a ses ión
sess ion_s ta rt();
uns et ($_SESSr ON );
sess ion_de s t roy();
l/vo l vemos al formulario de alta
header ( I Loc at i on : i ndex- pr act i ca 3 . php" );
?>

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;
}

6.10 PRÁCTICAS PROPUESTAS

Práctica 6.4: M ejo ra de l servicio de mensaje ría


• Consigue qu e dentro del buzón de cada usuario, en cada mensaje dispon gamo s de un botón
o un enlace que no s permita eliminar el mensaje.
• Implementa una mejora tanto en la base de datos como en la aplicación web qu e no s permita
det ectar qué mensajes son nuevos y, por ejemplo, colorearles distintos del resto .

Práctica 6.5: Ju ego geográfico


• Utilizando la base de datos geográfica de la Práctica 6.1 y la Práct ica 6.2, ha z un juego de
conocimientos geográficos.
• En este juego debe aparecer una localidad aleatoria de la lista de localidades de esa base de
dato s
• El usuario debe escribir en qu é provincia está .
• En todo mom en to iremos dici endo al usuario cuántos aciertos lleva, cuántos err ores lleva y
cuál es el po rcentaj e de aciertos.
296 IMPLANTACiÓN DE APLICACIONES WEB

Práctica 6.6: Ocupación de cursos


• Crea en MySQL una base de datos llamada cursos con una sola tab la llamada también cur-
sos. En la tab la almacenaremo s:
- El título del curso
- El número de plazas disponibles
- El número de plazas ocup adas
• Con esta tab la crear una aplicación que permita mo str ar y a ñadir más ocupación a los curso s.
La idea es que aparezca la lista mo strando el título de cada curso, las plazas ocupadas, las
plazas libres y un enlace o botón que permita ocupar una plaza más en ese cur so.
• Los cursos que tien en ocup adas todas las plazas aparecerán en formato tachado.
• Al final de la lista se mu estra el total de plazas ofertadas, el total de disponibles y el porcentaj e
de ocupación.
• Ejemplo de listado:

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

Res u men de ocupación:


• Plazas tota les ofertadas : 251
• Plazas ocupadas : 157
• Porcentaje de ocupación: 62 5498007968 13%

Práctica 6.7: T ienda o n lin e


• Implem enta una tienda on lineo
• Con ella mostrarás una lista de artículos con su descripción , al me nos una foto y el precio.
• En cada artículo un enlace nos permitirá meterlo en el carrito de la com pra.
• En el carrito podremos ver lo que hem os comprado, así como modificar la cantidad com -
prada de cada artículo o bien quitar al artículo del carrito. Incluso borrar el carrito.
• El carrito debe mantener una semana los artículos por si el usuario cierra la sesión, que
pueda seguir con el mismo carrito.
UNI DAD 6. ACCESO A BASES DE DATOS MEDIANTE PHP 297

6.11 RES U ME N DE LA UNIDA D


Las bases de datos aportan imp or tan tes ventajas a la creación de aplicaciones web,
fundame ntalme nte : almace namiento permanente, una capa extra de seguridad, herra-
mientas avanzadas de gestión de dat os y el uso de un lenguaje especializado en dat os
(norma lme nte SQL).

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.

• El proceso de acces o a un a base de dato s MySQL con la librería rnysqli es:

[1] Crear el objeto de conexión (normalm en te se llam a $mysqli).

[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.

[4] Cerrar la conex ión .

Un problem a de segur idad habitual es la inyección de SQ L, qu e puede permitir un


acceso no deseado a la base de dato s. Para evita r este (y otros probl em a) hay que tomar
las medidas pertin entes.

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

6.12 TEST DE REPASO


¿Cuál de los sigu ientes en unciados no es ¿Cuá l de las siguientes librerías de acceso
una ventaja de las bases de da tos? a MySQL desde PHP ya no se aco nseja
Añaden una capa más de seguridad utilizar?
Utilizan el propio lenguaje PHP para mysql
extr aer los datos qu e poseen mysqli
pdo
¿Cuál de los sigu ien tes datos no es obliga-
torio indicar en la cadena de conexión a ~. En el caso de que la sigu iente instrucción
una ba se de datos MySQU se llegue a ejecutar ¿Qué devolverá como
Nombre o direcció n IP del servidor resultado?
Nombre del usuari o $mysqli-> query (
Contraseña "CREATE TABLE salarios( "
"id_persona I NTEGER, " .
Nom bre de la base de datos
"valor NUMERIC (8 , 2)) "
¿Qué puerto normalmente utiliza MySQL );
pa ra comunicarse? tru e
330 6 false
,l) 15 2 1 L, un objeto de tipo mysqLresult
4 09 6 '1) un array con la estru ctura de la tabla
80 creada
8080 () - En el caso de que la siguiente instrucción
se llegue a ejecutar ¿Qué devo lverá como
¿Qué directiva en el archivo de configu-
resultado?
ración php.ini se encarga de indicar el
nivel máximo de errores que se mostrarán $mysqli-> query (
en el naveg ador cuando haya fallos en el "SELECT * FROM salarios ");
cód igo? al true
errc r.report íng J) false
e_report ing un objet o de tip o mysqlresult
erro rIevel un ar ray con la estruc tura de la tabla
e. Ievel creada

9.- ¿Para qué sirve el método fetch_assoc?


¿Cuá l de los siguiente s valores para la Devuelve un array con todos los valo-
directiva anterior hace que se muestren res de una con sulta
me nos errores? b) Devuelve un array con los valores de
LERROR una fila de la consulta
LWARNING (.) Devuelve un objeto de tipo
L NOTICE mysqLresult
L CO RLERROR ) Devuelve el número de filas de un a
LUSER_ERRO R con sulta
L ALL
UNIDAD 7

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

- Reconocer los CMS comerciales más 7.3 T IPOS DE CMS


utilizados en la actualidad y las funciones 7.3.1 CMS DE PROPÓSITO GENERAL
7.3.2 ORIENTADOS A BLOGS
que aportan
7.3.3 ORIENTADOS A COMERCIO
ELECTRÓNICO
Diferenciar las características de los 7.3.4 ORIENTA DOS A SIT IOS WIKIS
principales CMS 7.3.S ORI ENTA DOS A FOROS DE DE BAT E
7.3.6 OR IENTADOS A APRE ND IZAJE EN
- Seleccionar el CMS más apropiado Lí NEA
7.3.7 OR IENTA DOS A LA CO LABORACIÓN
en función de los requisitos de un 7.3.8 ORIE N TA DOS A LA CREACiÓ N D E
determinado sitio web GA LERíAS
7.4 ELECCiÓN DEL CM S
7.4.1 POPULARIDAD
7.4 .2 PRECI O
7.4.3 T IPO DE NECESID AD
7.4.4 FACILIDAD PARA LA
PERSONA LlZACIÓN
7.4.5 EXPO RTACi ÓN
7.5 CREAR NUESTRO PROPIO CMS
7.6 RESUMEN DE LA UNIDAD
7.7 TEST DE REPASO
300 IMPLANTACiÓN DE APLICAC IONES WEB

7.1 VENTAJAS Y CARACTERíS T ICAS DE


LOS CMS
7.1.1 ¿QUÉ ES UN CMS?
CMS es la abr eviatura del término Content Management System, Sistema de Gestión de
Contenidos. Se trata de un software qu e trata de facilitar la creación y orga nización de los con -
ten idos de uno o más sitios web. Su objetivo es paliar las dificultades que tien e crear sitios con
numero sos contenidos en la web.

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.

7.1.2 HI STO RIA DE LOS CMS


Inicialmente los contenidos que aparecían en la web se trabajaban directamente desde el
código de las página s ut ilizando editores simples. Evidentemente, esta forma de trabajar impide
poder crear sitios con gran cantidad de contenidos. Ademá s, el proceso de a ñadir contenido se
hace desde el cód igo fuente, lo que pone en riesgo la estructura crít ica de la aplicación. Lo que da
lugar a qu e solo ciertos usuarios pudieran gene rar conte nido.

La aparición de editores visuales como Adobe Dreamweaver permite conce ntrarnos en el


dise ño ocultando el código . Pero sigue siendo insuficiente.

La aparición de lenguajes en el lado del servidor dot ó de la posibilid ad de crear verdaderas


aplicaciones que permitieran la gestión de usuarios y contenidos. Así el sitio de noticias CNET
desarrolló su propio sistema de admin istración y publicación de contenidos en I995 . Ese mismo
a ño, la empresa Red Dot crea el que es considerado el primer CMS comercial.

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 .

7.1.3 VENTAJAS DE LOS CMS


Facilitan la generación de contenido. Añadir un conte nido a n uestro sitio web se rea-
liza, en este tipo de sistemas, a través de senc illos formularios y menús. No hace falta
tener conocimientos técnicos para hacerlo y, sobre todo, aun teniendo conocimientos
técnicos es muy rápido a ñadir contenidos de esta forma.

• 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.

Administración de usuarios. Quizá es la ventaja fundamental. Los CMS está n prepara-


dos para gestio nar usuarios y organizarles en gru pos, dot ando a cada un o de diferentes
capacidades. Inclu so, en la mayoría de sistemas, podr emos hacer qu e un os usuari os pue-
dan publicar contenido en un as partes del sitio web y otros usuarios en otras.

• 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.

• Mante nimiento de gran cantidad de do cum entos. La administración y organización de


sitios con grandes volúmenes de in formación es una de las capacidades fundamentales
de este tipo de sistemas. No solo tendremos organizados los documentos en areas o
secciones, sabremos quié n y cuándo publicó el contenido y otra serie de meta datos que
enriquece n el conocimiento que tendremos de cada contenido pub licado.

• 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

7.2 ESTRUCTURA DE UN CMS


7.2.1 VI STAS DE UN CMS
Como ya se ha comentado antes un CMS es un sistema de gestión de contenidos que presenta
una estru ctur a compuesta de dos visiones:

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).

7.2.2 ELE MENTOS DE UN CMS


Sea del tipo qu e sea, un CMS suel e in corpo rar estos elem entos para realizar sus labores:

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.

• Editor WYSIWYG de contenidos. WYSIWYG es el acrónimo de What You See 15 What


You Get (lo que ves es lo qu e obtien es) y en este caso se trata de qu e los conte nidos se
edite n sin necesidad de tocar el código HTML. En su lugar, se usa un edit or qu e permite
modificar y examinar el contenido viéndolo tal cual aparecerá en la págin a. No obstante ,
la mayoría de edit ores permiten tamb ién modifi car el código HT ML por si deseamo s
te ner más contro l sobre él.
UNIDAD 7. SIST EM AS DE GEST iÓ N D E CO NTEN IDOS 303

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.

7.2.3 TECNOLOGíA SUBYACENTE EN LOS C M S


Un CMS no es más qu e un a aplicación web qu e estará creada en un a det erminada tecn ología
de servidor y de cliente. La mayoría está n creados para un servidor web concreto. Los dat os que
guarda el CMS es la base de su funcionamiento porque ahí estará la lista de usuarios, los con te-
nidos, metadato s, etc.
Esto implica qu e para im plem entar un CMS se no s exigirá tener al men os un servidor de apli-
caciones y otro de base de dat os; y además se nos exigirá un producto concreto.

La mayoría de CMS están construidos en PH P. Ya he mo s visto qu e es un lenguaje mu y


pod eroso pero también qu e no facilita precisamente la escritura estru cturada de código, por lo
que para pr ogramadores poco experime nta dos, puede producir un códi go final poco eficiente.
Evidenteme nte los pr incipales CMS tien en un código de calidad. Además de en PHP, hay CMS
const ru idos en Rub y on Rails , Python, .NET, Java, ColdFussion o Perl.

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

Figura 7.1: Funci onamie nto de un CMS

El núcleo de un CMS es el motor de tr an sform ación. Es el compo nente de la aplicación qu e,


utilizando los contenidos qu e están en la base de dat os y a los que se acce de a través de un a capa
de acceso, se les da form at o y or gan ización utilizando los módulosjplugin sjext ensiones instala-
dos y la plantilla o plantillas utilizadas. Además se debe utili zar la info rm ación orga ni zativa qu e
también está en la base de dat os. Con todo ello, el mot or genera lo qu e el usuario verá , un a página
web con los conte nidos debid am ente formateados.

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.

7.3.1 CMS DE PROPÓSITO GENERAL


Se trata de los CMS en los que se suele pensar inmediatamente al hab lar de este tipo de sof-
tware. Se ded ican a todo tipo de sitios, tengan la temática que tengan. Se les llama también CMS
para portales.

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.

7.3.1.2 DRU PAL


Es el tercer CMS más popular en número de sitios, sin embargo, domina en sitios corporativos
de gran tamaño e instituciones de alto nivel. Cada vez se est á imp lantando más y está mu y cerca
de su perar a ]oomla! Tiene una filosofía un tanto difer ente de ]oomla! En este caso la facilidad de
uso es menor, es más difícil gestionar un sitio con Drupal al principio.
306 IMPLANTACIÓN DE APLICACIONES WEB

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.3 C MS MAD E SIM PLE


La filosofía de este CMS, también gratuito y de código abierto, qu eda clara por su propio
nombre. Inten ta ser el CMS más sencillo de ut ilizar. Es difícil determinar si es tan sencillo, pero
parece clara que su virtud es la flexibilidad y fácil adaptación para crear sitios din ámico s. Como
los anteriores está pro gramado en PHP y MySQL.

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.

7.3.2 ORIENTAD O S A BLOGS


Se trata de CMS especia lizados principalmente en la publicación de blogs. Los blogs están, por
lo general, mantenidos por particulares y son simpleme nte una serie de entradas que se orde nan
cronológicamente haciendo que se muestren primero las entra das (llamadas comúnmente post)
más reciente. También es cada vez mas habitual utilizar blogs cor porativos.

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:

Publi car post , entradas en el blog.


UN IDA D 7. SISTEMAS DE GEST iÓN DE CONTEN IDOS 307

• Capacidad de establecer categorías, así como de especificar metadatos en las entradas


que faciliten su búsqueda y ordenación.

Añadir elementos multimedia de todo tipo

• Poder buscar entradas segú n el tema o por la fecha.

11 Cambiar la aparien cia esté tica fácilmen te

• Exportación del con te nido a otros formatos, por ejemplo RSS.

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.

7.3.2.3 M OVA BLE TYPE


Mucho menos conocido qu e los anteriore s, es un CMS qu e apareció en el a ño 200I (fue de los
primero s) y está creado en len gu aje Perl aunque u tili za la habitual bas e de datos MySQL. Se le
recon oce como el principal op on ente de WordPress.

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.

7.3.2.4 EXPRESS IO N ENG IN E


Creado en lenguaje PHP y util izando MySQL, es un CMS que se organiza en canales, apor-
tand o una gran capacidad para la administr ación de usuario s. Es gra tuito y de código abierto
y está cons tru ido utilizando Code lgn iter, plata forma de código abierto crea da por la misma
empresa (Ellis Lab) propiet aria de Expression Engin e. Codelgniter tien e mucho éxito entre los
desarro llador es PHP por la facilidad y poten cia que aporta para crear aplicaciones web avanzadas.

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.

7.3 .3 O RIENTA DOS A CO M ERCIO ELECT RÓ N ICO


Facilitan la creación de tiendas en línea. Por lo que su orientación se basa en la administración
de productos, clien tes, cate gorí as, precios y, sobre todo, gest ión de carr ito de la compra. EL obje-
tivo en definitiva es facilita r la venta de productos a tr avés de Internet.

7.3.3.1 MAG ENTO


CMS de código abierto, actua lme nte propi edad de eBay, que aparec ió en 201I . Está crea do en
PHP y usa com o base dato s a MySQ L. Es el cuarto CMS más popular de Internet tra s Wordpress,
Dru pal y [oomlal, lo qu e le convierte en la solución más utili zada como gestor de contenidos de
com ercio electrónico.

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.

7.3.3.3 OSCO M MERCE


Ha sido durante bastante tiempo el CMS par a sitios de comercio electrónico más popular. Sin
embargo, los do s ante riores le han superado en número de usuarios. Gracias a su veteranía dis-
pon e de numerosas exte nsiones y plantillas, aunque no todas se integran fácilmen te. Las críticas
vienen de su sens ación de falta de segur idad y estabilidad ; pero, sobre todo , de haberse queda do
detrás en innovación respecto a sus competidores.

7.3.3.4 OPEN CART


Es ot ra opción semejante a las an ter iores que ha gana do bastante popul aridad en los último s
a ños. Sus valores son la sencillez, rapidez y escasos recursos req ueridos. Compite directamente
con PrestaSho p como solució n para empresas de ta ma ño peq ue ño o medio (las empresas de
tama ño alto parece n estar monopolizadas por Magento).

7.3 .4 ORI ENTADO S A SIT IOS WIKI S


Un sitio wiki está form ad o por un a gran cantidad de do cumentos we b construidos por la cola-
bor ación de los propios usuari os del sitio. El ejemplo más famoso de página Wiki es la Wikipedia,
enciclopedia con cientos de miles de artículos cons tru idos por miles de editores, qu e no son má s
que usuarios de la mism a.

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.

7.3 .5 OR IE NTADOS A FOROS DE DEBATE


Los foros de debate son sitio s web donde los usuarios discuten sobre un tema . Los usuarios
publican comentarios qu e el resto de usuarios contestan. Suelen agrupar los hilos de discusión
para que sea más fácil la navegac ión , así como etiquetar con palabras clave cada hilo a fin de poder
buscarlos con más facilidad. Es fundamental la figura de un moderador capaz, entre otras cosas,
de vetar a usuarios qu e no aportan cosas positivas al foro .
Los CMS para crear foros de debate además de incorporar herramientas para él estableci-
miento de un orden jerárquico en los comentarios, aportan la posibilidad de que los usuarios
puedan crear mensajes privado s, posibilitar que los usuarios se suscriban a temas concretos o
realizar de estadísticas y encuestas sobre los conteni dos alojados.

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.2 SIMPLE MACH INES FORUM


Escrito en PHP, utiliza MySQL como base de datos. Es seme jante en prestaciones y capacida-
des al anterior del que es claro competidor. Hace más hin capié en la sencillez.
UNIDAD 7. SISTEMAS DE GESTiÓN DE CO NT ENIDOS 311

7.3.5.3 VBU LLETI N


Software de pago para crear foros de debate crea do en PHP y con MySQL como siste ma de
bases de datos. Es el CMS más popul ar, más qu e su inme diato rival phpBB. Ofrece la posibilidad
de ser utilizado en la nube en lugar de instalar el siste ma en nu estros servidores . Su clara desven -
taja es el precio, pero a cambio presume de estabilidad, seguridad y un gran control de la mode-
ración de los foro s. Consigue webs optimizadas para los dispositivos mó viles (algo en lo que sus
rivales ta mbién van mejorando).

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 O RIE NTADOS A APR EN DIZAJ E EN LíNEA


Se les conoce también como herr ami en tas de eLearn ing y tambi én se les llama LMS (Learning
Managem ent System , sistema de adm inistración de aprendizaje). Permiten crea r cursos on line
en los que los usuarios se apuntan y se les puede monitorizar y asignar recurs os de apr endizaje.
Ent re sus labores está la gestión de cur sos, profesores y alumnos, adm inistración y publica-
ción de material educativo, gestión de agendas de trabajo , evaluaciones, tareas, etc. Tambi én sue-
len in corp orar herr ami entas de colaboración entre estudiantes, especialmente foros de debat e y
cuadros de anunci o.

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.

7.3.7 ORIENTADOS A LA COLABORACiÓN


Se trata de CMS pen sados , fundamentalmente , para labores internas de una empresa con la
fina lidad de facilitar la colaboración entre los trabajadores. Su campo pri ncipal de tra bajo es,
pues, las ln tran ets. Se les llama también EMS tEnterprise Managemente System , sistemas de
administración de con te nidos empresariales)

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 OR IE NTADOS A LA CREACiÓ N DE GALERíAS


Son CMS que facilita n la creación de galerías fotog ráficas o de otro tipo. La idea es crear álbu-
mes fotográficos o de vídeo en línea. La idea es la pu blicación de fot ografías y vídeos por parte
de los usuarios hacien do qu e otros usuari os puedan come ntar o evaluar ese material. Es habitual
que se permita crear zonas privadas donde solo cier tos usuarios pu eden acceder, lo qu e implica
una labor de administración de usuarios qu e el software ti ene qu e permitir.
UNIDAD 7. SISTEMAS DE GESTiÓN DE CO NT EN IDO S 313

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.

7. 3.8.2 DRAGONFLY CMS


CMS de construcción de galería s fotográficas , basado en PHP Nuke, uno de los primeros CMS
constru idos en PHP . Es todavía mu y popular. Es senc illo de implementar pero su aparien cia no
da sensac ión de m odernidad.

7.3.8.3 COP PE RM INE GALLE RY


Como los anteriores usa PHP y MySQl y es de código abierto y gratuito. Es qui zá el más
robusto y de aspecto más agradable. La gest ión no es precisamente sencilla, pero también aporta
comunicación con muchos de los CMS más populares como Drupal, )oomla!, Simple Machine s
Foru m, phpBB o vBulletin.

ACTIVI DAD 7.1:


• \V3Techs.com es una reputada web de esta dísticas sobre tecnologías de aplicaciones web.
• Instala el plu gin wjte ch para Firefox o Ch rom e. Navega por algunas de las páginas suge ridas
en los apartados anteriores , observa que el plugin te dice todo lo que sabe de ella, incluido el
CMS que usa.
• Un plugin parecido, aunque más visual, está disponible en la URL:
https://wappalyzer.com/download
• Comp ara ambos plugins par a ver lo qu e amb os te dice en cada web que visites .

7.4 ELECC iÓ N DEL C M5


7.4.1 POPULARIDAD
Productos hay muchísimo s y mu chos espe cializados para tipos de aplicacione s concretas . No
obstante, muchos CMS se salen de su categoría, es posible con WordPress hacer sitio s web qu e
no sean blogs (de hecho es lo habitual hoy en día) y, por ejemplo, Alfresco permite crear sitios de
todo tipo , no solo de colaboración empresarial.

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:

• 60,2% WordPress . De hecho el número total de páginas creadas con WordPress en


Int ernet es del 24, 1%
314 IMPLANTAC iÓN DE APLICAC IONES WEB

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.

ACTIVI DAD 7.2:


• En la dirección http ://w3techs.com /technologies/overview/co ntent managemen t/all pu e-
des ver la estadística comp leta de uso de CMS en Internet.
• Haciendo clic, en esa página, sobre un produ cto concreto, se det alla el uso por cada versión
del software, gráficas sobre el uso histórico o posición en el mercad o según el tipo de sitio.

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 .

7.4.3 T IPO D E N EC ESIDAD


Esto es lo fundamenta l. Si lo que qu erem os es un blog de no ticias para dar a conocer las nove-
dades en los producto s de un a empresa, es absur do utilizar CMS como Drupal qu e aportan carac-
terístic as muy pot entes, pero con el que costa ría echar a rodar este tipo de servicio. Lo lógico es
utilizar CMS más or ientados a esta necesidad.

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

7.4.4 FACILIDAD PARA LA PERSONALlZACIÓN


Ha y productos mu y sencillos que se instalan rápido y con los que pod emo s a empezar a fun-
cionar casi al instante. Pero en mu chas ocasiones necesitaremos ir más allá de lo qu e el CMS
aporta por defecto , para crear nu estro s propios eleme ntos, más allá de las plantillas, ext ension es
o componentes presentes en el CMS. Si este es un factor crítico, empe zaremos a acercarnos a
CMS qu e nos permiten utilizarles como marcos de tra bajo para crear aplicaciones web absoluta -
men te personales.

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.

ACT IV IDAD 7.3:


• La página http://www.opensourcecm s.com / permite ver una demost ración visua l sobre la
mayoría de CMS.
• Entra en la página y pul sa en AHCMS Dem os, después haz la prue ba de funcionamiento en
al me nos tres de los CMS que se han nomb rad o en esta unid ad.
• Observa ta nto la página prin cipal (botó n Demo Main Page) como la de adminis t ració n
(Demo Admin Page)

7.5 CREAR NU ESTRO PRO PI O CMS


Nada n os impide crear un siste ma prop io qu e se adapte a la necesidad concreta. Evide ntemente,
la dificultad está en qu e te nd remos que crea r un siste ma qu e, desde luego , es difícil de programar.

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.)

• Apor ta n numerosas ventajas:


Facilidad para generar contenido.
Actu alización rápid a de conten idos.
Personalización del entorno.
Administ ración de usuarios.
Manten imien to del contenido por grande que sea.
Aparienci a profesional y consiste nte.
• Tienen un pan el de control de gestió n del back-end y herrami en tas que facilita n la escri-
tura del contenido .

• 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 .

• Hay numero sos tipo s de CMS:


De propósit o gene ral. Como Drupal y ]oomla!
Orientados a blogs. Como WordPress o Blogger.
• Orientados a comercio electrónico: Com o Magento, Prestashop u OSCommerce.
Orientados a sitios Wikis.
• Ori entados a formación (LMS). Com o Moodle.
• Ori entados a foto s: Como PHPBB o Simpl e Machines.
Colaboración em presarial: Com o Alfresco o Nuxeo.
• Etc.
• La elección de un CMS tiene en cuenta aspectos como la popularidad (por el sopor te),
precio, necesidad final, personalizaci ón y facilid ad de exportación .

• 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
~ ~ ~ ~~ ~~~~~ ~

7.7 TEST DE REPASO


¿Cuáles de estos elementos de un sitio web ¿Cuál de las siguientes no es una caracte-
formarían parte del back-end? rística de los siti os Wiki?
.., Estruc tura de los menús Rapide z en la generación de
Artículos publicad os contenidos
L' Com entario s de los usuarios r) Generación colaborativa de contenido s
u: Organización de los usuarios L I Estética semejante a la Wikipedia
L) Estructura física de los archivos d) Facilidad para crear contenidos
.., ¿A qué están orientados los CMS Moodle,
¿Qué tecnologías son las más dominantes
en los CMS actualmente? Dokeos y Canvas?
al PHP y MySQL : ) A crear siti os wiki
Ruby on Rails y SQLite b) A crea r foros de debate
e) Java y Oracle Database e A crea r sitios de apre n dizaje en línea
el} JavaScript y MongoDB el) A crear blogs

~.- ¿Cuá l de las siguientes no es una ventaja 8. - ¿Q ué son los EMS?


deunCMS? a) Sistemas de gestión de contenidos
a) Facilidad para administrar usuarios empresariales
h) Facilidad para esta blecer la estét ica del ¡! Sistemas de gestión de conteni dos con
sitio licenci a privada
e) Mínimo tamaño de carga de las p ági- c) Sistemas de gestión de conte nidos
nas finales extendidos
J) Consistenc ia visua l d) Sistemas de gestió n de contenidos
para e-com merce
c, Facilidad para aña dir nu evas
fun cion alidades 9.- ¿Cuál es el CMS más u tilizado en la
actualidad?
'y - 4.¿A cuá l de los siguientes CMS no se le
consi dera de pro pósit o general? a) WordPress
a) Ioom lal o) [oornla!
')) Dru pal e) Drupal
e) WordPress d) Magento
di CMS Made Simple 10. - ¿Cuá l de los sigu ientes aspectos no es fun -
e) Plon e damental para elegir un CMS?
a) Popul ar idad
5.- ¿Cuál de est os CMS n o está ori entado al
comercio electrónico ? b) Precio
a) OSCom merce el Facilidad para la personalización
b) Op en Cart d) Tipo de necesidad
e) Expression Engine 11.- ¿Cuá l es el mej or CMS?
d) PrestaShop al Joomla!
e) Magento ';) Dru pal
..) WordPress
d) Depe nde del sitio qu e qu eramos crear
UNIDAD 8

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

8.1 CARACTERíSTICAS DEL CMS


WORDPRESS
8.1.1 IN TR O DU CCi ÓN A W OR DPR ESS
Como ya se comentó en la unidad anterior WordPress es el CMS más popular. Además es
gratuito y de códi go abierto, lo que le convierte en una de las primeras opciones a cons iderar por
todo tipo de usuarios y entidades, para ser utilizado como el sistema de gestión de los contenidos
web.
Wor dPress está cons truido en PHP y utiliza MySQ L como siste ma gestor de los datos. Al ser
tecnologías ta n populares para los desarr olladores web, dispo ne de una gran comunidad de desa-
rro lladores que continuame nte tra bajan en me joras para este entorno. Además, para ellos aporta
un a APl (inte rfaz de programación) sencilla y potente con la que se pue de modificar to do el fun-
ciona miento de WordPress.
Comparado con sus rivales, Drupal o Ioornlal, WordPress no par ece tener la mi sm a potencia
para gestionar sitios web complejos o mu y gran des. De hecho , la clave de su éxito es el hecho de
ser la herramienta idónea para gestionar blogs. Debido a que los blogs son el tipo de web más
popular de Internet y que WordP ress segur ame nte es el mejor software para crearlo s, el número
de páginas que utili zan WordPress es mucho m ayor qu e las que usan el resto de CMS juntos.

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.

• Documentación. La página http: //cod ex.wordpress.org posee documentación sobre


todos los aspectos de mane jo del CMS. Además se van traducien do a diversos idiomas,
entre ellos el es pañ ol,

• Facilidad para la personalización. En los últimos a ños se ha convert ido en un o de los


pilares de Wor dPress. Numerosos desarr ollad ores utili zan el CMS como plata forma para
[a creació n de aplicacio nes web complejas.

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.

8.1.3 TÉRMI NOS RELACIONADOS CON


W O RD PRESS
• Entrada (Post) . Es el nombre que se da a la publicación de un artículo que hace cada
usuario de WordPress. Puesto que WordPress siempre ha esta do orie ntado a la publica-
ción de blogs, un post sería cada entra da del blog.

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

Taxonomía. Lit eralm en te es la ciencia que se encarga de la clasificación. Se trat a del


componen te de un CMS que permite la agrupación de en tra das en base a un determi-
nado conce pto. Las taxo nomías más habit uales se basan en catego rías y en etiquetas,
pero se pueden crear taxonomías to talme nte personalizadas.

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.

• Enlaces (Links) . La idea es la misma qu e la de cua lquier enlace de un a página web. En


el caso de WordPress se suele hab lar de links para referirse a los enlaces dentro de la
estructura del sitio, qu e perm iten acce der a dir ecciones ext ernas. Los en laces se pueden
categorizar.

• 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.

• Widgets. Componentes visuales qu e podemos a ñadir a nuestra web. En realidad son


plugins, pero que son distinguibles visua lmente. Dicho de otra forma m ás práctica: ele-
m entos que aparecen en las barras laterales para facilita r la navegación .

11 RSS. Se trata del acrónimo de Really Simple Syndication , un protocolo de sindicación


de contenidos basado en XML.Aunque realmente en la actualidad está cada vez en más
desuso, la relación de WordPress con este protocolo permite que los usuarios se suscr i-
ban a la web de mo do que reciban en este form ato, mucho más veloz, los posts del sitio
web sin ten er qu e en trar en la propia web.

• Usuarios. El punto culminante que convierte a un CMS en un verdadero ento rn o de ges-


tión de contenidos complejo, es el hecho de difer enciar usuarios. Wor dPr ess en cada ver-
UNIDAD 8. IN STALACiÓN D E SISTE M AS D E GESTIÓN DE CO N T EN IDOS 323

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.

8.2 INSTALACiÓN DE WORDPRESS


8.2.1 CREACIÓN DE UN SITIO ONLlNE
La primera decisión cuando queremos implantar un sitio web mediante Wor dPress es si que -
remo s utili zar un alojam iento WordPress ya pr epar ado online o si deseamo s configurar nu estro
servidor web para impl em entar un a instalación manual de WordPr ess.

La URL https://es.wordpress.com/ no s permite, gratuitame nte, almacenar nuestro propio


sitio web gestionado por WordPress online. En la opción gratuita tendrem os 3GB para nuestro
sitio web. Las opciones de pago (premium y business) nos dan más posib ilidades de gestión , más
espacio y otras mejoras, como los temas de tipo premium.
La venta ja, es la facilidad de instalación , el hech o de dir ectamente dispon er de alojamiento y,
fundamentalme nte , no necesitar admi nistrar nu estro servidor web.

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 .

ACT IVI DAD 8.1:


• Realiza la Práctica 8.r: Creac ión de un siti o web on line mediante WordPress.com.
• Navega por todas las opcio nes de administración del sitio creado para comparar las diferen-
cias con la ins talación man ual.
• Entra en el sitio como un usuario normal de In ternet para examinar la forma en la que cual-
quier persona vería dicho sitio .

8.2.2 IN STALACiÓN MANUAL D E WORDPRE SS


En este caso disponem os de nu estro pro pio servi dor web en el que realizare mos la instala-
ción del CMS. Es una opción más compleja, pero permite personalizar y controlar absolutamente
la instalación. Es lo recomendable cuando deseamos tener gestión real del fun cionamiento de
WordPress.
324 IMPLANTA CiÓN DE APLICACIONES W EB

8.2.2.1 REQ UER IM IENTO S INI CIA LES


Wor dPress re quiere ten er instalado un serv idor we b co n PHP y además un serv ido r de bases
de datos MySQL (o Mari a DB). Además necesita una base de datos, que será do n de almacene
to da la información del sitio web , y un usuario con tod os los permisos de creación, lectura, escri-
tura, etc, sobre esa base de datos.

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:

Imm Yy s~ q-ll »·· CREATE dbA3D;


DATABASE
In CREATE DATABASE dbA3D;
:mys q l > GRANT ALL PRIVILEGES ON dbA3D.* TO
-> "usradminA3D"@"localhost" IDENTIFIED BY "A1s2D3f4G5h6_!";
mysql> FLUSH PRIVILEGES;

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

8 .2.2.2 DESCARGA Y PREPARA CIÓN DEL CÓ D IGO DE WORDPR ESS


WordPress realmen te es una aplicac ión creada en PHP, por lo que simp lem ente necesitamos
descargar to dos los archivo s de cód igo y colocarlos en el servidor PHP que deseemos.

La descarga se reali za desde la dirección http:(/wordpress.org/download. En esa dirección se


no s permitirá descargar la última versión de WordPress en formato zip o bien en formato tar.gz
(el form ato habitual de archivo comprimido de Linux). La instalación desde esa página está en
idioma inglés. La última versión de WordPress siempre está disponible en estas URL:

• http :(/w ordpress.org/ lat est.zip

• http ://wordpress.or gllatest.ta r.gz

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.

Est ruct ura de Archivos de Wo rdPress


El directorio de Wor dPress recién desco mprimido presenta la estru ctura qu e muest ra la Figura
8.r. Se pu eden observar los siguientes dir ectorios:

• 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

Actualización de Wor dPress

wp-includes. Librerías y extensione s de WordPress qu e son parte de su funcio na mie nto


fundamental. La mayoría del fron t- end se basa en este directori o.

T e woropress En definiti va, es donde se almacenan los archivos de uso común


.. L.... w p -admin
.. B wp.cont ent por part e de todo Word Press. Nunca se debe modificar est e
... O plu gim directorio.
... L t ht nlf 5
~ mo ex.pn p
... wp -Inclu c es
wp-content, Directorio en el qu e se alma cena los archivos
.htarcess person ales de la insta lación de WordPress. Por ejemplo, den-
!.., in dex.php
...:., ucen se.t st tro de este directorio te nemos los archivos de te mas, plugin s
E readme.htrnl y archivos multimedia que el adm inistrador de Wor dPres s
!.j wp- act wat e.php
!.: w p-blo q-n eac er.pn p haya ido incorporando. Concretamente este dir ectorio posee
~ wp-cc mments-pcs t.pnc
los siguientes subdirectorios:
~ wc-conuc.semore.ono
!... wp-config.php
!.J w p -cron. ph p • Plugins. Cada plugin descargado ocupa un directorio den -
!... wn-tmks-opml.pnp tro de éste .
~ w p-t c ac.p n p
~, w p -lo qi n.p hp
• Themes. Con los tema s que se hayan descargado.
!.... w p -rnait.ph p
!.:. wc-sernncs.onn
~ wp -sign u p.php
• Uploads. Contiene los archivos multimedia que se hayan
!... wp --::rackback.php sub ido a WordPress.
~ xmtrp c.pbp

• Upgrade . Para las act ualizaciones de WordPress .


Figura 8.1: Contenido del
dir ectorio de WordPress recién • Ademá s pue de haber otros directorios que son crea dos por
descargado de Int ern et plugins que necesiten almace nar info rmación extra (gale-
rías de imágen es, iconos, caché , etc.)
WordPress se distribuye con su código fuente que, evidente me nte, pode mos modificar.
Aunque de hacerlo, arr iesgamos a un mal func iona miento de nu estro sitio web. Solo el directorio
wp-content está prepara do para a ñadir información de nu estra propia cosecha . Modificar los
arc hivos de WordPress permite n person alizar aun más la in stalación, pero hay qu e tene r muy
claro las impli cacion es de esa modificación , por lo que está rese rvado a usuarios qu e conocen
muy bien la arquitectura de WordPress.

8.2.2.3 CONF IGURACiÓN DE LA IN STA LACi Ó N DE WORDPRESS .


ARCHIVO WP - CONFIG .PHP
Tras descomprimir y copiar el directorio de WordPress, debemos preparar el archivo de confi -
guración. Dicho archivo se llama wp-con fig.php, y se debe ubicar en el directorio de Wor dPress
(o bien en la raíz general del sitio web). Inicialmente este archivo no existe, pero disponemos
de un archivo llamado wp-config-sample.php, Podemos copiar ese archivo, renombrar la copia
con el nombre wp-confiq.php y modificar su contenido para indicar nuestra configuración de
WordPress. La configuración mí nima que tenemos que indicar es:

• Nombre de la base de dat os de MySQL en la que se almacenará la información de


Wor dPress
UN IDAD 8. INSTALACiÓN DE SISTEMAS DE GESTiÓN DE CONTEN IDOS 327

• Nombre y contrase ña de un usuario con permi sos de lectura y escritura sobre esa base
de datos

Nombre qu e tien e el servidor web que aloja el servicio WordPress

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

idefine ( ' DB_PASSWORD' 'A1s2D3f4G5h6_! ');


I
I
idefine ( ' DB_HOST' 'localhost');
I

Idefine ( 'DB_CHARSET' 'utf8'); I

idefine ( ' DB_COLLATE' I " ) ;


I
"$t abl e _prefix = 'wp_';

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.

8.2.2.4 IN STALAC IÓN EN sí DE W OR DPR ESS


Con las acciones anteriores realizadas, falta instalar en sí WordPress. Esa instalación prepara
las tablas n ecesarias en la base de datos MySQL y las rellena con datos de ejemplo (un primer
post , un pr imer com en tario, etc.).

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:

• Título. Es el tí tu lo que tendrá nuestro sitio WordPress

Nombre de us uario. Es un us uario que tendrá permisos de administración de WordPres s.


No es reco me n da ble darle el típico no mbr e de admin, se debe indicar un nombre más
críptico .

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.

• E-mail. Lo utiliza WordPress para indicar notificaciones.

• 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 .

Estr uct ura de la base d e da to s WordP ress


En la base de da tos MySQL que se in dicó en la ins ta lación de WordPress, tras la instalación ,
se habrán creado una serie de ta blas. En ellas se guardan los dat os que los usuarios del CMS
WordPress van creando: post, páginas, comentarios, usuarios , taxonomías, enlaces, etc.

El diagrama relacional de WordPress se puede observar en la Figura 8.2. suponemos que se ha


insta lado WordPress con el prefijo wp_.
UN IDAD 8. IN STAL ACiÓN D E SIST EM AS DE GEST iÓ N D E CO NTEN IDOS 329

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---

co mm ent da te da tet ime


m et a lo ngt e xt comment date_gmt da te tim e post dat e gmt da te t ime
comment _con te nt text post co nte nt lon gt ext
comment karma ;nt (u ) post tit e tex t
co m ment app roved varcbartao)
postj exce rpt t ext
commenta gen t post status varcharlzo)
bi mt 20) var ch a r{25sl
comment. fype varchartzo)
comment status varchart zoj
varc har(25S) ing_ status
comment parent varchartzc )
vareha r(25S) "'-'" bigi nt (20)
oosrj aasswc rd var cha rtzo)

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

Figura 8.2: Esqu ema relacion al de las tablas de WordPress

Las tab las que WordPress crea en la base de datos son :

11 wp_options. Contiene la información general del sitio web , la cual se indicó durante el
proceso de instalació n.

11 wp_post. Tabla central de WordPress en la qu e se almacenan las entradas (post) de los


usuarios. Cada fila representa un post en nu estro sitio web. En ella disponem os de toda
la informaci ón qu e Wor dPress almace na de cada post.

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_users. Contiene los usuarios crea dos en WordPress.

11 wp_usermeta. Contiene los metadatos de cada usuario (apellidos , nivel de usuario,


dirección, departamento, etc.)

• wp_comments. Almacena los comentarios rea lizados en cada post.

wp_com m entsm et a. Permite almacenar metadatos para cada comentario.

.. wplinks. Contiene to dos los enlaces creados en la zona de administración de WordPress.


330 IMPLANTACiÓN DE APLICACION ES W EB

wp_terms. List a de to dos los térmi nos taxon óm icos crea dos en WordPress.

wp_terms_taxonomy. Tabla qu e permite en lazar cada término con la taxonomía con la


que se relaciona.

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.

Lo cierto es qu e, al final, la base de dat os de WordPress es una base de dato s MySQL no rm al


que pod remos utilizar en cualquier aplicación PH P que cree m os, ya qu e con ocemo s el usuario y
contraseñ a de acce so. Pero , hay qu e ser muy cautelosos a la ho ra de m anipular los datos ya qu e
cualquier error po dría ser desastroso para nuestro sitio web. Mo dificar los dato s, de ent rada , no
es buena id ea, pero hacer co nsulta de ellos pued e ser m uy inte resa nte.

8. 2.3 D ESIN STALAR WORDPR ESS


Si hemos in stalado Wo rd Press medi ante un pro veed or de hosting en Internet , dispondre-
m os de opcio n es automáticas par a la desin st alació n. Si deseamos elim ina r WordPress de for ma
manual hay qu e realizar estos pasos:

[1] Elim inar el directorio de WordPress dentro de nuestro servidor web.

[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

8.3 CONF IGURACiÓN BÁS ICA DE


WORDPRESS
8.3.1 EL PANEL DE ADMINI STRACiÓN DE
WORDPRES S
Una vez instalado WordPress, nos prop orcion a una URL para rea lizar to da la configuración
y administración del mismo. Se realiza a ñadiendo /wp-admin a la URL del sitio web don de se
instaló WordPress. Por ejemplo: http: //misitio .com/wordpress/wp -admin /

Al acceder a esa dir ección aparece el escritorio o dashboard de WordPress:


¡;;::;::===::::;::::-~--------------"I:li3 - e

~ -:.: .. ~ '.- í!i ; 5 11 JI ;:

Escrit o r io

Bienvenido a Wor dPress

Comienza SIguientes pasos Más acciones

De un vistazo Borrador ráp ido

-:J :'

Actividad

'M5&N

Figura 8.3: Aspecto del escrito rio de WordPress

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.

Mediante los menús y enlac es desde la zona administrativa o escritorio de WordPress,


podremo s:
Revisar las entradas (post) del sitio.

• Crear y editar las páginas estáticas del sitio.

Gestionar los comentarios.

• Elegir y modificar los temas y la apariencia.

Elegir y gestionar los widgets.


332 IMPLANTACIÓN D E APLI CACION ES W EB

• Configurar los menús.


Aña dir o elimina r Plugin s.

Gestionar los usuari os.

• Importar y Exportar el contenido del sit io.

Mod ificar los ajuste s gen erales

• Actua lizar WordPress.

8.3 .2 MODIFICAR LOS AJUSTES GENERALES D E


WORDPRES S
La información proporcionada duran te la in stalación de WordPress se pu ede modificar desde
la zona administ rat iva. Para ello bast a con hacer elic en el aparta do Ajustes (o Settinqs¡ y luego
elegir Gen erales. Desde ese aparta do podrem os realizar los siguientes cambios:

• 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.

• Indicar si cualquier persona se puede registrar en el sitio (M em brership).

• Perfil predeterminado para nuevos usuarios. Por defecto se asigna el de suscriptor


(subscriber).

• Zona horaria, y formato de fecha y Hora.

• Idioma.

8.3.3 AJUSTE DE PERMALINKS


WordPress denomina permalinks a en laces qu e permiten acceder de forma amigable a un
det erminado post , página, cate goría, tag , etc . Los permalinks funcionan si est á activado el módulo
mod_rewrite de Apache. Si no lo está , hay que a ñadir esta línea al ar chivo de confi guración de
Apache :
UNI DA D 8. INSTALACiÓN DE SIST EM AS DE GESTiÓN DE CONTENIDOS 333

Loa dModu l e rewr ite_module mod_r ewri t e. s o

En muchas distribucion es Linux es más cómo do utilizar el coma nd o de activación de m ódulos:

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.

Ajustes de los en laces perman entes


oc.• '::~.~ :;<;¡ .... e -c r er s "'t z.. I.' ~ .s ~~ ,¡ lE-p r o'; ~', ; , C~ ,.l;,,' n ';J ;-Cr y "'C"~: ",'l'; tlt -r.r-r-e-cs : ..,e -:" l C "·;V C ~ ·t ¡l re o"~~ ~ -a c-v: :;)- ;:~ ce ~'i:H;. · ~ .,;: ''''::~ 'J ce 'J".•
Pf"'5 C·· ... ·¡~;:..l.· J¡ .. , f'''I'~ : '!IC+, ... J ..... ~_ tr.iJ·~~.,~ . <~ .:l:,._'l::"'T"'l¡-y;; . ;,.., : t": r:~ '~H~ ;)1:l" C(;'1lC i ·. oCi ::li .·_'¡¡ct :\.;~ ·" .. : 'l ¡ " ;'; ' ;;'d;~~:
;1.1" r ·~_H ~ : ,; ~ t ... - { ,,~~ · ~ ri '-","'1'"
Ajus [es habitua les

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~

ClIttS 0ría base

et.q uet e base

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.

• %monthnum%. Número de mes actual (I2=diciembre).


334 IM PLAN TACiÓN DE APLICAC IO NES W EB

%day%. Día del mes.

%hour%. Hora del día (de o a 23).

%minute%. Minuto del día

• %secon d%. Segundo del día.


%posCid%. Identificador únic o del post .

• %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.

• %cat egory% . Versión normalizada del nombre de la categoría . Si el post se ha relacio-


nado con varias cat egor ías, solo se pu ede utilizar una en el pennalin k. Las categorías se
orden an alfabéticame nte , por lo que la primera, así ord en ada, será la que se utilice en el
permalin k.

%aut h or% . Versión normalizada del nombre del autor.

Los per ma links aportan ventajas mu y interesantes:

• Aume nta n el posicionamie nto del sitio web en los bu scad ores gracias a aportar URLs
más semánticas.

• Direcciones amigables, qu e permiten ser recordadas con más facilidad .

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.

8.3.4 ELECC iÓ N DE TEMAS


La apariencia estéti ca es uno de los aspectos funda mentales de un sitio web en Internet. Para
facilitar la labor, WordPress proporciona un conjunto de tema s a modo de plantilla para nuestro
sitio web. La plantilla se elige en el apartado Apariencia (Appearance)-Temas (Themes).

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

8.4 EXTENDER LAS CAPACIDADES DE


WORDPRESS. PLUGINS
8.4.1 ¿QUÉ SON LOS PLUGINS?
Un plu gin es un a aplicación softwa re creada para dotar de más funcion es a un determi-
nado software. Es decir , es un ap licació n inmersa en una aplicación más grande. Los plugins de
WordPress, por lo tanto, son aplicaciones creadas para dar má s capacidades al propio WordPress.

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 .

8.4.2 EXA MINAR PLUGINS INSTALADOS


El apartado plugins del pan el de control nos per mite exam ina r los plugin s qu e hay actual-
me nte in stalados. Sobre cada uno podemos:

• Ver los detalles del mismo .


• Activar o desactivar. Un plugin desactivado sigue estando dispon ible en los menú s y
ocupando espacio en disco.

• 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

:. .', ~., "


ft Escritorio Plugins "",d" ouevc
;1' E"ua das
~l Medios
Todos
~ Páginas

" 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

Figura 8.6: Pan el de plugins instalados

8.4.3 INSTALACiÓN DE PLUGINS


8.4.3.1 INSTALACiÓN DESDE EL PANEL DE PLUGINS
[1] Ir al apartado Plugins del pan el de adminis tración de WordPress y elegir Aña dir n uevo (Add
new).

[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.

Añadir plugins "'., pO","

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

Figura 8.7: Pan el de adición de plugins de WordPress


UN IDA D 8. IN STALACi ÓN DE SISTE M AS DE GESTiÓ N DE CO NTEN IDOS 337

8.4 .3.2 IN STALACi ÓN MANUAL


No todos los plu gins está n disponibles en el panel de WordPress. Ot ros los pod emo s obten er
en otras ubicaciones de Intern et. Los pasos para la in stalación manual son :

[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.

[6 ] El plugin estará en la lista de plugins instalados.

8.5 CARACTERíSTICAS DEL CMS DRUPAL


8.5.1 INTRODU CCiÓN A DRUPAL
Si WordPress es el CMS más pop ular, Drupal está considerado el CMS de código abierto más
potente. Curiosamente, la tecnología de la que parte es la misma que WordPress: PHP y MySQL
(aunque en lugar de MySQL puede utili zar PostgreSQL o SQLite). Sin embargo, la orientación
de Drupal es distinta.

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.

8.5.2 ELEMENTOS FUNDAMENTALES DE DRUPAL


Al fina l no difieren muc ho de los comentados en el Apartado 8.1.3 "Térm inos relacionados con
WordP ress", en la página 321; pero Drupal aporta nuevos conceptos. Los principales términos
que maneja Drupal son:

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

Taxonomía. Término s que se asocian al contenido para facilitar la bú squeda y qu e se


puede jerarqu izar. No difiere la idea qu e te nía mos en WordP ress.

Nodo. Este sí es un té rmino propi o de WordPress . Un nodo es un elemento de con te ni do


en el sitio web: una página estática , un post, un a noticia, etc. En Drupal hay mu cho s más
tipos de nodos (de hecho , tantos como que ram os).

• 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.

• Módulos. Plugins. Componentes qu e aumenta n la funcionalidad de Dru pal,

• 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.

8.5 .3 ESTRUCTURA FUNCIONAL DE DRUPAL


Drupal esta blece un modelo de 5 capas en cuanto a sus funcionalidades :

• 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

Figura 8.8: Modelo de cinco capas de Drupa!. Imagen origina l:


hup s://wIV\\'.dru pa!.org/files/drul2al f10lV o.gif

8 .5.4 D O CUM ENTACi ÓN DE DRUPAL


En la URL https://www.drupaI.org/documentat ion , disponemos de la do cumentación oficial
de Drup al. La pega es que está solo en inglés. Hay diversas páginas en Internet que con tiene n
información sobre Drupal en espa ñol (com o http://dru paI.or g.esl), pero no disponen de docu-
ment ación tan actualizada.

8.6 INSTALACiÓN DE DRUPAL


8.6 .1 REQUISITOS PREVIOS
Dru pal se puede in stalar en un servidor que te nga Apache, Nginx o Microsoft ll S. En general,
el servidor web habitual es Apac he (se requiere al menos la versió n 1.3). Drupal posee (al igual que
WordPress) de archivos .htaccess, por lo que se necesita activar la dire ctiva Allow Overricle AH
en el archivo de confi gur ación de Apac he (véase Aparta do 2+5.2 ''A rchivos .htaccess", en la página
59)·

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

.,. e cruce: Como bases de datos, Drupal, a diferencia de WordPress, admite


... inou c es
.. mise tre s servidores: MySQL o compatibles (al meno s la versión 5, Drupal 8
.. G modules requiere la 5.5), PostgreSQL al menos con versión 8.3 y SQLite con al
~ L prol lles
.... L scnpts
menos la versión 3.3.7. Lo habitual es utilizar MySQL (aun que
... C: sites PostgreSQL es un a base de dat os con muchas más posibilidades).
.. L.... all
.... ~ detaurt
!j example.srtes.pnp 8.6 .2 PR EPARACiÓN DEL D IRECTORIO
-= READI'.I E.lxt
.... tn emes
.gltignore
DE DRUPAL
L...J .ntsecess
----= autnunze.php
Al igual que ocurría con WordPress, la ins talación de Dru pal con -
- ' CH"NGELOG .lxt siste en colocar el códi go fuente en el servidor web, en la ru ta desde la
COPYRIGHT.t X! que deseem os acceder a Dru pal.
!.J cron.php
~ rn d ex.p h p
w INSTALl. mysq l.t X!
[1] Descargar los archivos. Drupal posee muchas distribucion es, la
- ' IIISTALl. p gsq l.lxt habitu al es Drupal Core que es la contiene los archivos fundamen-
~ inst all.ph p tales. Pero hay distribuciones preparadas para crear un a tienda
~ INSTAl l. sq lit e.lxt
- ' INSTAl l.lxt
online, foros de debate, blogs, etc. En el mom ento de escribir estas
....J ICH/SE.tX! línea, la versión 7.38 de Drupal es la recomendada para descargar, la
MAINTAINERS.lxt
versión 8 de Drupal aú n está en fase Beta. Conviene, en todo caso,
....:i READI.IE.lxt
LJ rcbcts .txt descargar la versión recomend ada.
~ updete.pb p
.J UPGAA DE.lxt Las descargas se realizan mediante FT [) con la ruta:
c.J web.co nl ig
~ xmlrp c.p h p
http ://ftp.drupal.org/files/projects/drupal-x.x.tar.gz
Figura 8.9: Con tenido Don de las equis, hay qu e modi ficarlas por la versión qu e qu eram os
del directo rio de Dru pal en descargar. Otra opción es acudir a la página de Drupal: htt ps://
su distribució n Core, una
vez descomprimido www.d rupaJ.org/down load y desde ahí descargar la versión deseada
en formato zipo tar.gz.

[2 ] Descomprimir los archivos. Obtendremo s un directorio.


[3] Mover el directorio al ser vidor . Debere mos colocar ese dir ectorio en el director io del ser-
vidor que deseemos. De modo qu e si queremos que Drupal funcione desde la raíz de n ues-
tro sitio, se colocaría en el direct or io raíz (por ejemplo htdocs o /var/www).

8.6 .2.1 ESTRUCTURA D E AR CHIVO S DE D RUPAL


En la Figura 8.9, se pu ede observar el aspecto habitual del dir ectorio de Drupal un a vez des-
comprimido. De esa estructura se pueden destacar esto s ar chivos y director ios:

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

11 Directorio profiles. Perfiles pre definido s para la instalación de Dru pal.

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 .

11 Directori o themes. Temas del núcl eo de Drupal.

8.6.3 PR EPA RA CiÓN DEL USUARI O Y BASE DE


DATO S DE DRUPAL
Simplemente deb eremos crear una base de datos para que Drupalla utilice para m eter todos
los datos que se generen en el CMS. Usuario s, entradas, comentarios, enlaces, menús, et c., es
decir, todo lo que tenga que ver con el contenido del sitio web.

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.

La forma de hacerlo dependerá de si utilizamos PostgreSQL, MySQL o SQLite como sistema


de bases de datos. En la raíz de Drupal disponemos de tres archivos de texto : INSTALL.mysql ,
INSTALL.postgresql e INSTALL.sqlite con las instrucciones par a reali zar estas acciones en cada
uno de los sistemas de bases de datos.

8.6.3.1 ESTRUCTURA DE LA BASE DE DATOS


Drupal es un CMS que tiene más complejidad que WordPress. El esquema relacional está dis-
ponible en la URL https://www.dru pal.org/files/dru pa17-db-schema.png. En él se pu ede observar
la cantidad de tablas que posee. La versión Core instala nada menos que 74.

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

8.6.4 PREPARAC iÓ N DEL ARCHIVO DE


CO N FIGU RACiÓ N
Dru pal posee un archivo de configurac ión , cuya ruta (des de la raíz del directorio de Drupal)
es / sit es/default/settings.php (equivalente al wp-con fig.ph p de WordPress). En Drupal 8 hay
un segundo archivo de configura ción llamado service.yarnl (YAML es un form at o de texto para
alma cenar dat os qu e cada vez es más popul ar).

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 .

8.6.5 PREPARAR LA INSTALACiÓN EN OT RO


IDIOMA
Drupal, por defecto , se instala en inglés. Para instalar en otro idio ma (como el espa ñol o el
catalán) hay que realizar estos pasos:

[1] Descargar el archivo de idioma desde la URL https:/Ilocalize.drupal.org/dovmload eli-


giendo y descar gando el archivo de idioma deseado. Para el archivo en españ ol en la versión
7 de Drupalla URL sería de este tipo:

htt p://ftp.dru pal.org/files/tr anslationsl7.x/drupalldr upal-n 8.es.po

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.

8.6.6 EJECUTAR LA INSTALACiÓN


Suponiendo que el servidor web con PHP y el servidor de bases de datos est én func ionand o
y qu e ya hemos copiado y preparado los archivos de Drupal, tendre mos ruta hacia la raíz de
Drupal en ese servidor. La cual podría ser, por ejemplo, http ://Vvww.miservidorcete.com/drupal.
Enton ces, desde esa raíz invo caremo s en el navegador al fich ero install.php. Usando la ruta de
UN IDAD 8. INSTALACiÓ N DE SISTEM AS DE GESTiÓN DE CONTEN IDOS 343

Drupal usada como ejemplo antes, sería: http ://www.miservidorcete.com/dru paliinstall.php . En


una instalación local típica sería http://localh ostiinstall.ph p si Drupal está en la raí z del sitio .

Desde el navegador aparecerá un asistente encargado de configurar el archivo config .php de


Drupal y cuyos pasos serán:

[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.

[2] Elegir el idiom a.

[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.

[5] Tras preparar la in stalación se nos pre gunta por :

• Nombre del sitio web.


• Dirección de e-ma il qu e utilizará Drupal para comunicarse con el adm inist rador.
111 Nombre, contraseña y e-ma il del usuario qu e será súper administrador de Drupal.

• Op cionalmente país y zona horaria.


Dispondremos del sitio Drupal creado con el aspecto por defecto.

Inicio de sesión
Bienvenido a localhost
Aún no SE' ba creadocontenido para la portada .

C.o otr n t'ña ·

• 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

8.6.7 ACCIONE S TRAS LA IN STALACiÓ N


8.6 .7.1 D IRECTO RIO FILES
En la ruta sitesjdefault (dentro de la raíz de Dru pal) hay que asegurar que tenem os un direc-
torio llamado files. Si no existe , lo deb emo s crea r porque es dond e se suben los archivos que los
usuarios cargue n. Además, hay qu e asegur ar qu e Dru pal podrá escribir en él, lo que im plica asig-
nar privilegios de escritura sobr e este directorio.

8.6.7.2 PROTEGER ARCH IVO DE CO NFIGURAC iÓN


Es imp ortante que el archivo de configuración esté prot egido contra la escritur a.

8.7 CO NFIGURAC iÓ N BÁS ICA EN


D RU PAL
8.7.1 PANEL D E ADMINI STRACiÓN
Inicialm ente Drupal ofrece la vista de la Figura 8.ro . Normalmente conec tará con el usu ari o
administrador, pero en el caso de no hac erlo aparece una barr a lateral que no s permite indic ar
nombre de usuario y contrase ña. Eso permite acceder a un a barra de menú con opciones de con-
trol (equivalente al escritorio de WordPress). Es el menú de administración.

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.

Podemos acceder a pantalla completa al panel de administ ración si a ñadimos ?q=admin a la


URL de drupa!. Por ejemp lo: http://localhost /drupall?q=admin o htt p://localhostldrupalladm in
si estamos utilizando la forma amig able para las URL.

8.7.2 INSTALAR TEMAS


Los te mas de Drupal se encue ntran en el apa rtado Apa rie ncia del menú superior de control,
Ahí veremos los te mas insta lado s y cuá l es el actual terna predete rminado. Si querem os elegir
otro, hem os de hace r clic en el enlace Activar (si no lo est á ya) y luego en Establecer como prede-
terminado. Si deseam os instalar más temas los pasos son:
[1] Ir a un a página de confianza para descargar temas. Por ejem plo a la dirección URL
http://drupal.or g/ pro jectlth eme s.
[2] Descargar el archivo ZIP o TAR.G Z con el tem a desead o.
UN IDAD 8. INSTA LACi Ó N D E SIST EM AS DE GEST IÓ N DE CO NTEN IDOS 345

[3] Dos opcione s:


Descomprimir el archivo descargado . El resultado será un directorio. Subir o copiar el
directorio a la ruta sitesjalljthemes.
Tamb ién podemos ir al menú Apariencia y hacer clic sobre Añadir nuevo tema. Un
panel nos permitirá directam ente elegir el archivo compri mido.
[4] Activar y establecer como predeterminado si deseamos qu e funcione ya para dar form ato a
nuestr o Drupal.

8.7.3 PERMITIR URL LI MP IAS


Las rutas por defect o de Drupal tiene n el mismo pro blema qu e las de Word Press. Por ejemplo,
para acceder a un n odo conc reto la ru ta sería algo com o: http://server/drupal?q=nod e/83. Una
URL limpi a sería http://server/dru pallnode/83.

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 .

8.7.4 GESTiÓ N DE M Ó DULO S EN DRU PAL


8.7.4.1 INTRODU CCiÓN A LOS MÓDULO S
Los módulos de Drupal son equi valentes a los Plugin de WordPress. Sirven para ext ender las
capacidades de Drupal. Ha y módulos que vienen ya preinstalados, y que simplemente hay que
activar si deseamos utilizarlo s, y módulos que son desarrollados por terceros. Siempre hay qu e
tener cuidado con la descarga de módulos ajeno s, ya que pueden ser capa ces de introducir código
malicioso en nu estro siste ma.
346 IM PLANTACi Ó N DE APLICAC IONES WEB

8.7.4.2 GESTiÓN DE MÓDULOS


El apartado Módulos de l m enú de administraci ón permite rea lizar todas las tareas que tienen
que ver con los módulos. Nada más abrir ese panel aparece un a lista de todos los módulos del
núcl eo, algunos esta rán ins talados y ot ros no.

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.

+ nsta lar nuevo módu lo

• NÚCLEO

ACTIVADO NOMBRE VERSiÓN DESCRIPCIÓN OPERACIONES

ln t eo re con te ni do Sind icad o


Ag g re g a t o r 7 38 (ca na le s d e notici as 1\.5S, RDF
y Atom ).

Con trol a el montaje visual de


los bl o ques con 105 Que se
constr uye un a pag ina . l os
bloq ue s so n caja s de
.1 Block 7.38 co nt e nido qu e s e repre sentan Ayuda Ccnfrcur ar
e n una zo na o región de una
pag ina we b .
'\ ~c es ltad j ocr Dasr.bca rd
tacnvacc t

Blo g 7 38 Acti va le s b lop s multi u su a rio .

Figur a 8.12: Pan el de gestión de mód ulos de Drupa!

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

8.7.4.3 INSTALAR MÓDULOS CO NTR IBUTI VOS


Dru pal llama módulos contributivos (ta mbién hay temas contributivos) a los m ódulos creados
por terceros. Instalar un módul o de ese tipo es simpleme nte seguir estos pasos:

[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

[2J Descomprimir el ar chivo. Tendre m os un directorio con el nombre del m ódulo.

[3J Copiar o subir ese directo rio a la ruta sites jalljm odules, partiendo desde la raíz de Drupal.

[4J Activar, si lo deseam os, el módulo desde el pan el de administración de m ódulos.


Otra opción es no descomprimir el archivo y seleccionar el archivo desde el cuadro de Añadir
Módulos cuyo enlace está en el pane l de gestión de módul os.

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

8.8 PRÁCTI CAS RE SUELTAS


Práctica 8.1: Creación de un sitio we b online mediante
WordPress.com
• Cr ea un n uevo sitio web utili zando el servicio onlin e de Wordpr ess, disponible en la URL
https: //es.wordpress .com

SO LUCiÓ N: PRÁCTI CA 8.1

[1] Vete a la dirección https:/ les.wordpress.com

[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 ~ . ' ~.

Crea el sitio hoy mismo.

Dire cción de l sit io

.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 ' ~:

¡Perfecto! Hasta ahora hemo s conseguido esto ...

la dlr eccle n del sitio

übrc.a.... worcpress.co.n

Solo necesitamos un poco más de Información...


Correo

lI ~r O: 3""~J org e sa n cheZ net

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.

Práct ica 8.2: Instala ción manual de WordPress en un serv i-


dor PHP

SOLUC iÓN: PRÁCTICA 8.2

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 • • • • • ~ •• • -_ •• _. • •• • • • -

mysql> GRANT ALL PRIVILEGES ON libroiaw1835.* TO


!
i -> "jefeiaw1835"@"localhost" IDENTIFIED BY "A1s2D3f4G5h6_!";
I ":IY?~ ! > FLUSH PRIVILEGES; . .... _ .. , ._
Con esto ya ten emos realizadas las tareas previas. Solo qu edan realizar los pasos má s senc illos,
los correspondien tes a la instalación en sí del CMS WordPress.

[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

~. WORDPRESS .ORG Español


Inióo Forosde5Clportc" Guiadetrldun.orn cou,bor. COrnacIo

.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 .

[5] Descomprimir el ar chivo ZlP descargado an teriorme n te , El resultado es un directorio que


se llama wordpress.
UNI DAD 8. IN STALACiÓN D E SISTEMAS DE GEST iÓ N DE CO NT EN IDO S - PRÁCT ICA S 351

[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.

Nomb re de la base libro ;a w l 835 El oo-nor e de 13 tese de enes en la que


de datos curer e s ejec.ner wcroo -e ss

Nom bre de Usua rio .ere e ...... 1835

Contraseña .; i s2D3f.1G5h6_!

Servidor de la base Iccelhcst Debetes coc er acceder desde tu ser-reo-


de da tos .'..e b Si t ccat ncs r no f¡Jn ~ IC' ~~.

Prefijo de tab la .wP_ SI qu.eres ee nna r vanasms ta.aoones j o;


wc-cr-r css en U ~ 3 se ta cas e c e C3t::.S

[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

t jerr plc de su.o WoróPress

Nombre d e U"UcHIO

Jefewp 1835

cesswc r d, dos veces

Tu (OU PO erecu ónicc

Prtvandac

[12] WordPress nos indicará que está instalado. Ya podremos acceder a todas sus fun ciones.

.Lo lograste!

[13] Comprobamos la instalación desde la dirección http://localhostllib roiaw-wp/wp -admin:


UN IDAD 8. INSTALACiÓN DE SISTEMA S DE GESTiÓN DE CONT ENIDOS - PRÁCTICA S 353

jefewp 1835

[14J Tras introducir el usuario y contrase ña, accederemos al dashboard de WordPress.

Práctica 8.3: Instalación manual de WordPress mediante


archi vo de configurac ión

SOLUC iÓN: PRÁCT ICA 8 .3

En realidad es el mismo tipo de instalación qu e en la práctica anterior, solo qu e, en lugar de


lan zar el asistente con las preg untas sobre la instalación editaremos el archivo de configur ación
de WordPress ma nualmente. Esto s son los pasos

[1J Realizar los pasos 1 al 7 de la práctica anterior


[2J Copiar el archivo wp-conitq-sam ple.php y llamar a la copia wp -confiq.p hp . El archivo se
encu entra en el directorio de wordpress (que si se han seguido los puntos anteriores se
llam ará libroiaw-wpi .

[3J Editar el archivo wp-co nfig.php y modificarlo para que te nga estos valores:
. . _. - o' - o.. . ._. .. o o ·0 ••• • . _ •• - - - . - - . - - - - __ o • • _-- ••

defme( 'DB_NAME' '1 ibroiaw1835' );


I

r,defm e ( ' DB_USER' 'jefeiaw1835');


I

I
defme('DB_PASSWORD ' 'A1s2D3f4G5h6_! '); I

defme('DB_HOST' 'localhost '); I

defme('DB_CHARS~T' 'utf8'); I

[4J Ir a la dirección https:/ /api.wordpress.org/secret -kev/I.I /salt/ y copiar el código que no s


ofrece esa página. Pegar ese código sustituy endo las líneas corres pondientes en el archivo
wp-confiq.php. Por ejemplo el código podría ser :

Idefine( .AUTH_KEY ' , . hF{7>WOY/ L++llhbA6uZy$3i j W1==+5CX+Kx ! : ue 3siF474~@R&fbP~L;lm~3K.;;,;_) ~o


:define ( ' SECURE_AUTH_KEY' , ' 8 17-( _Z+kQ=> G9=S, NFKP- , {Vt 7cw.AN4eL91 IX}bhcOhNqL, ]JKj Ey_YS, QRYzI ');
:define ( ' LOGGED_I N_KEY' , ' dM; <n3EujzY#g}q<69Ch1wlI+.cuII9nNnC;F {n4$2Fr Naul Il08P=JP8F8[ MNb0&' ) ;
define( 'NONCE_KEY', 'An2=rt 1qu-c?J@VxveWZ7gWGNlrW)Mg8jF#p=-,mgT4K3 ]gU]lx_t)hP BVSq3e');
. d~_fi.ne: ( ' ~.~H-;:S~LT' '. :.z..W!'h'4!"!.,,::L_@~Q L_Y!'!~[ ~ .~.!*_~ <.zc:-: >_t'y.~~~:-~!_~v~_Lt-aTN~~dA. 5R~~~-t:: ty~?=--,-~_ o _
354 IM PLANTACi Ó N DE APLICAC IONES W EB

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.

Práctica 8.4: Inst alaci ón de Drupa l en un servidor Linux


• Realiza una in stalación de e me Drupal z en un servidor Linux en el que ya fu nc ione MySQL
y Apac he con PHP

SOLUC iÓN: PRÁCT ICA 8.4

[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~ __ . ._.. _

[3 ] Movemos el di rectorio de Drupal a la ubicación y n ombre deseado. En n ues t ro caso el


acc eso a Drupal será m ediante http://localhost/lib roi aw-dp po r lo qu e:

[4] Preparamos el arch ivo de co nfiguración :


r- - - - -'
$ cd libroiaw-dp/sites/default .
t$ cp defaul_t_=-s_ett}Dg::;. ·_¡)_h~_~~ting~php ~
[5 ] Descargamos y preparamos el idioma espa ñol:
. - - - .-
:$ cd /var/www/libroiaw-dp/profiles/standard/translations
$ wget http ://ftp_:_drue..a_~' .~:r:-g{!L}~::;/tr~~~ations/7'.~/~!".l!~}L~!'"~p~.1. - 7 . 3~es . P.E ...
[6 ] Preparamos base de datos y usuario de MySQL:
' $ mysql -u root -p ' .. .. . .._. _.~.- .:;
[.!!1ys.c¡!> CR~~~~ .DATABASE libroiaw1210; _ __... ¡
U N IDAD 8, IN STA LACi Ó N DE SISTEM AS DE GESTiÓ N DE CO N TE N IDOS - PRÁCT ICAS 355

• ~ • • • .. • • >

: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):

Seleet an inst allation pro f ue Choose language

• Ste nd a rd Enclis h (bul! t -ll1)

Seve and cc nnnue


.. c hoo se pro ñte

" Choo se la ng uag e

Config ura ció n d e la base de dato s Confiqurar sitio

Tipo d e ba se de da ros >


INFORMACI ÓN DEL SITIO
• ~.h-SQ L . "'~ an a D B o equ iva lente
Nom br e de l s itio web ~
El upo dt base d atos dond e H' almacenaran los
sótc ad r nne un ucc de be se de datos, DO' le tocelncst

Nombre de la b ase d e dato s * Co rreo e lectrón ico d el s tu o e


.., Elegir perfil
.../ Elegtt perñt Iibroia",':1210 drupa!@jor gesa nchez net
L ::; ~ Correos e tect-ón.ccc e ut c má nc c s , como la Inforl1laC ¡;
../ Elegir un rdrome
El nombre de la bese de datos do nde ..e etroeceue-
se rvra o r an t e s de mstalar DIlJPal o ved e evte due ccron u c (Gorreo U$€ una i.illot':':iÓn que te
.t cmuno de r u ~ltl:'l p er e evnar Q\'C e sr c s COl r 'c~' S s'.:"<!.n ee

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

Co nt ra se ñ a de la ba s e de d at o s Nomb re de usu ario ~

~ Co n figu ra r siti o je f€dp12 10


St pum "e la uH!r¡:f!oór; d e es oecrc s lo s- !.I';PW S d e PUI1ti.
e xc e pc tón de m.o -os . 9,-"ol1e s v g' IIC'I'es baJOS
~ Of'CIONES AVANZADAS

Direcci ón d e co rreo ele ct r óntco ~

Guardar y cont inua r ~ @j o rg e s a--;;Ch ez n~Et-- - -

c ontraseña e
Forteleze de

Confirma r contras eña ~

l as contras e

Instalación de Drupa l completa

jFeli cid ades! u sted ha m st alado Drupal,

VI 5!t € su nUEVO smo,

[8 ] Modifica los permi sos del archivo de configuración


356 IMPLANTACiÓN DE APLICACIONES WEB

[10 ] Crea el directorio files (si no exist e) y da le permisos de escrit ura (si es necesario):

1$ mkdir /var/www/l ibroiaw-dp/si tes/alÚfile~ .<


L~__~b m~d _7_5~ ( ~é?r ¿~ ww/l í br o aw-dpys t.es./e l L'ütes ... __
í í _ _. :

8.9 PRACTICAS PROPUESTAS


Práctica 8.5: Instalar temas en WordPress
• Teniendo WordPress instalado yen funcionamiento , con sigue instalar un tema de la página
oficial de Wor dPres en el que pre dominen los colores verdes y ade más sea un dise ñocon la
barra lat eral a la derecha .
• Visita el sitio de http ://topwpth em es.com/ y consigue instalar y activar alguno de sus temas.

Práctica 8.6: Instalar t emas en D rupal


• Con Drupal instalado y en func ionamiento, consigue instalar y activar algún tema de la
página htt ps:llwww.drupal.org/pro ject/project th eme

Práctica 8.7: Activar Permalink en WordPr ess


• Consigue que WordPres s util ice en laces a las entradas en esta forma (supone mos qu e
WordPress se sirve en la dirección http ://1ocalhost/libroiaw-wp:
http ://lo calho st/ libro iaw-wp/entrad a!2oIs-07-10/n ombre-entrada
Donde 2 015- 07-IO es la fecha y nombre-entrada es el nombre del post.
• Escribe uno o dos posts y accede a ellos para comprobar que fu ncíonan cor rectamente los
perma links .

Práctica 8.8: Activar U RL limpias en Dr upal


• Cons igue que WordPress utilice URL limpias
• Compruébalo escr ibien do un artículo y accedien do a él con el nombre.
http://lo calhost/ libroiaw-dp/node/2
Suponemos que el número de nodo es el 2 , si no , lo cambiamos por su núm ero .
• Consigue acceder aho ra a ese artículo con el alias: ht tp://l ocalhost/libroiaw-dp/prueba
U NIDAD 8. IN STALA C iÓ N DE SISTE M AS DE GEST IÓ N DE CO NTE N IDOS - PRÁCT ICAS 357

Práctica 8.9: Instalar Joom la!


• Instala loomla en un servidor PHP con MySQL.
• Comprue ba la in stalación.
• Modifica el te ma po r defecto y cám bialo por otro de tu gusto.

Práctica 8.10: Instal ar Drupal mediante Drus h


• Dru sh es una utilidad auspiciada por el equipo de Drupal qu e permite automatizar mu chas
tar eas com o ins talar Drupal, instalar módulos, temas , realizar actualizaciones, etc.
• Documénta te sobre como instalar dru sh y hazlo en un a in stalación Ubuntu en la que te ngas
funcio nan do Apache + PHP +MySQL correctamente.
• Usa dru sh para instalar Drupal en esa misma máquina.
• Consigue in stalar drush y con él instalar Drupal en una máqu ina Windows en la qu e est e r

funcionando Apache y MySQL mediante el paqu ete XAMPP.


358 IMPLANTACIÓN DE APLICAC IONES WEB

8 .10 RESUMEN D E LA U N IDAD


WordPress es el CMS m ás popular gracias a: su facilidad para la instalación y configur a-
ción , diversid ad de opciones de hosting, número y calida d de plugin s y tem as, esté tica,
documentación y facilida d para la personalización.

Las entradas o post en Wordl'ress son los contenidos qu e cambian a menudo y qu e se


org anizan por su fecha de publicación. Las páginas so n co ntenidos más estáticos qu e
sirven co mo información genera l y qu e n o se organizan en clave t em poral.

Además WordPress maneja términos como: ta xonomía, etiquetas, categorías, temas,


plu gin s, widgets, metadatos, permalinks, enlaces, menús, usuarios y rol es.

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 configuración de WordPress se realiza a través del ar chivo wp-config.php situado


en la raí z de WordPress o en la raí z general del sit io web en el qu e esta mos publicando
WordPress.

• 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 .

La arquitectura de Drupal sigue un modelo de 5 capas: nodos, módulos, bloques y m enús,


perm isos y plantillas.

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

8.11 TEST DE REPASO


Comparado con Drupal ¿Cuá l di rí as qu e raízServidorWeb/wp-config.php
son los puntos fuertes de WordPress? raízWor dPress/wp-settings.php
Facilidad de uso raízServidorWeb/wp-settings.php
'I Número de temas
¿Qué requieren tanto WordPress como
Crear todo tipo de sitios web
Drupal para poder lanzar su instalador?
d) Potencia para crear aplicaciones web a
,,) Un servidor web con PHP y un ser-
medida
vidor MySQL con una base de dato s
Comparado con WordPress ¿Cuál dirías creada y un usuario con acceso a la
que son los puntos fuertes de Drupal? base de datos
a) Facilidad de uso Un servidor web con PHP y un ser-
vidor MySQL. El usuario y la base de
1\ Número de temas
dat os los pueden crear ellos
L\ Crear todo tip o de sitios web
Un servidor web con PHP y un ser-
:J Potencia para crear aplicaciones web a vidor MySQL de la qu e sabemos la
medida contr aseña
- En terminología de WordPress, un post Un servidor web con PHP y un servi-
es... dor de bases de dato s con un a base de
dato s creada y un usuario con acceso
d' Un formulario de introducción de
a la base de datos. WordPress requiere
datos
MySQL, Drupal puede utilizar otros
Una tarea que tenemo s pendiente servidores de base de datos
Un dato oculto
¿Dónde se almacena por defecto el archivo
d) Una entrada de blog
de configuración de Drupal?
- En un CMS ¿A qué se refiere el término .,) ra ízl.irupa l/settíngs.php
taxonomía? h) raízServidorWeb/settings.php
1) A la estructura de enlaces del sitio c) raízDrupal/sites/default/wp-settings.
I ¡ Es un sinónimo de back-end php
A la jerarquía de términos que permi- raízDru pal/ si tes /all/wp- settings.ph p
ten clasificar el contenido
9.- ¿Dónde se almacenan los temas que des-
Solo a las etiquetas y no a las
carguemos en WordPress?
categorías
raízWordPress/themes
(' Solo a las categorías
raízWordPress/wp -inc1udes/ t hemes
¿Qué es un Widget de WordPress? raízWordPress/wp-content/themes
Un componente visual que se puede raízWordPress/wp -cont en tjuploads/
añadir a las barras de la web themes
Un plugin, una extensión del sistema
J I - ¿Dónde se almacenan los temas que des-
Un rol de usuario
carguemos en Drupal?
Q I Un elemento de la taxonomía
raízDrupal/themes
¿Dónde se almacena por defecto el archivo ra ízwordl'ress/includes/themes
de configuración de WordPress? raízWordPress/sites/defaultjthemes
a) ra ízwordl'ress/wp-config.php () raizwordl'ress/sites/all/themes
UNIDAD 9

GESTiÓN DE LOS COMPONENTES,


CONTENIDO Y APARIENCIA DEL CMS
OBJETIVOS
- Reconocer las características fundamenta les de la pu blicación de co nte nidos en los C MS
- Publicar conten idos de dife re ntes t ipos
- Personalizar la fo rma de mostrar el conte nido
- Utilizar elementos que permitan categorizar el contenido para faci litar su búsqueda
- Crear y gestionar comentarios de usuario
- Administrar la estructura de enlaces y menús del sitio web
- Insertar y gestionar plugins y componentes que mejoren la funcionalidad del sitio web

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

9.1 BASES DE LA PUBLICACiÓN DE


CONTENIDO
En todos los CMS la base de su funcionamiento consiste en la publicación de entradas en el
sitio web y qu e esas entra das (o post en la t erminología de WordPress) las pueden crear usua-
rios que no son adm inistradores. Los ad ministradores tien en la posibilidad de gestionar tod o el
con te nido, pero la idea es qu e el con te nido lo creen usuar ios qu e no son ni adm in ist radores ni
gra n des conocedores de los len guajes y tecnologías de creación de sitios web.

Al final tod o lo qu e se publica me diante un CMS se aca bará convirtien do en código HT ML


traducible por un navegador. Esto implica que cualquier pub licación tie ne que te ner en cue nta el
formato y su ubi cación fina l.

En gen era l, de cara al con te n ido podemos distingui r, independientemente del CMS estos
elem entos:

• El contenido en sí qu e publicamos. Al cua l se le puede dar format o HTML para distin -


guir el tex to .

• 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.

Añadir nueva ent rada


Publicar

t : sta do Borrador ~
B 1 - !~ _ " - _ _ _ ~ U _
m: j:'u o ":::5' inmediata mente ~

Format o

trn ..gen

Ca

Figura 9.2: Panel de creación de nu evas entra das

Al crear una nueva entrada hay qu e realizar estas acciones :


Indicar el título, usando el primer cuadro de entrada de texto del panel de creación de
en tradas. El título debe indicar de form a clara el contenido que tendrá la entrada. De
esa forma se podrá clari ficar la temática del contenido de esa entrada. Ade más, un buen
título es clave para mejorar el posicionamiento en los buscadores.

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.

• Indicar categorías y etiquetas (tags) relacionadas con la entrada qu e estamos escribiendo.

• 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.

9.2.2 OP CIONE S DE PUBLICACiÓN


El botón de public ar se encuentra en un pane l desde el qu e se pu eden modifi car opciones de
publi cación. Las opcion es disponibles en este pane l son:

• 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.

Tiem po de la publicación. Lo normal es que aparezca elegida la opción Publicar inme-


diatamente; lo que significa que el post aparece en cuanto se pu lse el bot ón pu blicar.
Pero pod emo s pub licar en un a fecha concreta, como por ejemplo, a las 8:00 de l día
siguiente.

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

9.2.4 ESTABLECIENDO CATEGORíAS Y ETIQUETAS


Tanto las categ orías como las etiquetas nos perm it en organ izar las entra das qu e haya-
m os creado. Eso permitirá bu scar entrada en base a estos concep tos, lo qu e facilita mu cho las
bú squ edas.

9.2.4 .1 CATEGO RíAS


Las categorías son texto s (cortos) qu e describen el tema sobre el que tr ata el post. Si estamos
escribiendo un post sobre el resultad o del último part ido de la final de liga N RA de baloncesto ,
las categorías pu eden ser deportes , baloncesto, ocio y N RA. Adem ás, se pueden jerarquizar; es
decir, baloncesto pu ede ser un a categoría hija de deportes. Con lo qu e bastarí a con asignar la
categor ía NBA para saber qu e estamos hablando de baloncesto que, a su vez, es un deporte. Si no
asigna mos categ oría, se asigna a nue stra entrada la categoría Sin cate goría (Uncategorized). No
es bu en a idea ignorar las categ orías, cada post al men os debería tener asignada una.

------- ~
Ocio Inform át ica

De po rtes Cine progr~ ~e dat os


r >.
Baloncesto Fútbol
/I~
Acción Drama Co media

/"'-
Guerra Suspense

Figura 9.3: Ejem plo de categ orías jerarqu izad as.

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

Añadir n uev a ceteg orta

-.. :-. :Jn

mto rrna ttce

Bese5oc datos

fl'S'¡¡r"~S le .'c!s:":r; :trY;',g,:" ', d, jo U-:L de! '10mt,·=, .>;; ;.,'(


;'~IO · es: ~. ~ ;I~ Ct;,'<; s J CJ r.: ,(' 'lC S.J,'::; 1(': -,; ;, nu ':'~' cs y
:;~ ' , O ," '~S
- r rogr amectcn

Ocie

~i]:; ((J· e;:::r.~s e 0';(' ("(1., ce .':re, e: C[J( 'O S p.Ii:o;:r, : ( ~ e;

ncrcv.os ;-CO".;;;S te .<"{ U";;J ~ r:··-;Ol , v do"J:J:z :-'D:::" 'lcc::;.::


:,] e -cgo: ~ [;,,0,,;>j S.,::"! ,J.~ •• · c· ::; ''''1.'n!c 0:1: occt - Deportes

- - aat on cest o t.xo-x estc

Figura 9-4: Pan el de cat egoría s

Desde ese panel podremos:

• 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.

9.2.4 .2 TAGS O ETIQUETAS


La idea es similar a la de las categorías. Son palabras claves que se asignan a un det erminado
post. La diferencia es que su pretensión es menos jerárquica. Aunque no se re comienda hacer
excesivas categorías, sí es recom endable utilizar numerosas etiquetas; aunque en cada post es
mejor elegir 5 o 6 como mucho.

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.

Lo ideal es qu e reutilicemos, si es posible, las mismas et iqueta s en diferentes post . La finalidad


es buscar post qu e enca jen con un det erminado tema o palabra clave. En cualquier caso es un a
mu y mala idea denominar a la misma idea con dos nombres de etiqueta distintos; por ejemplo no
debemos utili zar el tag Smartpho ne en algunos post y Teléf ono in teligente en otros, se dificultaría
la búsqueda de entradas sobre ese mismo conce pto .

9.2.4.3 NAV EGAR POR EL SIT IO UTILI ZAND O CATEG O RíAS Y


ET IQ UETAS
Suponiendo que nuestro sitio WordPress tiene la URL htt p://misitio.com/word press, si a ña-
dimo s la ruta:

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 O PCIO NES AVAN ZADAS EN LA PU BLICACiÓ N


DE ENT RADAS
9.2 .5.1 PANEL DE OPCION ES DE PANTALLA
El aspecto del panel de creación de post se puede mo dificar haciendo clic en el botón Opciones
de Pantalla (Screen Optionsi dispo nible en la parte superior de la pan talla. Al hacerlo aparece un
panel (Figura 9.6) que nos perm ite mostrar u ocu ltar algunos apartados en el panel de edición de
entradas. Conviene siempre tener en cuenta este panel si observamos que no tenemos a la vista
ninguna característica en la edición de entra das.

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.

9.2.5.3 CO ME NTAR IOS


Hay dos pan eles relaciona dos con los come ntarios. En el primero indicamos si permitimos
comentarios en cada entrada, de ser así, sobre cada entrada se pod rán realizar com entarios por
parte de los usuarios del sit io web.

Comentar ios

.,,¡ Perrrn: ir com €:'l:ar Gs.


.,,¡ Perrrutrr t '"ackb3C "S v p l n~ b ¿¡c -5 en esrs página.

Figura 9.S: Pan el de co me ntarios

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 .

9.2.504 CA M POS PERSON ALIZADOS


Se tr ata de otro panel (en inglés Custom Fields) qu e nos permite esta blecer metadatos per-
sonales sobre un a determinad a entrada. Cada metadat o se compone de un nom bre y un valor.
Estos metadato s no se mu estr an cuando se visita la página. Realm ente se usan para establecer
informaciones que pueden ser interesantes para los pro gramadores de aplicaciones.
Mostrar e n pantal la

Cror e'"'ll¿,' 1,) 5

Diseño d e pan ta lla

Figura 9.6 : Panel de opcione s de pa ntalla

9.2.5.5 M EJ ORA DE LOS PERMALlNKS


En el apartado 8.3.3 ''Ajuste de Permalinks", en la página 332 , se explicó el funcionamien to
de los Permalink s. Cua ndo esc ribimos un nu evo post , WordPress le asigna el permalink corres -
pondiente y lo hará basándose en el título del mismo. Eso provoca que el permalin k no sea muy
amigable.
Sin embargo, pod emos m odificar la parte de la dir ección corres po ndiente al tít ulo del post,
para hacerla más amigable. Hay dos maneras de hacerlo:
UN IDA D 9. GEST iÓ N DE LOS COMPONEN TES, CONT ENIDO Y APARIENCIA DEL CM S 369

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)

La NASA descu bre un nuevo planeta


Enlace permanente: hnp. z/localoost /l IYOL~'.·; -'...'pj :a1 5;07/25/ s -n asa-desct.o ..-ru.evc- pts nera/ ='d r:.5c r '¡'t ' tni~.'~d:.

La NASA descubre un nuevo planeta


Enlace permanente: h t1p : lllr' cal hostll lbro i .3w-v¡p/201 5/0 7J2 5/'lU F~(o·pi ,;n eto l E: :¿-' ver e-~r.:. ja

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.

9.3 PU BLICA R ELE ME NTOS MULTIM EDIA


EN WORDPRE SS
9.3.1 IMÁGENES
9.3.1.1 AÑADIR IMÁGEN ES

msert er multimedia Insertar multimedia

Arrastr a archivos a cualquie r lugar para subir los

Figura 9.9: Panel de inserción de eleme ntos mu ltim edia


370 IMPLANTACiÓN D E APLICACION ES W EB

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:

• Título de la imagen (Title). Es el texto qu e aparece en un peque ño cuadri to de texto


cuando un visitante arrime el ratón sobre la imagen . Se asocia, en definitiva, al atributo
title de la etiqueta im g de HT ML correspo ndiente a esa imagen.

• 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 .

• Descripción (Descripti on). Espacio dedicado a escribir un a descripción más extensa


sobre la imagen . Esa descripción solo aparece si elegim os ciertos temas como plantilla
de nuestro sitio.

• Alineación (Alignment) . Posición de la imagen en la entrad a. Si elegimos izquierda, la


image n dejará qu e el texto sigui ente fluya a su derecha. Si elegimo s derecha, el texto
fluirá a su izquierda. Tenemos también la opci ón de no alin ear y entonces la imagen
aparec erá en el punto en el que la insert em os sin dejar que el texto la circunde.

• 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.

9.3 .1.2 M O DI FICA R IM ÁG EN ES IN SERTA DA S


Tras insertar una imagen podremos modificarl a haci endo clic sobre ella. Aparecerá una
peque ña barra de herramientas desde la que directamente po dremos camb iar la alineación, edi-
tar la imagen (bo tón con forma de lapicero) o elimina rla del po st (botón en forma de equis).
UNIDAD 9. GESTiÓN DE LO S CO M PO N ENT ES, CO NTE N IDO Y APARI ENCIA D EL CMS 371
- - - -- - --- - - -- - - - -

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

serscton de! en'ece

Fig ura 9.10 : Pan el de edición de im agen - Detalles de la im agen

9.3.1.3 M OD IFICAR IM ÁGEN ES EN LA BIBLI OT ECA MULT IM EDIA


En el panel de administración de WordP ress, disponem os en el apartado Medios, de un pan el
que no s mu estra todos los m edios multimedia inse rtados . Desde ahí podemo s elegir un a imagen
y, tras hacerla clic, modificar sus propiedades.

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

Rotar la imagen a la izquierda o a la derecha. Se utilizan para pasar la imagen de orien-


tación horizontal a vertical y viceversa. Son los botones t5J y 1t1.
Volte ar la imagen horizontal y voltear en ver tical. Boto nes ~a y g- respect ivame nte .

• Modificar el tamaño original de la imagen. WordPress realizará un escalado de la


misma.

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.

9.3.1.4 CA M BIA R LO S TA M A ÑOS POR DEFEC TO DE: LAS IMÁG EN ES


WordPress define por defecto tr es tama ños para las imáge nes de la biblioteca multim edia:

• Para miniaturas (Thu m bna ils). 150X I50 píxeles.

• Medio (Medium) . 300X200 píxeles.

• Grande (Large). I024XI024 píxeles.


Estas medidas pueden ser modificadas desde el cuadro de ad ministración si vamos a Ajustes-
Medios (Set t ings -Me dia).

Ajustes mu lt imed ia
Tamaño de la s imágen es

Tamaño de la miniatura 4.n C"10 ' so ;..!twró · 50

Tamaño medio

Tamañ o grande Anc'l ura rnaeene . C'2': -Jtu ra má)jma 'i 02.:

Sub ida de arc hivos

./ orean.zarrrus archivossuo.cos e ~ carpetas basadas en mes yaño

'MfMt5

Figura 9.11: Panel de ajustes multime dia


UNIDAD 9. GESTiÓN DE LOS CO MPONENTES, CONTEN IDO Y APARIENC IA DEL CMS 373

9.3.1.5 USO DE IM ÁGENES DESTACADAS


Muchos temas de WordPress perm iten la posibilidad de ut ilizar lo que se conoce como Imagen
Destacada (Featured Image). Esta es un a imagen que no sirve para documentar el texto , sino que
se utiliza como elemento estético de un post o una página. El enlace Asignar imagen destacada
(Set featured image) permite subir una imagen o elegirla de la biblioteca de medio s.

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 A NAD IR OTROS ELE MENTOS M U LT IM ED IA


9.3.2.1 VíD EO
Los vídeos se a ñaden de forma aná loga. Sin embargo , en general, lo habitual al incorporar
vídeos es hac er referenci a a un vídeo almac en ado en un servicio de strea ming de vídeos, como por
ejemplo YouTube. En cuanto coloquemos un enlace a un vídeo de YouTube, WordPress detecta
el destino del enlace, entendiendo que es un destino multimedia, con lo qu e el vídeo ap arece
directamente en nu estra entrada del blog.

ACTIVI DAD 9.1:


• Crea un a nu eva entrada en tu ins talación de WordPress.
• Colocaremos en la ent rada el vídeo oficial del día del Niñ o Ho spitalizado . Para lo cual basta
pegar el enlace: https://wqww.youtube.com /watch?v=iioX9mngvkw .
• Ob serva el resultado final en el sitio web.

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

9.4 CREACiÓ N Y GESTiÓN DE


CO M ENTARIOS EN WORDPR ES S
9.4.1 INTRODUCCiÓN A LOS COMENTARIOS
En la actualidad, la mayoría de sitios web proporcionan a los usu arios algún mecani smo de
participació n en los contenidos. En el caso de los blogs, es prácticamente obligado qu e los usuarios
del sitio pu edan publicar sus opiniones. En el caso de Vv'ordPress se hace a través de come ntarios.

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.

9.4.2 PUBLICAR CO MENTARIOS


Cua lquier per sona qu e acceda a un sitio web en el qu e se permit e publicar comentarios, pu ede
hacerlo a tr avés de un enlace qu e suele te ner el texto Publicar un comentario. La ubicación de est e
en lace dependerá del tem a que hayam os elegido , aunque habitualmente suele esta r localizado
bajo el título del post.

ASTRO NO M íA , CURIOS IDAD ES

LA NASA DESC U BRE U N


N UEVe) PLANETA

La NASA ha descubierto un planeta sim ilar a la Tierra , "Un paso má s


cerca para encontrar una Tierra 2.0 ", Con estas palabras . John
Grunsfeld . inv est igador de la NASA. anunció esta mañ ana (23 de
j ulio ) el planeta Kepler- 4 52b que la misión Kepler ha descub ierto a
un "viej o primo de la Tierra "

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

En el caso de qu e no s hubiéramo s dado de alta en el pan el de administració n de WordPr ess, no


se nos preg un tará nada y se n os permitirá directam ente publicar el com en tar io (ya que WordPress
sabe qui énes somos). Para las personas que no son usu arios regist rado s en WordPress, se les pedirá
un correo electrónico, un nombre y la redacción del comentario. El texto del comentario puede
incluir algunos elementos HTML, WordPress indica en la ventana de redacci ón del comentario,
cuáles son los permitidos.
UN IDAD 9. GESTiÓN DE LOS CO M PO N ENT ES, CO NT EN IDO Y APAR IENCIA DEL CMS 375

DEJA UN COMEN TAR IO El hec ho de pedir nombre y email no garantiza evitar


un com entario de tipo spam generado automáticamente
por un robot.
Icornta e
Un usuario que sea usuario de WordPress o que dis-
ponga de una cuenta Gravatar, servicio que prop orcion a
Correo etect rontco '
perfiles de usuario en la nube, no necesita indicar nombre
ni emai l, ya que está valida do .
web

Una opció n para evita r spam es solo perm itir qu e solo


Comenrerto los usuarios registrados pue dan escribir comentarios. En
Es una noticia esp ect acular. Es un descubtrrniento que gene ra
més preguntes. ¿Realment e hab rá vida e n ese plan e ta"
este caso no correremos el riesgo de qu e se den de alta
usuarios no deseados, ya qu e para que ese servicio sea efi-
caz, deberem os permitir que los usuarios se den de alta a
sí mismos.

9.4. 3 ADMINI STRAR


CO M EN TA RIO S
"HH.II+*
Todas las cues tiones y problemas con los come nta rios se
Figura 9.13: Ejem plo de redacción de pu eden gestionar desde la zona de Ajustes de Comentarios
un nuevo comentario (Settings-Comments ).

Las opciones que permite ajusta r el panel son:


Permitir que se publiquen comentarios en nuevos artículos. Si elimina mos esta casilla,
no se permitirá publicar comenta rios en nu evos posts.

• El autor del comentario debe re llenar nombre y correo electrónico. Es un a prime ra


medida de segur idad contra el spam, pero ya hemos come nta do qu e hoy en día hay
robots capaces de publicar spam porque saben cómo indicar un nombre y un ema il
inexistentes.

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.

• Separar los comentarios en páginas de x comentarios . Cuando el número de come n-


tarios de nuestro sitio es mu y alto, esta casilla permite pagina r dichos come nta rios para
una m ejor legibilidad.

• Enviarme correo cuando.... Permite qu e recibamos un corr eo cuando hay alguien qu e


envía un come ntario y/ o cuando se requiere moderar un come ntario. Es un aviso de
376 IMPLANTACiÓN DE APLICACIONES WEB

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

" )us':espo rdd('ctodelas


entra das

tnvrarme cn cc-rec
etectronc c ruanoc

P'H~ que un comentario


aparezca

t.'3',:U1er U" ccrnentanc en espera s ~(''iél (''1(- rn.~ :· ce •


SP3!TI en co-reme vcs es e !F '''l'nL. r:: ~I ;;)(Je eoa ces

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$;: -

Figura 9.14: Panel de ajust es para la administra ción de co me nt a rios

• 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.

La segunda casilla, El autor del comentario debe tener un comentario previamen te


apr oba do, es muy interesante. Hace que la primera vez que una person a escriba un
come ntario ten ga qu e ser aprobado para qu e se publique. Pero si esa person a hace más
comenta rios , se publi carán automáticame nte . Digamos que valida mos a los usuarios por
el primer comentario, lo cual en un gran porcentaje es una estrategia suficiente de con-
tro l de los comentarios.

Mantener un comentario en espera si tiene más de x enlaces . Los comentarios de tipo


spam se caracterizan por incluir numerosos enlac es, de ahí el interés de esta casilla.
UNIDAD 9. GESTiÓN DE LOS CO M PO NEN TES, CO NTEN IDO Y APARIEN CIA D EL CMS 377

Mantener en cola comentarios con ciertas palabras o contenidos. Un gran cuadro no s


permite indicar los té rminos prohibidos. Intenta evitar el spam o los come ntarios poco
apropiados, en fun ción de su conte nido.

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 .

9.4.4 M O D ERACi ÓN DE CO ME NTARIOS


El apartado Come ntarios del panel de administración no s permite ver y gestionar los comen-
tar ios de los usuarios. En ese apartado apar ecen los comentarios publicado s o pendien tes de
pub licar.

U!, 't' e," ~ -_,.,,: ¿


O \'~ · U",~"l~J

Figura 9.15: Pan el de gestión de come nta rios

Al arri ma r el ratón sobre un come ntario concreto po dremo s:


Aprobar (Appro be). Aparece en los come ntarios pend ientes de aprobación . Esos comen-
tari os no se publican hasta no hacer clic en este enlace.
11 Rechazar (Unapprob e). Opción contrario a la anterior. Hace que un come ntario previa-
m ente apro bado, pase a esta do de espera para su aprobació n. El comentario, por ta nto ,
dejará de estar visible.
Responder (Replay). Perm ite directam ente res ponde al come ntario.
Edición rápida (Quick Edit) . Perm it e m odificar el contenido del comentario. Es una
opc ión qu e tie ne la sombra de la falta de ética, al poder ser utilizado como labor de
cen sura.
• Editar (Edit). Hace la misma labor, pero a través de un pane l de edición más com pleto.
Spam. El comentario se marca como spa m.
• Papelera. Mueve el comentario a la papelera.
378 IMPLANTACi ÓN DE APLICACION ES W EB

ACTIVIDAD 9.3: PRO BAR LA GEST iÓ N D E CO ME NTAR IOS


• Para prob ar los come ntarios y entender sus posibilidad es de gestión, es inte resante conocer
cómo funciona n los usuar ios. Lo cual se explica en la siguiente un idad.
• En dicha unidad hay una práctica comp leta de publicación de entradas y come ntarios con
diferentes usuarios, se trata de la Práctica ro .r.

9.4.5 HERRAM IE NTAS ANT ISPAM DE


CO ME NTARIOS
Como se ha explicado anteriormente el spam es el gra n riesgo de los sitios qu e perm iten
come ntar las entradas.
Para evita rlo, inicialme nte WordPress aporta este fun ciona miento de los comentarios:

[1] Un usuari o publi ca un comentario.

[2] Si el usuario es n uevo, el comentario se debe aprobar para ser visto .

[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.

9.5 CREACiÓN DE PÁGINAS ESTÁTICAS


EN WORDPRESS
9.5.1 PÁGINAS y PO STS
Hasta este mo me nto hem os visto cómo gestionar tod os los aspectos de la pu blicación de
entradas, lo que comúnmente se conoce como post. Los post s está n pensad os para contenido
UNIDAD 9. GESTiÓN DE LOS CO MPONENTES, CO NTEN IDO Y APAR IENC IA DEL CMS 379

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 .

Ya se ha comentado an teriorme nte que WordPress es conocido como CMS de gestión de


blo gs. De ahí las enormes capacidades que tiene de administrar este tipo de conte nido.

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).

9.5 .2 CREAR PÁG INAS


Una vez más, se hace desde el pan el de con trol de admin ist ración (ruta jwp-admin desde la
raí z de n uestro sitio). Un apartado en el menú principal llamad o Páginas (Pages) no s permite
exam inar las páginas existentes y crear n uevas.

Crear una págin a cons iste en lo siguie n te:

[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.

Edita r pág ina .o.,,, ""ov.


Acerca de es ta página Publi car

Páginíl de prueba sobre el tuocton arruent o ce w or dr'ress


Stmpl emenre se pub li can en t r ad as v co ment ar io s o e pru eba

Atr ibut os de pági na

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

Figura 9.16: Pan el de edición de págin as


380 IM PLANTACIÓ N DE APLICACION ES WEB

[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.

• Autor. Para mo dificar el autor de la página .


• Slug . Permite indicar la parte final del perma link (que normalmente es el tít ulo de la
página) de acceso a la página.

• Come ntarios. Permite indicar si permitimos o no come ntarios en la página. Es bastante


habitual no permitir comenta rios en los contenidos estáticos.

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.

[4] Publi car la página.

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).

9.5.3 EDITAR PÁGINAS


En el caso de necesitar m odificar páginas existentes , disponemos de dos posibilid ades:

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

Páginas "'4dir I'lUfh',l

Figura 9.17: Panel de edición de página s

Acceder a la página utilizando su URL o un enlace a ella. Si nos hem os da do de alta


previam ente como usuarios del sitio y ten emos permiso de edición, aparecerá un enlace
con el texto Editar qu e nos llevará al pane l de edició n de esta página.

9.6 PERSONALIZAR LA APARIENCIA DE


UN SITIO WORDPRES S
9.6.1 TE MAS
Como se ha comentado anteriormente, un a de las claves del éxito de WordPress es la gestión
de los llamado s Tem as. Los Tem as son plantillas estéticas qu e se aplican al sitio y qu e determinan
su apariencia y funcionalidad. Mediante los temas se det erminan los colores, fondo s y tipos de
letr a, tanto de las entradas com o de las páginas, pero tamb ién la ubicación y conte nido de los
menú s de navegación del sitio.

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.

9.6 .1.1 PERSONALI ZAR LA APARI EN CIA


Para que nuestro sitio apor te personalidad propi a, es in teresante dedicar ti empo a seleccionar
un tema qu e se par ezca a lo que deseamos. Despu és, lo lógico es personali zar la apariencia del
tema.
382 IM PLANTACi Ó N DE APLICACIO N ES WEB

La personalización del tem a se puede realizar desde el menú Apariencia (Appearance)-


Personalizar (Custom ize). En ese apar tado, y de manera sencilla, podremo s modific ar la mayoría
de aspectos del sitio . Hay qu e tener en cue nta que el pan el de personalización varía según el tema
elegido.

=:.0; : ;:: : . •
- :~ - .-."'. Ejemplo de sit io WordPress

core-es

La NASA de scubre un nuevo


planeta
La !\ASA ha desculuerto un planeta snnilar él la Tif'IT;". ·rlll'C1S0 mas
Wh1 Tierra ~.o ·' Con estas pa lah ras.john
cerco para t' l1COll! ra r
Gru nsfeld. inves tigador elfo la K-\SA.an unc ió tosta mañ an a (23 de
julio) el pjaneta k eple r -I sz b q ue la m isión Kepler ha descubiert o a
un "\'iejo primo de la Tierra

Figura 9.18: Aspecto del panel de personalización de te mas para el tema Twenty Fifteen

M odifi car el t ítu lo y descripc ión


Basta rá indi car el nu evo título y descrip ción. Una casilla nos permi te in dicar (en la mayoría de
temas) si se mu estra el título y/o la descripci ón en las páginas.

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.

9.6.1.2 PERSO NALIZAR Y CREAR TEMAS


Todos los temas que hayam os descargado se encuentran en la ru ta wp-content/thernes, den -
tro del director io raíz de WordPress . Realmente, un tema es un conjunto de archivos que tienen
un a estructura concreta y que se pue den, por su puesto con mucho cuidado, m odi ficar. Es más,
nosotros mismos, con las pautas apropiadas pod emo s crear nuestros tem as.

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.

Estructura de los temas

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 ;
?>

Funciones de uso habit ual en la creación de plantillas


Dentro del código de los ar chivos PHP se pu ed en utili zar numero sas fun cione s aportadas por
el API de WordPress. Algunas de ellas son :
get.Iieaderf). Incluye en el código el archivo de cabece ra, header.php.
ger footert). Incluye en el código el arc hivo de pie de págin a, fo oter.php.
• get j sid ebarf). Incluye en el código la barra lateral, sidebar.php.
is_horneO. Verd adero si está mostrando la página de inicio.
11 h ave.ipostsí). Devuelve verdadero si aún quedan entradas por recorrer.
• the. postf). Prepara el siguien te post en el bucle de lectura de entradas
• thecontentf). Mues tra el contenido del po st actua l.
the j.itlet), Mue stra el título del po st.
• the TD ü. Identificador del post actual.
11 t he j perm alin kf). Muestra el permalink del po st actual.
11 t he j.imeí). Mues tra la fech a y hora del post.

• thejauthorí), Mues tra el autor del po st .


t h ej.agst), Mu estra las etique tas relacio nadas con el post .
the.category í). Mues tra las categ orías relacionadas con el po st.
386 IM PLAN TACiÓN DE APLICACIO NES W EB

editjpcst Tinkf) . Enlace para editar el post.


• commentjformf). Formulario para escribir un comentario.
• get j.emplateí). Nombre del tema actual.
• get j.ernplate jdirectory urit). Devuelve la URL al directorio del tema act ual de
WordPress.
get_stylesheecuriO. URL a la h oja de estilos (archivo style.css).
get_stylesheet_directory_uriO. Devu elve la ruta al directo rio de hojas de estilo.
gecsite_urlO. URL a la raíz de WordPress.
• get_p ostsO. O bt iene un array de post s. Admite par ámet ros indica dos en un ar ray qu e
permiten defin ir qué posts recogem os. Aplican do la fun ción setup_postda ta O a cada
elem en to del ar ray resulta do de gestr posts, pod em os aplicar las funciones an terior es
para obte ner in formación de cada post.a la qu e se pasa un elemento de ese array, perm ite
utilizar las funcio nes. Ejemplo de uso senc illo:
<?php
$ lista=get_posts();
foreach ($ l i sta as $po st):
setup_postdata($ pos t);
?>
<h1 >< ?php the_ title ( ); ? ></h1 >
<?php e nd f or eac h ; ?>

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 ; ?>

Ahora las entradas se muestran de forma aleat oria. En la dir ección :


h tt ps://c odex.wordpress.or g/es:Eti quetas de plantilla/ge t posts

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.

9.6 .2.2 CREAR MENÚS PERSONALES

Editar Menús Gestionar lugar es

Estr uct ura de l Men ú


CC C:E ( ,,:::;' E ",1:1","1:0 e-, t N~I'¿'"l e e.e 0,,,,1 '2~-,,:, »:« : ~I':, e-, s ' 2 ( :;0 ot.e bev s ¿, oerec va de c'e-r.eotc
':'CHCC'(lee:::<I =.¿>g'~" oa -a -r.ort-ev-nss occctes 0'2 ,e·¡'J!¡V3C L"I
P';g -a co (;,,"":.Ic.

r uno s.daoes

Infor m á tica

Ent radas Base s de dato s

Enlaces personalizados
Progra m a ción

Categor ías
Cine
Et iq uetas

Ocio
scrmetc

Dep ort es

Opcio nes del Menú

'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

Los pasos son los siguientes:

[1] Desde el pan el de control de adminis tración ir a Apariencia (Appearance) - Menús.

[2] Escribir un nombre para el menú.


[3] Hacer clic en Cre ar Menú.

[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.

Etique tas. Similar al anterior, pero utilizan do nombres de etiqueta.

• 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.

[6] Elegir las opciones del menú

• 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.

• Elegir en qu é posición se coloca el menú. Dependiendo del tema habrá varias. En la


Figura 9. 20 se observa que el tem a permite dos posiciones para el men ú .

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).

En el panel de configuración de Widgets aparecen todos los Widgets disponibles y cómo se


ubican en la barra lat eral u otras barras. Cada te ma pu ede asignar un a serie distinta de barras , por
lo que las posicion es posibles para colocar widgets depend en del tema en uso.
U N IDAD 9. GESTIÓN DE LOS COMPONENTES, CO NTEN IDO Y APARIENC IA DEL CM S 389

Área de widget s

Af( h i ~o s aurc er
Enrradas r~ c i enl e s

ccm ente-tcs recreme s

Archivos

c oroente nos reciem es

Menlipe rsona!llil do

~':< ..... - "5S y '" >, .. , ,;,0 '


·... : .--:::· c ~ ~ - ,~ -

NuO€ de etiquetas

Figura 9.21 : Panel de configuración de Widg ets

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.

9.6.4 CAMBIAR LA PÁGINA DE INICIO


WordPress es muy conocido po rqu e la página de inicio mu estra la lista de entradas rea lizadas
en ord en inverso cro nológico. Sin duda, es lo ideal cuan do el sitio es un blog, sin apenas más
conte nido qu e los post que se hayan escrito.

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.

9.6.5 CAMBIAR LA PÁGINA DE ENTRADAS


La pág ina de entradas es la qu e muestra los po sts qu e hayam os publicamo s. Por defecto es la
port ada del sitio. Pero , en el caso de que hayamos cambiado la página de inicio, en tonces podre-
mos in dicar otra página para las entradas.
390 IMP LAN TACi ÓN DE APLICACIO N ES W EB

Para ello hay que seguir estos paso s:

[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

+ 4 g1"'9a r ccr ueordc

MOSTRAR SÓLO lOS ELIMENTOS EN lOS QUE


-
estaco cuetcu'era Flit r c
upo cualq uiera
- -~ -- - -
rdrc m e cu..lquieta

AC T UA LI ZA R O PCION ES

Publicar el contenido eetecctcnscc .. Act uetlzar

uro AUTOR EST;\DO

Nc na y co nt emd c duponible

Figura 9.22: Pan el de con tenido de Drupal

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 título. Es obligatorio hacerlo.

• Indicar eti quetas (tags) que faciliten posteriormen te su búsqueda.


UNI DAD 9. GESTiÓN DE LO S CO M PO N ENT ES, CO NT EN IDO Y APAR IEN CIA DEL CMS 391

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.

9.7.3 AL IAS DE URL


Los alias permiten acceder a un con tenido con una URL m ás sen cilla. Se pu eden indicar
cuando se a ñad e o edita contenido. Pero hay un panel qu e centraliza los alias en uso, se acce de a
él desde Configuración-Alias de URL en el menú de administración.

9.7.4 CREAR NUEVOS TIPOS DE CONTENIDO


En Drupal se pu eden modificar los tipos de conte nido existentes y crear nuevos. Esto es posi-
ble desde el panel de admi n istración eligien do el menú Estructura y luego Tipos de contenido.
392 IMPLANTAC iÓN DE APLICAC IONES WEB

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 -

Figura 9.23: Panel de tip os de contenido en Dru pa!

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.

La edición de los tipos de conteni do consta de 5 elementos:


• Panel Editar. Con la inform ación básica del tipo de contenido:
Nom bre del tipo de conteni do (por ejemplo, artículo)
Descripc ión
Opciones generales: Donde se publicará, como se envía el contenido (si se previsua-
liza antes o no), si se muestra la información del autor, si se admiten comentarios,
en qué menú aparece
• Gestión de campos. Son los tipos de datos que se pueden almacenar tipo de contenido .
Por ejemp lo, los artículos tiene n los campos título, taq , body (cuerpo del artíc ulo) e
imagen . Podemo s a ñadir más o eliminar los que queramos para cada tipo.
• Gestionar presentación. Permite in dicar cómo se muestra cada un o de los campos.
Podemos personalizar el or de n en el que se mu estran (se pue den arrastrar los campo s
para indicar cuá l sale primero), la forma en la que lo hacen (si se muestra sin un texto
de etiqueta, o si se mu estra dicho texto por en cima o alineado), el formato que ut ilizan
(texto completo, resumen, etc.) y determinar opciones avanzadas (por ejemplo, en las
imágenes, pode mos deci dir el tam a ño que se util izará).
Lo mejor es pro bar y comprobar lo qu e ocur re al cam biar cada eleme nto, con mu cha
paciencia.
Campos de comentari os. Podemos admitir comen tari os y al igual qu e en el contenido
en sí, indicar qu é campos recogem os y cómo los presentamos.

9.7.5 ESTILOS DE IMAGEN


A la hora de indicar (en los tipos de contenido) qué forma to usa la imagen, inicialmente Drupal
permite tres op ciones:

• Th umbnail. Imagen diminuta (por defecto IOO XIOO p íxeles).


UN IDAD 9. GESTiÓN DE LOS CO M PO N ENT ES, CONTENIDO Y APARIEN CIA D EL CMS 393

Medium. Imagen media (320X200).

Large . Grande (480x480).

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.

9.7.6 TAXONO MíAS


Las taxonomías en cualqui er CMS permiten la clasificación del contenido. Drupal posee tam-
bién gestión de taxonomías, porque también sue le tener qu e gestionar sitios con miles de ent ra-
das de contenido.

En Drupallas taxonomías se componen de vocabularios y términos. Los vocabularios sirven


para agru par términos relacion ado s. Así astronomía puede ser un vocabulario al que pert enecen
los términos planetas, satélites, estrellas, espacio y galaxia.

La taxonomía en Drupal se gestiona desde el enlace Estructura del menú de administración

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 "

+ Ag re g.:'.f vor abulano

'écs n er pe so s d e la fdi:.
NO\\ BRE DEL VOCABULARIO OPERACIONES

+ Foros

+ Enc ueras ed itar v cceb ulenc list a de r ém u nos

Gua rdar

Figura 9.24: Panel de gestió n de la taxon omía de Drupa!

9.7.6.1 AÑADIR VOCABULARIO S


Desde el panel de taxonomía simplemente se hace clie en a ñadir vocabulario. Bastará con indi-
car el nombre y la descripción para crearlo. Una vez creado, se puede editar. Lo cual nos permite:

• Ver y modificar la lista de términos aso ciados al voca bulario.

• Modificar el nombre y/o la descripción.


• Modificar los cam pos que ese vocabulario mostrará cuando deseemos a ñad ir un término
(nor malmente aparec e solo el no mbre y la descripción del té rmino).
394 IMPLAN TACiÓN DE APLICAC IO NES W EB

• Modificar la presentación de los términos de este vocabulario cuando se muestren en la


página final.

9.7.6.2 AÑ AD IR TÉRM INOS


Para a ñadir términos a un vocabulario podemos hacerlo si estamos editando el vocabulario
desde la pesta ña Lista o desde el panel de Vocabularios, ya que cada vocabulario dispon e directa-
mente de un en lace para añadir términos.

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.

9.7.6.3 ASIGNAR UN A TAXO NO M íA A UN T IPO DE CO NTE N IDO


En el Apartado 9.7-4 "Crear nuevos tipos de contenido", en la página 391 vimo s cómo se pu e-
den crear tipos de contenido a medida. Lo interesa nte de las taxono mías es qu e se pu eden asignar
a un tipo de conte nido y hacer qu e al aña dir conte ni do de ese tipo, aparezca un campo en el qu e
se pueden indi car té rminos de esta taxo nomía.
Para ello hay que edita r el tipo de con ten ido y en el apartado de gest ión de cam pos agregar un
nuevo campo al qu e se le indicará:

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).

• Nombre de sistema. El nombre ún ico qu e le asigna r Drup al a ese control.

• En tip o de campo hay que elegir Referencia a término qu e es el adecuado para qu e al


añadir contenido indiquemos términos taxon ómicos. Más tard e deberem os editar este
apartad o y hacer clic en el enlace para indicar a qué vocabulario nos esta mos refiriend o.

• 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

9.7.7 CO N C LU SIO N ES SOBRE LA C REAC iÓ N


CO NT EN IDOS EN DRUPAL
Ind iscu tiblem ente Dru pal per mite person alizar de forma espectac ular la forma de crear con-
ten ido s. Lo malo es la edición del contenido en sí, qu e no es nada cómodo ni versátil. Aunque
podemo s in stalar módulos que no s faciliten la tr ea. Así el CK Edit or es un módulo casi obligado
para escr ibir contenidos más cómodame nte .

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 .

Cad a m e nu nen e u n bl oq ue co rres po nd ie nt e q u e se c e s ne ne en la c éc me de eor- umstrecr cn el" bl c aue s .

+ Auadt t men ú

TÍTU LO OPERACIONES

Manage ment bste r añe cu


en lace s menú e n tece

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

Figura 9.25: Pan el de gestión de menú s de Dru pal

9.8 .1.1 M O DI FICA R Y A ÑAD IR ENLACES A LOS M EN Ú S


Estando en el panel de gestión de menús. Podr emos ver y modificar sus en laces a tr avés de
listar enlaces. Aparece la lista jerárquica de enlaces. Podemos cambiar el orden y su jerarquía
sim plemen te arrastrando desde el icono + .

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

E~LAC ~ DEL \., EN U ACTIVA:lO

4nículc

T H''1c. del fot o e d ter

Guarda r connqurecrcn

Figura 9.26: Enlaces del menú principal típico de las instalacione s de Dru pal Coreo

9.8 .1.2 C REAR M EN ÚS PROPIO S


Des de el panel de gestión te ne mos la opció n de crear un menú al cua l le pod emos a ña d ir los
en laces que deseemos.

9.8.2 BLOQUES Y REG IONES


rnc ebezadc

Destacado

Pnrner a barra lateral Des tacado Segunda barra rereret

Bartik
Avud a

c ontentd o

Trí¡;:ICO pnm erc 'rnpncc al medi o 'rnpnco al final

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 .

9.8.2.1 AÑA DI R BLOQ UES


Desde el pane l de ad ministración de bloqu es po demos Añadir bloques haciend o clic al enlace
homónimo. Al a ña dir debemos indicar lo siguie nte :

11 Nombre y descripción del bloqu e.

11 Cuerpo del bloque. Q ue puede contene r código HTML.

• Región en la qu e se colocará el bloque (en cada tema).

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).

Roles de usuario a los que se muestra el bloque.

• Finalme nte si permitimos a los usuarios personalizar este bloque.

9.8.3 TE MAS EN DRUPAL


En el Aparta do 8.7.2 "Instalar temas", en la página 344 , se explicó como instalar nu evos tem as
en Drupal. Aho ra se explicará como personalizar el tem a elegido.

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

9.8 .3.2 PERSO N A LIZ A R EL TE M A


Como en WordPress, podem os person alizar comp leta me nte el te ma. En Drupal, lo aconse ja-
ble es copiar un te ma existente y modificar su código, ya que la organ ización es más jerárquica.

': _ ~ .r:' ... . : I • '~. ~.J ....' .' t)".,:.i ~I.""~

.
; • ' '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...

,P. - ~ .• _. . .•. ~ . ,. . ~'"I


co m me nt .t pl.php
" E'

. - " .. - .. . . ,

Figura 9.28: Arquitectura de las plantillas para los temas de Drup al

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:

name = Tema pro pio


descr ipti on = Ej emplo de t ema
core = 7 .x
styl es heets[all] [] = sty l e . c s s
; styl e sh eets [prin t ] [] = pr i nt .cs s

regions[ header] = Cabecera


r egi on s [menu] = Menu
regions[ content] = Conten ido
regi ons [right_a ] = Barra l at e r a l A
reg i ons [right_b ] = Barra l at e r a l B
versi on = "0.1"
proj ec t = "dru pal"
; 12 /7/2015
dat estamp = "14366111 65"
U NID AD 9. GESTiÓN DE LOS CO MPONENTES, CO NTE N IDO Y APAR IENC IA DEL CMS 399

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.

• node.tpl.php. Códi go base para mo strar un nodo en el sitio Drupal.


region.tpl.php. Código base para cada región del tema.

• style.css. Hoja de estilos general. Al menos tiene que estar este archivo. Pero suele haber
más, normalmente en el directorio llamado CSS.

Los archivos de plantillas utilizan diversas variables, algunas de ellas son:


• $base _path. Ruta al directorio raíz de Drupal.
$fro nt_ page. URL a la página de por tada del sitio.
• $direct ory. Ruta al directorio del tema actual.
$logged_in. Devuelve verdadero si el usuario está conectado.
$is_adm in . Devuelve verdadero si el usuario tiene acceso a las páginas de administración.
$logo. Ruta a la imagen qu e se utili za como logotipo del sit io, según se definió en la
página de ajustes del tema.
• $site_nam e. Nombre del sitio.

• $title. Título del nodo.


$conte nt . Texto que representa a un nodo. Es un array con todos los elementos del
nodo, pero puede ser escrito de golpe con r e nder ($content) . Si queremos renderizar
solo un campo con creto del nodo se hace con rend er ($content[ campo " ] ). Así
11

tendremos por ejem plo que $content [ , 1 i nk s '] escribe los enlaces del nodo

• $uid. Identificador del autor.


400 IM PLANTACiÓN DE APLICACIO N ES W EB

• suser jpicture. Imagen del autor.


$name. Nombre del autor.

• sdate. Fecha de creación del contenido.


$page. Array que representa la página actual. A través del él po demos acceder a las dife-
ren tes regiones, por ejemplo: pag e [" r i ght _a "] accede a la región identifica da como
ri g ht_a (barra lateral A).

• 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.

• stype, Tipo de nodo.

• smain jnenu. Array que representa cada en lace del me nú principal.


$com me nt_ count . Núme ro de come ntarios que tien e el nodo.

• $submitted. Inform ación de nombre y fecha del eleme nto.


• Sid oPosición del nodo, se incrementa con cada nodo que se muestre.

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

9.9 PRÁCTICAS RESUELTAS


Práctica 9.1: Crea r co nte nidos en Word Press
• Crearemos dos en tradas nuevas de con tenido . Una hablará del planeta Júpiter y otra de
Marte.
• Conseguire mos utilizar como cat egoría s los término s: Sistema Sola r , Planetas, Ven us y
Marte. Ha remos que Venus y Marte sean término s hijos de Plan etas.
• Pon una foto de Júpiter y otra de Marte y escribe lo qu e qui eras de cada plan eta.
En ambos casos , usando una lista encabezada por puntos, escribe la lista de sus satélites (para
el caso de Júpiter escribe solo 4).

SOLUCIÓN : PRÁCTICA 9.1

[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 .

Añad ir nueva entrada


Marte Pu bticar

Form ato

C:.'

Mane es el cuarto planere del Sistema Solar y el mil:'


cerc an o a la Tif' JT3 . Como nuestro pla neta , E.-!> r ocoso.
au nq ue cua tro veces más pequeño.

Se cree que la gran ca ntidad de hierro qUE- posee es la


C,:!t egofÍ<lS
cau sante de su color rojo.

Sa télite s:

• Fobos
• Deimos

[3] Apare ce el panel de nuevas entradas, en él escribe :


Como título: Marte.
402 IMPLANTACiÓN DE APLICACIONES WEB

• 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.

[5] Comprueba el resultado

Práctica 9.2: Crear contenidos personalizados en Drupal


• Crearemos dos entradas nuev as de conte nido. Una hab lará del planeta Júpiter y otra de
Marte.
• Como vamos a ten er numerosas entra das de Astrono mía, hem os decidido crear un tipo de
contenido qu e se llam ará Artículo Astronómico en el que pod remos indicar el título del
artículo, el texto del mismo que puede llevar solo HTML filtrado (no se perm ite HT ML com-
pleto ), un a posible ima gen y podremo s indicar palabr as clave que previamente habremos
almacenado en el vocabulario Astronomía que se explica en el punto siguien te.
• Las palabra s clave pertenecerán a un vocabu lario llamado Astronomía en el que insertare-
mos las palabras. Por ahora introduciremos los términos: Sistema Solar, Planetas, Venus y
Marte. Haremos que Venus y Marte sean hijas de Planetas.
• Para facilitar la escritura de los artículos, instala el módulo CKEditor.
• Escribe los do s artículos asegur ándote que eliges el tipo de contenido creado para este tipo
de artículos. Pon una foto de Júpiter y otra de Marte y escribe lo que quieras de cada planeta.
• En ambos casos, usando una lista encab ezada por puntos, escribe la lista de sus satélites (para
el caso de Júpiter escrib e solo 4).

SOLUCiÓN: PRÁCTI CA 9.2


[1] Empe zamos creando la nueva taxonomía. Desde el menú de administración elegimos
Estructura-Taxonomía.
[2] Hacemos clic en Agregar vocabulario.
[3] Indicamos como nombre Astronomía. En descripción: lista de términos astronómicos.
Además, hacemos que el nombre en el sistema sea astronomia (no puede llevar tilde)

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

[4] Hacem os clic en guarda r e inmediatamente en Agregar términos.

[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.

[8] En el panel de tipo de con te ni do indicamos:

Nombre: Artíc ulo Astro n ómic o.

11 Nombre de sistem a : ar ticulo_a stron omico.

11 Descripción: Tipo de con te nido para artículos astro nó mic os.

• Opciones de formulari o de envío:


• Etiqueta de campo de título : Tí tulo
Rest o de opciones: Tal cual están

[9] Hacemos clic en Guardar y añadir campos.

[10] Aparece el panel de cam pos. En él hacemos:

11 Editamos el cam po Body, y lo llam amos Con te nido. Lo m arcamos como campo
obligatorio

• A ñad im os un campo llamado Palabras clave, qu e es una referencia a término. Elegiremos


como tipo de control, una lista desplegable. Tras guardar, elegimos el vocabulario
Astron om ía. Permitiremos un número ilimitado de palabras.

A ñad im os un campo de imagen. Marcamos el tipo de contenido como im agen . En sus


propiedades marcamos act ivar campos Alt y Titulo (para que la imagen pueda ser bus-
cada y etiquetada) y dejamos un a anchura máxima de 640 X480.
'd or.t ra r peso s d e la fila
CA MPO ETIQ UETA FORMATO

+ im a g e n
--~ - ~-

<Oculto> . ~------

Imagen Imagen or ig inal

+ 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

Pod emos ir a Módulos-Instalar nuevo módulo y elegir el archivo comprimido del


CKEditor qu e previ am ente habremos descargado

• 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

• Finalmente en Drupal, vamos a Módulos, buscamos el módulo CKEditor (estar á al final)


y lo activamos.

[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.

[13] Vamos a Contenido-Agregar Contenido-Artículo Astronómico

[14] Rellenamos de esta forma:

• Título: El plan eta Marte.


• Imagen: Elegimos la imagen de Marte descargada.

• 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

[16] Comprueba el resultado.


UN IDAD 9. GESTiÓN DE LOS CO M PO N ENT ES, CONT EN IDO Y APARIENCIA DEL CMS - PRÁCT ICAS 405

Práctica 9.3: Persona lizar te ma e n W or d Press


• Uti lizan do el tema Twen ty Fifteen de WordPress, personalízalo para que presente la aparien -
cia de la siguiente imagen:

Júpiter

[uplter es el más quinto planeta del Sistema Solar y el más grande .


nada menos que 318 veces más grande que la Tierra.

Es un planeta gaseoso en el que es distinguib le una serie de bandas


y una enorme mancha roja. debido a sus condiciones atmosféricas.

Pr incipales saté lites:

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.

SOLUC iÓN: PRÁCT ICA 9.3

[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.

[2] Ir a Apariencia-Personalizar desde el pan el de administración, abri r el aparta do Colores


y elegir negro como color de fon do de cabecera y barra lat eral y gris como colo r de fond o.
Hacer que no apa rezca ni imagen de fondo ni imagen de cabecera.

[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.

[5] Guardar y comprobar

Práctica 9.4: C rea r páginas es tá t icas e n Word Pres s


• Elimina todas las páginas está ticas qu e te ngas
• Crea un a página está tica que se llame Sobre mi en la que hab les de ti y otra qu e se llam e
Sobre m i localidad en la que hables de la localidad donde vives. No admitas com entarios.
• Consig ue que el slug hacia ellas sea / sob r e-mi en el caso de la primera página y / m i-ciuda d
en la segunda.
• Haz un m enú que se llame información personal y que permita acceder a ambas páginas.
Consigue que ese menú esté accesible desde la página principal, en la página principal debes
conseguir que apare zca ese menú .

SO LUC iÓ N : PRÁCT ICA 9.4


[1] Ve al aparta do Páginas. Selecciona todas las páginas que haya, marca Mover a la pap elera
en la lista de Acciones en lote y Aplica la acción.
[2] Ha z die en el botón añadir nueva. Coloca el título Sobre mi y el texto que te parezca bien
escribir.
[3] En el apartado Opciones de pantalla (arrib a de la pantalla), haz que se mues tre el pane l de
come n ta rios. Elimina la casilla Permitir come nta rios .

Edit ar Menús Gestionar lugares

Páginas
H§ ·h:l"
Est ru ct ura d el M enú

Sobr e nu pueble
Sobre mi

Sobre m i

':"radir e' -ce nú


Sob re mi pue blo

Enlaces persona lizad os

Categ orías Opciones d el Men ú

ub cooc> d::, =~,"'~ ./ : .~e!"'l- p-u-c.p e


:.~ erC; de e nlaces coce e:::

'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

[4] Publica la página.


[5] Realiza las mism as acciones con la página Sobre m i localidad.
[6] En el men ú de admi nistración vete al apartado Apariencia-Men ús (ver imagen an te rior).
[7] Haz die en Crea un nuevo m enú, ponle como nombre Información personal.
[8] En el panel Páginas, elige las dos páginas que has crea do y pulsa en Añadir al menú. Observa
que apare zcan en el men ú.
[9] Marca la casilla Menú pri n cipal y guarda el menú.
[10] Comprue ba el resultad o en la portada del sitio.

Práctica 9.5: C rea r te ma p ropio e n Word Press


i blog Sobre mi I Sobre mi localidad I AdmmlSlradón

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

Es un planeta gaseoso en el que es diStinguible una serie de bandas y una


enorm e mancha roja . debido a sus condic iones atmosféricas.

Princ ip ales saté lite s:

í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.

SOLUCiÓN: PRÁCTI CA 9.5

[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

<d i v id="menu " >


<a hre f e " <? = get_si te_url ( ) ?> / s obr e- mi " >
Sobre mi </a >
<a href="<?= get_site_url () ?> /mi -l oca l idad" >
Sobre mi localidad </a >
<a hr e f =" <?= get_site_ur lO ?> /wp-admi n" >
Admi ni s t r ac i á n </ a >
</ d i v>
</ d i v>
[4] El código del archivo footer.php es más sencillo. La única razón para hacerlo es que sea má s
legible el código de index.php . Este es el código del archivo footer .php:

</ 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(); ?>

[6] Ahora desde el pan el de administración de WordPress tenemos qu e ir al apartado


Temas y act ivar el nu evo tema qu e aparece con el nomb re de Mi sitio, pero no mue stra
previsualización .
[7] Probam os la página ahora y, si todo va bien , capturamos la pan ta lla y, con ayuda de un
programa de imáge nes, guardamos la imagen en el directorio del te ma con el nombre
screenshot.png. Si volvemos al panel de temas en WordP ress ahora sí deb eríamos ver la
imagen en miniatura del tema.

Práctica 9.6: Crear páginas estáticas en Drupa l


• Haz lo m ism o qu e en la Práctica 9-4, pero uti lizando DrupaL
UN IDAD 9. GESTiÓN D E LO S COMPON ENTES, CONTEN IDO Y APARIEN C IA DEL CMS - PRÁCT ICA S 411

SOLUC iÓ N: PRÁCT ICA 9.6

[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.

[5] Asegúra te de qu e el apa rta do Opciones de comentarios aparece cerrado .

[6] Guarda la página y repite los pasos para la página sobre mi localidad.

[7] Comprueba el resu lta do.

9.10 PRÁCTICAS PROPUESTAS


Práctica 9.7: Crear tema propio en Drupal
• Crea un te ma propio seme jante al realizado para WordPress en la Práct ica 9.5.
• Al aspecto debe ser lo más parecido posible y debe con seguir los mismo s hit os con los en laces
y el reco rrido mediante permalinks.

Práct ica 9.8: Tipo de contenido personali zado en Drupal


• Crea un nuevo tip o de contenido y llám alo Noticia,
• Consigue qu e en ese tipo de conte nido solo se pueda in dicar el nombre y el cuerpo.
• Permite en esas noticias aña dir términos de una nu eva taxonomía (llámala como desees), de
modo qu e se autorrellen en y se pu edan introducir tantos com o deseemos.
• Haz qu e el cuerpo de la noticia solo pu eda ten er como HTML, las etique tas de negrit a (strong)
y cursiva (em) .

Práctica 9.9: Pági na perso nalizada de búsq ueda en Drupal


• Esta práctica requiere hab er realizado la anterior.
• Consigue crear un a nueva página llam ada buscar noticias, en la qu e un cuadro de texto nos
pida un término y pulsan do un botón vayamos a otra página qu e no s mu estre las n ot icias
relaciona das con el término.
• Haz qu e un enlace en los m en ús de Dru pal no s permita ir hasta la página de bús que da.
412 IM PLANTACiÓN DE APLICACION ES W EB

• 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.

Práctica 9.10: Co ns ultas a la base de datos de W ord Press


• Crea una página en la qu e aparezca el nombre de cada categ oría y el tot al de páginas que
tien e dicha categoría
• La página se rea lizará directamente en PHP (sin usar realmente WordPress) y accediendo a
las tablas de la base de dato s en las que guarda WordPress la información .
• Haz que esta página ten ga un enlace en el menú lateral (usa un tem a cualquier de WordPress).

Práctica 9.11: Cons ultas a la base de datos de D rupal


• Crea una página en la que aparezca el nombre de cada categoría y el total de páginas que
tiene dicha categoría
• La página se realizará directamente en PH P (sin usar rea lmente Drupal) y accediendo a las
tablas de la base de datos en se guarda la informac ión.
• Haz que esta página ten ga un enlace en la página de inicio

Práctica 9. 12: Página usando la base de datos de WordPress


• Usando solo la base de datos de Wor dPress, consigue sacar una página qu e mu estre los t ítu -
los de los post (solo entradas, no páginas) que se están publicando ahora.
• Cada título será un enlace mediante el cual veremo s el contenido de ese post.
• El contenido se mu est ra con un enlac e que no s indicará cuá ntos come nta rios tiene esa
entrada.
• La cuenta de los come ntarios es también un enlace, al hac erle clic, verem os todo s los come n-
tarios de ese contenido

Práctica 9.13: Publicar contenido en Joomla!


• Basándote en la Práctica 9.1 y la Práctica 9.2, public a dos artí culos uno sobre Marte y otro
sobre Júpit er categori zand o término s de la mism a form a que en esas prácticas y dando el
mismo form at o.
• Crear tamb ién dos páginas está ticas qu e sean en lazables desde la port ada (al estilo de la
Práctica 9.3 y la Práctica 9.5) una de ellas qu e hable sobre ti y la otra sobre tu localidad.
UNI DAD 9. GESTiÓN DE LOS COMPONENTES, CO NT EN IDO Y APARIENC IA DEL CM S 4 13

9.11 RESUM EN DE LA UNIDA D


La publicación de conteni dos es la act ividad fundamental en un sitio administrado
mediante CMS.

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.

• En WordPress hay dos tip os de conte nidos :


Entra das o post . Que cambian a menudo y se organ izan , por defecto, de m odo que
apare zcan antes las entradas más recientes.
Páginas está ticas . Conteni do del sitio que cambia mu y poco a menudo.
En Drupal existe n los mismos tipos de con tenido, pero se pu eden crear más.

Las taxo nomías permiten asignar té rminos , que luego se ut ilizan para orga nizar y hacer
búsqu edas en el sitio.

Las entradas y páginas pu ed en inc orporar elementos multimedia qu e se orga nizan en


una biblioteca dentro del CMS.

• 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

9.12 TEST DE REPASO


En WordPress cuando se borra una WordPress no admite comentarios En una
entrada o post: entrada como elementos multimedia se
« ¡ Se elimina definitivam ente admite...
Siempre debe de ser autorizado el Solo imágenes
bor rado por un administra dor Solo imáge nes, vídeo y audio
eI Se envía a una papelera Cualquier eleme nto mul timedia del
.) Queda marcado el post como tipo qu e sea
Borrador WordPress no admite eleme ntos
multimedia
- Una entrada en WordPress...
Puede ten er asignadas tanto categorías
como etiquetas (tags) ¿Qué dife ren cia hay entre páginas y post
Puede tene r asignadas tanto categorías en WordPress?
pero no etiquetas (tags) Los post son contenidos que se orde-
e Puede te ner asigna das et iquetas (tags) nan cronológicame nte, las páginas no .
pero no categorías Los post pu eden contener comentarios
No se pu eden asigna r ni categorías ni las págin as no
etique tas (tags) a las entradas Los post pu eden ser escrit os po r usua-
rio s no administradores, las páginas
\. - Un slug es...
solo por administradores
a} Un nombre amigable qu e se incrusta a (\ No hay diferencia entre post y página
la URL para acceder más fácilme nte a
un recurso de la web En Drupal se admiten como tipos de
b Un elem ento de las taxon omías dife- contenido...
rentes de las categorías y las et ique tas é') Los mism os que en WordPress, pero
El nom bre de una entra da o un a Drupallos llama artículos y páginas
página básicas
Un plu gin elaborado por tercero s b) Drupal admite solo artículos como
contenido qu e pu edan rellenar los
4 - Por defecto como funcionan los comenta-
usuarios
rio s en WordPress
Artículos, páginas básicas, entradas de
Cu alqu ier persona pu ede publicar foros y cuestion arios
come ntarios sin rest riccion es d Dru pal admi te cua lquier tipo de
) \ Cualqui er persona pu ede publicar conte nido
com entarios, pe ro éstos deben de ser
aprobados por un administ rado r (' - En Drupallos términos se agrupan en...
e} Cualquier persona pu ede publicar ,1 Taxonomías
comentarios, pero el primero debe de h Vocabularios
ser aprobado por un administrador e) Cate goría s
~) Solo usuarios registrados en el sistema d) Tags
pueden hacer comentarios
1(1, - ¿Qué diferencia hay entre bloque y región
:> En WordPress los comentarios a una en Drupa!?
en t rada los puede escribir... a Los bloques contienen regiones
Cualquier person a que visite la página Las regiones contienen bloques
Solo usuarios registrados Son té rminos in dependientes, no tie-
Solo editores nen relació n
Son sinó nimos
UNIDAD la

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

10.1 GEST iÓ N DE USUARIO S EN


WORDPR ES S
10.1.1 INTRODUCC iÓ N A LOS USU AR IOS DE
W OR DPR ESS
Durante la in st alación de WordPress solo se crea un usuario: el usu ario administrado r del
sitio. Las capacid ad es de ese usuario son absolutas , por lo qu e si siem pre utili zam os a ese usuario,
el riesgo de qu e un tercero capture la contrase ña, cre ce.

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.

Autores (Authors). Pu ed en publicar entradas de tipo post, pero no pu ed en crear páginas


ni administrar las catego rías o etique tas ; aunque sí pueden in dicar a qu é cate gorías y/o
etique tas pertene cen sus posts. De hecho solo pued en edi tar sus pro pios post , no pue-
den modificar de ninguna manera las en tradas de otros usu ario s.

• Colaboradores (Con t ributors). Pu ed en publicar en tra das, per o no se verá n en el sitio


ha sta qu e un editor o adm inistrador las apruebe . Ade m ás, n o pu eden a ñadir eleme ntos
multimedi a al po st ni mo dificarlo, una vez lo hayan enviado par a publicar. Se considera
que gen era n entrad as de tipo borrador.

• Seguidores (Fol1owers) o Suscriptores (Subscriber) . Seguidor y suscrip to r significa lo


mis mo . El matiz es qu e segu idores es el n om bre que tie ne n en los sitios implem entados
online en la n ube de WordPress.com. En las in st alaciones en un servidor pro pio, este
mismo tipo de usuario se llama suscript or . Pu ed en lee r los po st del sitio (aun que fuera
privado ) y escribir come ntarios. En ni ngún caso puede n publicar sus propias entradas .
~

10 .1. 2 ANADIR U SUA RIOS


Par a a ñadir un nuevo usu ario debem os ir al apartado Usuarios (Users)-Añadir nuevo (Add
new) que se en cue ntra en el m en ú del panel de adm in istra ción (de h echo, solo un adm inistrador
UN IDAD 10. AD MI N ISTRAC iÓN DE SIT IOS GESTION ADOS POR CMS 417

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.

Correo elect rónico. Es un dato obligator io.

1:1 Nombre y apellidos. Es conveniente indicarlo, pero opcional.

Contraseña. Que debería ser lo más compleja posible.

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.

10.1.3 AUTE NT IFICAC iÓ N DE USUAR IOS


Para que un usuario pu eda realizar las tarea s que tiene dentro de su perfil, se tiene que auten-
tificar. La form a más fácil es ir añadir /login a la raíz del sitio WordPress. Por ejemplo si la ruta
a nuestro sitio WordPress es http:/ /esteesmisitio.com /word press entonces para autentificarse
debemos ir a http://esteesm isitio.com/word pressll ogin. Podemo s acceder al pan el de adminis-
tración (usando el ejemplo, la URL sería http://esteesmisitio.com/wordpress/wp-adminl, solo
qu e aho ra el pan el tendrá más o menos capaci dades dependiendo del usuario que seamos.

10 .1.4 PERFI L D EL USUARI O


Todos los usuario s tienen acces o al enlace Perfil (Profzle) desde el qu e pueden cambiar aspec-
tos de su cuenta como pueden ser :

• Esquema de color del panel de administración.


Activar barr as de herr am ientas.

• La información per sonal: emailuornbre.apellidos. alias, correo electr ónico o informa-


ción biográfica.

• 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

Añadir nueva ent rada

El mes de Plutó n Public..r

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.

10.1.6 BLOQ UEO DE POST

Entradas J.h~H m_.

te película de! mes: Del T€,VCS

El mes de Plutón - Pendien te

a Le ~~.t..SL. descubre un "IUC~'O planeta

Sistemas oe Gestión de contentcos I/}. \ ·...ordPress

~ 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).

10.1.7 REV IS IONES


10.1.7.1 M A N EJ O D E REV ISION ES
Se trata de un a caracte rística muy poten te. WordPress permit e qu e un mismo post pueda ser
edita do por varios usuario s, siempre y cuando teng an pri vilegios para ello. No hay qu e olvidar
las cues tiones de bloqu eo comentadas en el aparta do anterio r: solo un usuario pu ede edita r un a
entrada al mismo tiempo .

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 rg e Sa :lcr-lez , hace 9 mm s (2 9 29 UT C lu !io. '-::: [015 t~, 10; '; 8 :09)

~ 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

Pod em os verlas desde el pan el de revision es al mo dificar un a entrada. Si el pan el no está a


la vista , que es lo habitu al, debemos ir a Opciones de pantalla y hacer clic sobre dich o panel. El
panel n os muestra cuándo se han realizad o cambios y qué usuario los ha hecho.
eoua r entraca Aña di' " u. va

Car onte Publicar

, ::sIa dc : Pub licada ECléa,

@ vis't¡¡hdad: Públi co ::;,J :2 ~

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

New Horiz on s, sus mist erio s se ab re n par a nosotros.

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.

Com parar revisiones de "Caront e"

o
r' .>

Titulo

Cont enido

c eroer e es e; e ayc- s¿ :€li:,. GEe P l u :~r. Cilsl c esccocc oc í

·, ,)5: . 16 l !~g.=a r e :a l. ~~ Hc ~ ~ :or 5. sus ,.iHH ~ C5 .. e ab - e n


:l .... n0 50 t " :l 5 .

Figura 10.5: Pan el de comparación de revisiones mo strando un a revisión sobre un a entrada

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 .

10.1.7.2 EL PRO BL EMA DE LA S REV ISIO NES


Las revisione s son una herramienta fantástica , pero tienen un probl ema: el espacio. Alm acenar
los cambios qu e produce cada revisión tiene el problema de que cada entrada ocupa mucho espa -
cio en disco (cuando hay bastantes revisiones por entrada).

Podemos limitar el espacio que gastan las revision es modificando el archivo wp-config.php de
configur ación de WordPress:

La constante WP_POST_REVISlüN permite indicar el máxim o número de revisiones qu e


permitimos. En el códi go anterior solo almacenaríam os 5 revisiones por cada entrada. Más agre-
sivo es este códi go:
.. . -. - ... _. - - - - - - --- - --
defme( 'WP_POST_REVISION' I !als5~L __.. . _._ .. _ _ _ _ . .. 0

No se almacenarán los cambios anteriores al último : no hay revision es. No es mu y conve-


niente esta última posibilidad, especialme nte si hay varios editores .
UNIDAD 10. ADM INISTRACiÓN DE SITIOS GESTIONADOS POR CMS 421

,
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.

Las dos estrategias fundam entales de copia son:

• 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.

10 .2.1.1 COPIAS DE SEGUR IDAD AUTOMAT IZADAS


Sin dud a son la mejor opción. Delega en un servicio externo esta gestión y nos quita esta pre-
ocupación de nu estra lab or como administrativos. La pega: el pr ecio, la mayoría de los servicios,
y sin duda los m ejores, son de pago.

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

Numerosas copias de segurida d automatiza das se realizan mediante la instalación de un plu -


gin, lo qu e a ñadir á un nu evo eleme nto al panel de administración que nos permitirá la adminis-
tr ación del sitio. Algun as son de pago como Backup Buddy, y otras gratuitas como Updra ft Plus
Backup and Resto ration qu e permite hacer copia en la nub e de Amazo n, Google, Microso ft o
Dro pBox entre otras.

10.2.2 EXPORTAR LOS DATOS DE WORDPRESS


La exportación de datos en Wor dPress es muy sencilla. Basta ir al apartado Herramientas
(Tools)-Ex port ar (Export). En esa sección del panel de control de administración podremo s elegir
si deseamos descargar todos los datos o solo los post o las páginas .

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.

10.2.3 IMPORTAR DATOS EN WORDPRESS

Importar

co nver so r de etiq\"e~d~ ) ""Ti ~ "'{ ::- "\-' f ":'.~'= ~" ~~F ..~ : !-T'S:" '· t . ..r , ,, ', w-, H ~ , ~ ! ' ." :_ ~-~~, E"" '::¿' :_ ~'j- <\•. e- '';::''T;,; ~ ',":f .-¿

cetegcnas

Figura 1 0 .1 : Pan el de importación

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.

El problema viene de qu e los usuarios de un a y ot ra in stalación no coinc idirán , por lo qu e


te nemos que decidir si los creamos, si asigna mos los post de un autor a otro au to r ya exis-
tente o si creamos usuarios nuevos con el no mb re que queram os a los que asigna rem os los
post de los usuarios or igina les.

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.

10.3 ACTUAL IZAC iÓN DEL SIST EMA


WORDPRE SS
10.3.1 INTRODUCC iÓ N A LAS ACT UA LIZAC IO NES
El proceso de actualización siempre ha tenido cierta complejidad, pero sobre todo riesgo. Lo
prim ero qu e hay qu e ten er en cue nta es si rea lme nte necesitamo s la nu eva versión. En gene ral las
nu evas versi ones aportan ciertas m ejora s y hay qu e estar especialme nte at entos a las qu e ofrecen
para la seguridad del siste ma. Pero también hay versiones en muchos CMS que tienen algun os
problemas recién se han crea do; por ello conviene esperar un poco y examinar si esa versión está
fun cionando bien .
424 IM PLANTACi ÓN DE APLICAC IO NES W EB

En todo caso, en WordPress la actualización es sencilla. En el prop io escritor io de administra -


ción se no s avisa de las nu evas version es de Word Press y desde ahí mismo podrem os rea lizar la
instalación.

10.3 .2 ACTUALIZAR EL SISTE MA


Antes de instalar un a nu eva versión de WordPress conviene, encarecidamente, realizar estas
ta reas:

• Copia de segur idad de los datos.

• Copiar de seguridad de los archivos WordPress.


• :t ·

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; '"¡:'' '

Hay disponible una n ue va ver sió n act ua lizada de WordP re ss.

Seteccrc oar ;:000 3

Aklsmet

cerne..t.croao con \ ·,'vrd ;'r"s~ ':' 16 1::0:"';(seg;,.¡'1 5L,autor)


cornoet¡c 'OñO :(or' wcrccress c .z3. [)C -: c ~ .:-( ! :: "

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.

Tras actualizar WordPress ten emo s que realizar estas tareas:

• 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.

Compro bar los temas, de la misma form a qu e los plu gins.

10.3.3 ACTUA LI ZACiÓN DE OTROS ELE ME NTOS


Como se puede observar en la Figura IO.3, el mismo panel de act ualizaciones comenta do en
el apartado anterior no s permit e conocer qué componente s (plugins, te mas, traducciones , etc)
están desactualizado s. Desde ese mismo pan el podre mos act ua lizarlos.

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 .

Resumiendo: un simple com ponente, o unos pocos, no pueden determinar la versión de


WordPress a instalar en nuest ro siste ma. Es labor del adm inistrador determinar qu é versión es
la idónea tras un aná lisis de ventas y desventajas al respecto y qu é compon en tes nos conviene
utilizar con ella.

10.4 SEGURIDAD EN WORDPRESS


10.4.1 ¿POR Q U É HAY QU E PRE STAR ATENCiÓN A LA
SEG U RIDAD?
En el mundo de ho y la frase anterior se responde rápidamente a sí mi sma. Internet posee ya
miles de millones de usuarios, con millones y millones de web s. Hay que recordar, adem ás, que
426 IMPLANTACi ÓN DE AP LICACION ES WEB

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.

10.4.2 PRINC IPALES M EDI DAS DE SEG URIDAD


• Trabajar con la última vers ión tanto de WordPress com o d e sus t em as y plugin s (véase
10.3 ''Actualización del Sistema WordPress", en la página 423)

• 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.

• Cambiar el prefijo d e la s tablas en MySQL. Durante la in st ala ción, WordPress no s per-


mite indicar un prefijo para las tablas que se crean. Lo clásico es dejar el pr efijo wp _, per o
eso hace qu e el nombre de las tabl as sea perfect amente reconocible. Pod emos indicar
otro de nuestra cosech a para hacerl e me nos previsibl e y, por lo tanto, m en os atacable.

• 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) :

<me t a name="generator " content=" WordPress 4 .1.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

La línea a escribir es:


Remove_act ion( 'wp_head' 'wp_ge ne rator ');
I

• Limitar el permiso de los archivos. Es un te ma lógico que conviene recordar , se trata


de que para los usuarios norm ales los archivos de WordPress ten gan perm isos de solo
lectura y dejar la escritura solo para el administrador del siste ma .

• Proteger el archivo de configuración. Un problema típi co que pu ede acarrear un


resultado desastroso es: qu e no funcion e PHP durante un tiempo. Si es así, el servidor
web mostrará el código fuente literal de los archivos PHP que se soliciten, en lugar de
tr adu cirle.

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:

<Fil e s wp- con fi g .php >


Ord e r DenY/Allow
Deny f rom all
</F iles>

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);

10.5 ADMINISTRACiÓN DE USUARIOS EN


DRUPAL
10.5.1 TIPOS DE USUARIOS EN DRUPAL. ROLES
Fundamentalmente Drupal divide a los usuarios en autentificados y anónimos. Los anóni-
mos son los visitantes, los que no crean contenido. Visto así, parece que la gestión de usuario s de
Drupal es mu y simp le.

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.

10.5.2 AÑADIR CU ENTAS DE USUARIO


Hay un a cue nta obligada en Dru pal, la de l súper administrador. Las demás son todas opciona-
les. Puede haber sitios que solo necesiten esa cuenta. Pero no es lo normal.

• 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:

Nombre que se da a los usuarios anónimos.

• Decidir como se dan de alta los usuarios, según lo explicado en los párrafos anteriores.

Decidir qu é ocurre con el conteni do de los usuarios cuando se dan de baja.

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 .

• Texto de l mensaje de act ivación , bloqueo, canc elación, confirmación de cancelación y


rec uperación de la cue nta.

• Texto del me nsa je de bloqueo de la cuenta.


430 IM PLANTACi ÓN DE APLICACIO NES W EB

• Datos que se piden al usuar io y con tro les qu e se u san para ello.

10.5.3 EDITAR ROL ES Y PERMISO S


La gestió n de los roles, desde el me nú de admi nistración , se encuentra eligiendo Usuarios
y desp ués en la pesta ña Permisos, el botón Roles . Ini cialmen te hay tres rol es: Administ r ad or,
usu ario an ón im o y u suario au ten t icado (los dos últimos bloquead os).

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.

10.5.4 CREAR Y EDITAR USUARI O S


La crea ción de us uarios se hace a través del enlace Usuarios del m enú de admin istración. Ese
panel muestra la list a de usu arios (la cu al podemos editar). Pod emos a ñadir un usuar io a trav és
del botón Añadir usuario, el cu al muestra u n panel en el que podremos:

• Indicar el n ombre de usu ario

• Indicar su co rreo electrónico

• Indicar su con tra se ña

• Hacer que la cuenta esté bloquead a in icialm ente

• Asignar ro l al usu ario

• Indicar si n otificamos al usuario so bre su nueva cuenta

• 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:

• Cambiar el n ombre del usuario

• Cambiar el em ail del u su ario

• Cambiar la co ntrase ña (en una pe st a ña su perior )

• Bloquear a de sbloquear la cuenta

Modifica r el ro l

• Modificar el idioma de la interfaz


U N IDAD l a. ADMINI STRA CiÓN DE SIT IOS GESTIO NA DOS POR CMS 431

Cambiar o asigna r la im agen de la cuenta

ACT IVIDAD 10.1: PROBAR EL FU NC IO NA M IENTO D E LOS USUARIO S


• Para realmente asimilar el funcion amiento de los usuarios de WordPress y sus posibilidades,
lo mejor es practicar. Realiza la Práctica ro.r, en la que pue des pro bar la mayoría de accion es
con los usuarios

10.6 GESTiÓN D E LOS DATO S EN DRUPAL


10.6.1 CO PIAS DE SEGURIDAD Y EXPORTACiÓN DE
DATOS
Todo lo comentado sobre copias de seguridad para WordPress (Apartado ro.z.r "Copias
de seguridad en WordPress", en la página 4 21), valdría para Dru pal ya qu e tiene las misma s
particularidades.
Drupal dispon e de un módulo, que hay que insta lar, llamad o Backup & Migrate (dispon ible
en https://ww w.dru pal.org /project/b ackup migrat e) que facilita las tareas de copia de segur idad
y exportación/importación de datos. Es un módulo muy pod eroso que admite hacer copia de la
base de datos MySQL (incluso de má s de una) , copia de los archivos de Drupal, hacer copia hacia
correo electrónico o cuenta FTP o cue nta NodeSquirrel, pro gram ar automáti camente el proc eso
de copias para que se realicen automáticamente y encripta r (mediante cifrado AES) la copia de
segur idad. En definitiva, es un módulo absoluta me nte profesion al.

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.

Una vez instalado el módulo, debemos ir a Configuración-apartado Sistema-Backup and


Migrate para administra r las copias.

10. 6.1.1 REALI ZA CiÓN D E CO PIAS D E SEG U RIDAD

Directorio de archivos privado s


Si rea lizamos copias de segur idad en modo local, es decir, hacia el propio servidor donde está
la base de datos. Entonces, debemos primero indicar la ru ta a nuestro sistema privado de archi-
vos. Esto se hace desd e Configuración-Multimedia-Sistema de archivos y ahí se in dicaría la ruta
(debe estar fuera de las rutas de Drupal). Esa ru ta es nece saria para poder ut ilizar Backup and
Migrate.
432 IMPLANTACi ÓN DE APLICACION ES W EB

----------
Sistema de arch ivos o

Ruta d el s iste ma pllbli co de ar ch ivos


sites -defe ult files
L:r.. nll¿ d e' ~I St t"m ¿ d e a rCPh OS tcce. dc r.d e SE: e.mece oarén los ar cbr-cs P,¡!;I'C0S ~~ :t d .·r-CWfIO de b.. e xunt . ;:;'V;'la: o eb e pode- :"scu b r tn e !
E!: ~ d ue ct c nc de be se ' ret enc c al d ¡rE'C10 ~IO de ¡¿ l~S : ilil ~-::lon de Jr ;.lD ~1 y d eb e ser ecces.c re d esd e le v.e u

Ruta a l sis tem a p rivad o d e a rc h~vo s

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

Backup and Mig l ate o BACKUP

C'M1j:J4!!ffl Ad ...anc ed 8ack up

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 ...

Save a.n c ffsu e cop v to Node Squirr el ..

Add e not e le tb e beckup

Figura 10.S: Panel Backup and Migrate mostrando las opcione s rápidas para hacer copias de seguridad

Un a vez configurado el dir ectorio de archivos privado s, en el apartado Configura ción-


Sist erna-Backup and Migrate dispo nemos de la posibilidad de hac er un a copia rápida (Quick
Backup) en la cual se establecen estas opciones:

• Indicar de qué hacemo s copia:


Default Database. Base de dat os MySQ L en uso por Drupa!.
Public Files Directory. Dir ectorio de archivos públi co que contiene los archivos
creado s por los usuario s.
• Entire Site. Todo lo anterior.

• Indi car el dest ino de la cop ia:


Local-Manual Backups Directory. Se almace na la copia dentro del directorio de
archivos privados en la ruta qu e se indique en la pestaña Ajustes de Backup and
Migrate. Por defecto dentro del dire ctorio privado se alm acena en back upmigrate/
manual.
• Local-Download. El archivo de copia de segur idad se descargará desde el navegador.
NodeSquirrel. La copia se realiza en nu estra cuenta de NodeSquirreL

• A ñadir un comentario (Add a note to the backup). Lo cual es bastante conveniente.


UN IDAD 10. ADM IN ISTRACiÓN DE SIT IOS GESTIONADOS POR CMS 43 3

Tras pul sar el botón Backup now, la copia estará hecha.

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).

• Hacer copia solo de algunas tablas de la base de dat os.


• Excluir alguno s tipos de archivos y/o directorios al hacer la copia.
Enviar un ema il cuando se haga la copia o si falla la misma , dejar el sit io en modo omine
mientras se haga la copia .

10.6.1.2 PRO GRAMAR CO PIAS DE SEGU RIDA D


Si deseamos que las copias se realicen automáticamente de forma programada, debemos ir al
apartado Sche dule del pan el Backup an d Migrate. En ese panel podremos indicar:

• De qu é hacem os la copia (Baek up Souree ), la base de datos, archivos públicos o de to do.


Qué perfil (profile) uti lizam os al hacer las copias . Los posibles perfiles se gestiona n desde
el apartado ajustes.

• 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

10.6.1.3 RESTAURAR COPIAS D E SEGURIDAD


En el mi sm o pan el, yen do al apartado Restare podre mos restaur ar los datos procedentes de
un a copia de segur idad. Hay qu e ten er en cuenta qu e esto elim ina datos act ua les, por lo que solo
se debe rea lizar en caso de pérdida de datos.
Pode m os restaurar desde un archivo que indiquem os (Resto re [rom an uploaded fil e), o bien
desde una copia reali zada en la zona privada del servidor (Restore [rom a saved copy ).
434 IMPLANTACiÓN DE APLICACION ES W EB

10.6.1.4 AJU ST ES AVAN ZAD O S


El apartado Ajustes (Settings) del pan el permite establecer más opcion es sobre las copias de
seguridad. Concret amente:

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.

10.7 OT RAS TAREAS ADMINI STRATIVAS EN


DRUPAL
10.7.1 eRON
Todos los adm inistra dores de Lin ux conocen la utilidad cron . Se trata de un automatizador de
ta reas que fun cion a en cualqui er siste ma (no solo en Linu x, a pesar del nombre) y que hace qu e
Drupal ejecute automáticam ente una serie de comandos, entre los que fundame ntalmente está
el de bu scar actualizaciones del sistema.

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

10.7.2 INFORMES DE DRUPAL


Drupal dispone de un apartado llamado Informes en el menú de administración que permite
examinar diferentes aspectos del funcionamiento de Drupal.

Desde el punto de vista de la administració n en Drupal, el más interesante es la revisión de los


mensajes recientes en el re gistro, que muestra los logs de Drupal indicando todos los eventos qu e
han ocurrido en Drupal: errores, altas de usuarios, sesiones, ta reas de cron, etc.

10.7.3 ACTUALI ZACI ON ES


En el mismo panel de informes visto en el apartado anterior, disponemos de un enlace a las
actualizaciones disponibles. Si hay actualizaciones , aparece n resa ltadas en este panel. Además ,
se diferencian entre las act ualizac iones del núcleo de Drupal, las de cada módulo y las de los
temas. Hay además ot ras actualizaciones de seguridad que pueden aparecer; de hecho, aparecen
a menudo para arreglar fallos de seguridad en el sistema. Las act ualizaciones de seguridad se
deben realizar lo antes posible. Las ot ras actualizaciones no hace falta hacerlas tan rápido, ya que
aportan más func ionalidades, pero no son críticas.

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

[2] Descargar la actualización. Se puede hacer desde el mismo panel de actualizaciones.


También pod emos descargar versiones concre tas desde la página oficial de Drupal.org.

[3] La descarga es un archivo comprimido. La descomprimimos. Tendremo s un direct orio con


la nu eva versión.

[4] Borrar todos los dir ecto rios de Drupal excepto el directorio sites.

[5] Copiar los archivos de la nu eva versión de Drupal.

[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.

[7] Comprobar qu e todo funciona cor recta me nte.

10.8 SEG URIDAD EN D RUPAL


Una vez más, lo dicho en WordPress sobre la segur idad (Apartado lOA "Seguridad en WordPress",
en la página 425), vale para Drupal por lo que debemos aplicar las mismas acciones en Drupal.
436 IM PLANTACi Ó N DE APLICAC IONES WEB

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.

Security rev iew o RUN & REVlEW

~ RUN

Review results fr om last run Mar. 08 /04 / 20 15 - 12:2 5


Her e vou c an r evr ew th e re s ul r s tren- th e la s ! run of the chec kh s t . C h e c ks ar e no t alwa v s perfe c tlv co rreet 10 th efr procedure an d r e s ut t .
You can keep a ch eck from runn lng by chckmq the 'Skip' lin k be srde It. You can run t he checkl rst aga m by expand ing t he ñe lds e t a bo ve .

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

o Ba se URL 15 no t ser In settlnQs .p hp . Detalles Sk lp

o Erro rs a re wrirren te t he acree n Detalles 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

Pnvete file s drrectcrv IS ou t srd e tbe ...eb serve- ro ot . Detett es SklP

le sensmve te rnpo ra rv file s v;er e fo und Detetre 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 .

Los errores típicos son:

• Untrusted roles do not have administrative or trusted Drupal permissions. Aparece ma r-


cado cuando a un usuario no segur o, se le han asigna do perm isos administrativos.

• 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).

• Base URL us not set in settinqs.php , Se trata de qu e no se ha indicado correctamente la


URL base del sitio web. Para ello, modifi ca el archivo set tings.ph p que está en la ruta
sites /default y coloca este código (segurame nte baste co n descornen tar y modificar un a
línea que ya existe), en el que localhost se cambia, si es necesario, por la URLa tu servidor:

$ba se_url = 'http : / / localhost/drupa l ' ;


UNIDAD 10. ADM IN ISTRACiÓN DE SIT IO S GESTIONADO S POR CM S 437

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.

SOLUCiÓN: PRÁCT ICA 10.1

[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.

[3] Repetimos el proceso y creamos al usuario Pedro y a Marta como Autores.

[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,

Car los Colabcr:d:J" c'

~ jefewp 1835 2

Luisa JUl55:~:_ ':''' g e 55r'.:I~ ez.ne : Ed:or

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.

[8] Cierra sesión y publi ca conte ni do con Marta y Carlos.

[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.

[15] Aho ra conecta com o Luisa y aprueba el comentario ante rior.

[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).

Práctica 10.2: Ro les y permisos en Drupa l


• Consig ue en Drupalla misma estructura de usuarios qu e tiene WordPress. Es decir consig ue
que haya usuarios edit ores , autores , colabora dores y suscriptores (además de los visita ntes).
• Haz qu e un autor y un colaborador publiquen conte ni do.
• Haz qu e un edito r mo difique el conte nido.
• Consigue qu e los comentarios solo los pu edan publicar usuarios registrados.
• Entra con un usuario aut or y luego con un suscriptor y publica contenido con cada uno de
ellos.
440 IMPLANTACiÓN DE APLICACIONES WEB

SO LUC iÓ N : PRÁCTICA 10.2

[1] Con el usuario administrador, ve al apartado Con figuración-Us uarios-C onfiguración de


la cuen ta. Ind ica que solo los administradores pu eden crear usuarios.

[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,

[4] Haz clic en Permisos

[5] Asigna los siguientes permisos a los roles:

• 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).

• Colaborador: Marcaremos Crear conte nido nu evo de Artícu los.

• Suscriptor: No marcaremos nada más qu e lo que hay


• A todos los usuarios dales permiso de ver el pan el administ rativo (no es lo normal, pero
no s sirve con fines didácticos).

[6] Guarda los cambios

[7] A ñade a la usuaria Luisa como editora, activa la cuenta y no hagas nin guna notificación a
su correo.

[8] Añade a Marta como autora


[9] A ñade a Carlos como colaborador

[10] A ñade a Susana como suscriptora


"' O'ISRE DE USUARIO ESTADO ROLES MIEMSRODURA"lTE O?ERACIONES

susane act ivo susc ript o r ~ seus nunca

carros ac tivo co tabcr acor 24 s.egs nun ca ~ d i: a r

c edro activo amor 1 ruin 36 segs nu nca

IT'.e rte act ivo autor 1 min 54 51.:g5 nunca editar

nusa act ive ecucr 2 nun s 20 Sfg 5 nunca

jc -c e act ivo as tronc mo 2 d ías 3 horas hace 2 días 3 horas

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

[11] Cierra la sesión. Conec ta como Marta y pu blica contenido

[12] Cierra la sesión. Conec ta como Carl os y publica conte nido

[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.

Práctica 10.3: Comprobar errores de seguridad en Drupal


• Instala el módulo Security Review, comprue ba y arreg la los err ores qu e indique

SOLUCIÓN: PRÁCTICA 10.3

[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.

[3] Activa el mó dulo (estará hacia el fina l del pane l).

[4] Ve al apartado lnformes-Security Review . Aparecerá un a pantalla de información .

[5] Observa errores y sugerencias.

[6] Corri ge los errores


44 2 IM PLANTACi Ó N DE APLICACIONES WEB

10.10 PRÁCT ICAS PRO PUESTAS


Práct ica 10.4: C rear una estructura compleja de usuarios y
contenidos en Drupal
• Con sigue crear un sitio web mediante Drupal en el que tengamos tres tipos de contenidos:
- Electrónica
- In form ática
- Cultura general
• En todos los tipos contenidos se aceptarán palabras clave (pueden ser de la ta xonomía tags
qu e ya existe) e imágenes. En electrónica e informática, además, habrá un campo que permita
indicar (opcionalme nte) un modelo de artículo al que puede que se refiera la entrada. Ese
camp o solo aceptará texto plan o.
• Crea un usuario para cada tipo de contenido, de modo que solo pueda escribir artículos de un
tipo Habr á un autor de electrónica, otro de informática y otro de cultura general
• No habrá más tipos de con te nido que esos tres
• La portada muestra todas las entradas (sean del tipo que sean) en orden cron ológico
• Además mu estra un menú qu e no s permita acceder a cada tipo de conte nido
• Crea un usuario más qu e tenga permiso de escribir y gestionar cualq uier tipo de contenido
• Consigue que solo la cult ura general acepte comentarios

Práctica 10.5: C rear un a est ruct ura co m pleja de usuario s y


co nte nidos e n Joomla!
• Consigue la misma est ructura anterior en ]oomla!
• Observa las diferencias de gestión y las impl icaciones que tien e

Práctica 10 .6: C rear una e st ruct ura co m pleja de usuarios y


co nt enidos en WordPress
• Intenta con segui r la misma estru ctura en \VordPress
• Ob serva las difer enci as de gestión y las impli caciones que tiene
UNIDAD 10. ADM IN ISTRACiÓ N DE SIT IOS GESTIO N ADOS POR CMS 443

10.11 RESUMEN DE LA UNIDAD


En un CMS hay diferentes tipos de usuarios. Cada tip o de usuario tiene asigna do un rol;
es decir, un con junto de perm isos.

En el caso de Wordpress hay 5 tipo s de usuario : administrador, editor, autor, colabora-


dor y seguidor.

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.

Tener el siste ma actualizado es importante para no tener agujeros de segur idad en el


mismo . Módulos, plugins y temas deben estar siempre al día. El núcleo del CMS no tan
a menudo porque en muchos casos implica una parada del servicio antes de reali zar la
actualización .

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

10.12 TEST DE REPASO


¿Cuáles de estas tareas no pueden ser ¿Qué ocurre en WordPress si dos usua-
realizadas por un usuario Editor en rios intentan modificar a la vez la misma
Wordl'ress? entrada?
Escribir entradas a' Solo uno puede acceder a editar, blo-
Editar entradas propias queando al otro usuario
Editar post de otros usuarios o, Pueden editar ambos usuarios a la vez
sin problemas
ti I Crear usuarios
eI Cada entrada en WordPress solo per-
e¡ Hacer come ntarios
tenece a un usuario, ninguno más la
Eliminar comentarios de otros pue de editar
usuarios
d Para modificar un post hay que blo-
¿Cuáles de estas tareas no pueden ser reali- quearle en el sitio web . De otro modo,
zadas por un usuario Autor en Wordl'ress? no se permite ni leerlo.
e; Escribir entradas I - ¿Para qu é sirve la constan te de WordPress
Editar entradas propias WP_POST_REVISION?
Editar entradas de otros usuarios Para mo dificar el aspec to del panel de
Crear usuarios revisiones
Hacer come ntarios Para lim itar el número máxim o de
f) Eliminar com entarios de otros revisiones de cad a entrada
usuarios c) Para indicar si permitimos revisiones
o no
:; ¿Cuáles de est as tarea s no pu eden ser rea- Las dos respuestas ante riores son
lizadas po r un usuario Colaborador en correctas
Wordl' ress ?
Escribir entradas - La im por ta ción de datos incorporada a
l¡ Editar ent radas propias WordPress...
a I Solo permit e recoger dat os de sistemas
L) Edit ar entradas de ot ros usuari os
WordPress
Crear usuarios
l I Perm ite recoger datos de varios serv i-
Hacer come ntarios cios y CMS
j l Eliminar come ntarios de otros e, Permite recoger datos de cualquier
usuario s CMS
... ¿Cuáles de estas tareas no pueden ser - Al actualizar el sist em a WordPress...
realizadas por un usuario Segu idor en
a, Hay qu e hacer copia de seguri dad de
WordPress?
archivos y dat os
Escribir en tradas
ti Hay qu e ha cer copia de seguridad de
Editar entradas propias los archivos
CI Editar entradas de otros usuario s e) Hay qu e hac er copia de seguridad de
,.¡ Crear usuarios los datos
Hacer comentarios _ I No es necesario h acer copia de
Elimi nar comenta rios de otros segurida d
usuarios
UNIDA D 10. ADM IN ISTRACiÓN DE SITIOS GESTIONADOS POR CMS 445

¿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

b) Hay qu e hacer copia de seguridad de ayuda de módulos ni servicios de


los archivos terceros
e1 Hay que hacer copia de seg ur idad de 1(j - Las decisiones de seguridad en Drupal...
los dat os a) Son muy diferentes de las que hay qu e
d) No es necesario hacer copia de tomar en Wo rdPress
seguri dad¿ b) Son pr áctic amente las mismas que hay
1:: . De cuántos r oles dispone Drupal? qu e to mar en WordPress

a) De tantos como queramos el Se toman a partir del informe qu e


redacta el m ódulo SecurityReview
b) De cinc o mediante el cua l tenemos la certeza
e) De tres de qu e no ha y nin gún probl em a de
d) De do s seguri dad
d) No son n ecesari as ya que Drupal es
, 3.- ¿Qué es e ra n?
totalm ente seguro, a diferen cia de
al El panel de admini st ración de Drupal WordPress
b El archivo qu e almacena las tareas qu e
va realizando el siste ma
e) Un módulo de automat izació n de
tareas programadas
él El reloj del siste ma que utiliza Drupal
UNIDAD 11

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

- Crear documentos a través de un servicio 1104 USO DE LOS SERVICIOS DE OFIMÁTICA


de ofimát ica we b ONLlNE DE GOOGLE DRIVE
11.4.1 EM PEZAR A UT ILIZA R EL SERVICIO
11.4.2 INTERFAZ DE GOOGL E D RIVE
Elaborar docum entos de for ma 11.4.3 EDICiÓ N DE DO CU M ENT O S
co laborativa a provec hando las principa les 11.4.4 CO N VERT IR DOC UM ENTO S
o pciones de trabajo de los prod uctos de 11.4. 5 T RABAJO SIN CO NEXiÓ N
ofimátic a o nline 11.4.6 TRABAJO CO LABOR AT IVO CO N
GOO GLE DO CS
11.5 PRÁCTI CAS RECOMENDADAS
11.6 RESUMEN DE LA UNIDAD
11.7 TEST DE REPASO
448 IMPLANTACiÓN DE APLI CACION ES W EB

11.1 APLICACIONES DE OFIMÁTICA WEB


La aparición del Cloud Computing ha supuesto un cam bio de form a de tra bajar a casi tod os
los usuarios. La aparición de herramientas de todo tipo qu e almac enan los dato s del usuario en
Internet ha tenido tambi én una gran influencia en la form a de trabajar en el mundo empresarial.

En la informática clásica de oficina , una persona se sentaba en su puesto de trabajo , creaba o


modificaba sus documentos y los almac enaba. Si tenía que ut ilizar otro equipo, debía llevarse los
documentos. Una mejora al respecto , fue el hecho de qu e se utili zaran directorios compartidos
en red, de modo qu e el almacena mie nto de los docum entos se centraliza y no importa ya en qu é
equipo esta mos sentados. Pero la cuestión es si queremos tra bajar fuera de la oficina , incluso en
el tren que nos lleva al tra bajo, uti lizando cua lquier tipo de dispos itivo , incluidos nuestros dispo-
sitivos móv iles.

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.

11.2 VENTAJAS Y DE SVENTAJAS


11.2.1 VENTAJAS DE LAS H ERRAMIENTAS DE
OFIMÁTICA WEB
• Mínimos r equisitos de instalación. Basta conexión a Intern et y un navegador web, un
poco actua lizado.

• 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.

• Centralización de lo s documentos. Podem os acceder desde cualquier dispositivo y


siempre veremos el último trabajo que hemo s realizado.
U NIDAD 11. IM PLANTACi Ó N DE APLICACIONES DE OF IMÁT ICA WEB 449

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.

11.2.2 DES VE NTAJAS DE LAS HERRA M IE NTAS DE


OFI MÁTICA WEB
11 Menor potencia. Las herramientas de oficina clásicas que se in stalan en el equipo ofre-
cen, en principio, una mayo r potencia y rapidez. Las herrami entas online dep enden de
la potencia que les ofrecen los navegadores y siempre es m enor que trabajar de form a
local en el equipo. Las aplicaciones instalada s aportan má s funciones , objetivamente
hablando, que las que se utilizan online.

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.

• Delegación del control de la info rmación. Los documentos empresariale s, fácilmente,


contiene n información privada que, en ningún caso, se desea exponer a la vista de cual-
quier persona. En el momento que se utili zan servicio s de oficin a en la web, estamos
cediendo el control de nuestros documentos a la empresa propietaria del software. Hay
que tener en cuenta estas cuestione s:
Seguridad del servicio en la web. Necesitamos ten er la absoluta seguridad de qu e el
servicio ofrece m ecanismos que no permiten el acceso no autor izado.
Eliminación de la información cuando abandonemos el servicio. La cue stión es,
qué ocurre si no deseamos seguir utilizando el servicio. ¿Se eliminará en los servido-
res del propietario del software esa información?
450 IMPLANTACiÓN DE APLI CACION ES W EB

Legislación del propietario del software. Es un problema propio de Internet. La


emp resa que aloja nuestros contenidos puede perten ecer a otro país, por lo que la
legislación que se aplica a estos contenidos en cuanto a privacidad, propiedad inte -
lectu al, etc, pue de ser distinta respecto a la de la em presa que creó los contenidos.
Ha habido en estos años actuaciones en ciertos gobiernos que han sido criticadas por
algunos sectores, al acceder, dichos gobiernos, a conte nidos privad os gracias a leyes
especia les de seguridad, antiespionaje , etc.

• 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.2.3 CONSECUENCIAS DE LAS VENTAJAS Y LAS


DESVENTAJAS
Parece claro que las herramientas de ofimá tica web son una excelente opción, especialm ente
par a el trabajo empresar ial colaborativo. Las ventajas son suficientes para cons iderar las como
una h erramien ta casi imprescindible en las tareas de oficina . Hay qu e tener en cuenta las desven -
ta jas para paliarIas, en la medid a de lo posible.
En el caso de que utili zar herr amien tas on line en Internet suponga abrir los problema s más de
lo debido, siempre se pueden utilizar soluciones insta lables y distribuibles en la Intranet empre-
sar ial, como es el caso de SharePoint de Microsoft y otras.

"
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.

11 Documento sin thuto


Archivo

~
Editar

e- . .... ~
Ver Insertar

100'·; ~

Formato Herramientas

t exto n orm al ~ Arial


Tabla Comp'ementos

11
Ayuda Yodos los ccmentance ':'iI'M
12 ~ 3

¡Nuevo plane ta encont rado!


Se ~nS5?!.lg~ºg el planeta rocoso mas cercano a la Tier ra de los que se ccnocen fuera del
Sistema Sola r.

Figura 11.1: Aspecto del procesado r de texto de Coogle Docs.

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.

11.3.2 MI CRO SOFT OFFI C E ONLINE . MI CRO SOFT


O FFICE 365
La versió n de Micro soft para su propia versión de servicio de ofimática web se llamó ini-
cialme nte Office Web Apps. Actua lmente se llam a Microsoft Office Online y es una versió n
gratuita y solo accesible on line de sus clásicos Word, Excel y PowerPoint, a los qu e se han a ña-
dido OneNote (software de creación de anotaciones), Sway (software de exposición de ideas),
Microsoft Calendar, control de contactos y el gestor de correo Microsoft Outlook.

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

¡¡¡ Word Online 0ne0riYe ' Documentos Documento 1 l,. Comp.a""

¡Nuevo planeta encontrado !


Se encontrado el planeta rocoso más cercano a la Tierra de los.que se conocenfuera de!
Sis tema Sol ar ~

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 .

11.3.3 ZOHO DOCS


Solución ya veterana para generar documentos ofimáticos vía web. Ofrece capacidades simi-
lares a las solucio nes de Coog le y Microsoft. Además , man tienen la com pati bilidad con los docu-
mentos de Microsoft Office. Permite tra bajar sin conexión y también aporta almacena miento en
línea .
Su oferta gratuita se compone de I CB de almacenamiento para cada usuario, sinc ronización
con archivos en el escritorio del usuario, procesador de textos, hojas de cálculo , software de pre -
sentac ión, contro l de versiones y administración de usuarios. Es gratis hasta 25 usuarios , a partir
de ahí, proporciona más espacio de almace na miento online y prestacion es avanzadas.
• ?

i"! uevo planeta enc o nt ra do!


Se ha encontrado el planeta rocoso mas cercano a la Ti er ra de les que s.e conoc en fuera del
Sistema Solar I

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.

11.3.4 THINKFREE ONLlNE


Otra de las alt ernativas como aplicación de ofimática web. Ofrece almac enamiento gratuito,
trabajar sin con exión, compatibilidad con Microsoft Office, etc. En definitiva, prestaciones simi-
lares a las otras soluciones.

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.

11.4 USO DE LOS SERV IC IOS DE


"
OF IMAT ICA O NL INE DE GOOGLE
DR IVE
11.4.1 EM PEZAR A UTILI ZAR EL SERVICIO
Como se ha comentado anterior mente, la solución de ofimática online de Google está inte-
grada dentro de Google Orive que ofrece soluciones más completas al trabajo diario de oficina.

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:

[1] Acceder a la URL: https:/Iaccounts.goo gle.com


454 IMPLANTAC iÓN DE APLICAC IONES WEB

Ca glc

Una ci.enta Todo Google .

Figu ra 11.4: Página de acc eso a Jo s se rvicios de Google. !l.t.u;1s://accounts.google.co m

[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.

• Fecha de nacimiento. Es obligatorio in di carla.


Tras introducir estos datos, se no s pide aceptar las condiciones de uso de n uestros datos y
los datos extra que Google recaba de nosotros, que deberíamo s leer at entamente.
UN IDAD 11. IMPLANTACiÓN D E APLI CACION ES D E O FIMÁT ICA W EB 455

[4] Ahora estaremos en la dirección htt12s://m vaccount.google.com qu e hace de portal cen-


tr alizador de nu estros servicios con Google. Podemo s hacer d ie en el m enú m para acce-
der al servicio de Google qu e deseemo s. Tambi én pod emo s dir ectam ente ir a la dirección
https://dri ve.google.com para acceder a Google Drive dir ectam ente.

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.

11.4.2 IN TERFAZ DE GOOG LE DRIV E


Ca glc .. ... O

L. Drive Mi unidad ... Á.z O

-iI,l'+ • precttcas-bas es-c • precüca s-pto qta

I . . [J Mi unidad

• p-acncas-bases-de-dat

• pracnc as-oroqram acro _::..':'" ....:;...::'.:.-"::


..
; '" ' -:~

"--: -: -; ~- ~ '-- .=. - - ~ ': •


Compa rtido conmrqo '::."::"'~ ~'""=~~ :::::= ~-_.

,\.. Google Fotos ¡ ~~ZflEE~;:


Il:i cartés-formal.pdf (] Cuent as W cu mpurnie nto-tnm e Gui a de l prof esor
0 Reciente

*i
Destacado

Papeler a

1::1 u sta de tareas Prog ram a cu rso 20.. W rheo.d oc

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.

Buscar documentos. Gracias al buscad or que Google in corpora en la parte superior;


mu y útil en el caso de tener muchos documentos.
456 IMPLANTACiÓN DE APLICACION ES W EB

• 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.

• Eliminar do cumen to s y carpetas. Haciendo clic en el botón derecho tras seleccionar


el archivo o carp eta (podem os seleccionar varios usando las mismas técnica s que en los
sistemas operativos: tecla Ctrl, Mayúscu las, dibujar un rectángulo, etc) y luego haciend o
clic encima de la selección con el botón secundario del rat ón y escogiendo la opción
Eliminar del menú que aparece.

Podemos también simplemente arras t rarlos a la papelera .

• 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,

• Cambiar nombre. Opción disponible tambi én en el menú secundario.


• Descargar. Opción qu e permite dejar un a copia del archivo en nu estro escritorio. Los
archivos de Coo gle Docs, al descargar, se conviert en aut omáticame nte a formato de
Micro soft Office para ser tratados en el ord en ado r de escrit orio, ya que no hay ningun a
herram ienta de escritorio para manipular documentos de Coogle Docs.

11.4.3 EDICiÓN DE DOCUMEN TO S


Sea porque hemos hecho dobl e clic en un documento de Coogle Docs presente en nu estro
escritorio o porque lo cream os nu evo, pasaremo s a un a ventana nueva en la qu e se no s presen ta la
interfaz de modifi cación de documentos qu e variará en función del tipo de documento: pro ceso
de text o, hoj a de cálculo, presentación, etc .

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:

• Cambiar de nombre al archivo (menú Archivo).

l1li Descargar en otro formato (me nú Archivo) como Micros oft Office, PDF u Open Office.
Imprimir (menú Arc hivo)

Deshacer y rehacer acciones (menú Edición)

Añadir com pleme ntos (menú Com plement os)

11.4.4 CO N VERT IR DOCU ME NTOS


Si ten emos archivos de Micro soft Office, u otros formato s compatibles, subidos a nuestro
espacio de Google Drive. Simplemente haciendo dobl e clic en ellos pod emo s convertirles a for-
mato de Goo gle Docs. Suele aparecer un men ú con esta opción, o un menú con el text o Abrir en
la part e superior. También con el bot ón secundario del ratón encima del docume nto , elegir Abrir
con """ ' y despu és seleccionar la aplicación de Google que aparece en el menú.

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.

11.4.5 TRABAJO SIN CO NE X iÓ N


Google Drive (y por lo tanto Google Docs) tiene la posibilidad de trabajar sin conex ión, acce -
diendo de form a local a los archivos. No es en absoluto la idea prin cipal del servicio, pero sirve
para cuando no tenemos cone xión por la razón qu e sea.

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

Cuando queramos modificar un archivo de Google Docs en el directorio sincronizado, abrirá


n uestro navegador predeterm inad o y desde él se realizará la edición, ya que Google Docs n o dis-
pone de aplicación en el escritorio.
_ Cl
Goog le Orive
Compartir ..'1St a v O
t &. ~ Jorqe Senchez Gccp!e Drive p

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

11.4.6 TRABAJO COLABORATIVO CO N GOOGLE


DOCS
Indudablem en te es un a de las grandes ventajas de tra bajar con servicios de ofimá tica on line.
Como el documento está en la nube cualquier person a (a la que permitamos el acceso) puede edi-
tar o ver el documento simpleme nte con disponer de cone xión a Internet y un navegado r.

Esta form a de trabajo da un a mayor agilidad cuando varias person as deben de realizar un
docum ento conjuntamente .

11.4.6.1 COMPARTIR DOCUMENTO S

Compartir con otros Obtener enlace para c ompartir c-:¡

Personas

~ Jo<ge Sanch ez x .:. peéroiaw2015@gm ail c om x ,. Puede editar .

Prepárate para trabaja r en este docum ento!

la Cancelar

Figura 11.7: Panel de selecció n de usuario s par a com partir un documen to


UN IDAD 11. IM PLANTACi Ó N DE APLI CACION ES DE O FIM ÁT ICA W EB 459

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).

11.4 .6.2 CO MPA RT IR EN LACE


Cuand o se hace clic en el botón de compartir, dispon em os de la opción Ob tener en lace para
compartir, la cua l crea un enlace. Ese enlace permite ver (no editar) el do cumento. Aquellas per-
sonas a las que enviemos este enlace tendrán a su dispo sición el do cumento.

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:

Compar tir el enlace por Goo gle+, Twitter y Facebook.

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).

11.4.6.3 ESCRITURA CO LA BO RAT IVA


Google Docs admite qu e el mismo documento sea modificado por más de una persona. De
hecho , incluso admite qu e se haga esa modificación al mismo tiempo. Es decir, si hay tres per-
sonas con permi sos de escr itura en el documento, y todos les está n edita ndo, cada usuario ve
marcado en su documento los cur sores de los otros, viendo adem ás com o van cambiando el
documen to .
460 IMPLANTACi ÓN DE A PLICACIO N ES W EB

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

11.4 .6.4 ESC RIT U RA DE CO ME NTA RIO S


Los comentarios permiten escribir avisos corno text o aparte, es decir el texto de los comenta-
rios no forma part e del do cumento .

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

• Preparar proo ramaoón del curso


.: Revis ar programaciones de otros cursos
: Redactar la nueva prog ramación Luisa 1.4\\1
12.";SHe,
• Revisar la programación en conjunto
,; Realizar pnmera es urqent e l!t
• Determinar la ternponzacíón de la programa ción
_ Crear Excel para los cálculos ~ ;;~~eti:;nchez
En seguida me pongo a ello

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.

11.4.6 .S ESCRITURA DE SUGEREN CIAS


Norma lmente el modo de trabajo al escribir documen tos en Coo gle Docs es el de edición, en
el cual el fun cion ami ento es el come ntado: cada usuario con permiso de escritura en el docu-
mento puede escribir y sus cambios se graban al instante (o casi al in stante) en el docum ento.
U NID AD 11. IMPLANTACi ÓN D E APLI CACION ES DE OF IM ÁT ICA W EB 461

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

• Prepara r programación del curso


e Revisar programaciones de otros cursos
: Redactar la nueva programación
• Revisar la programación en conjunto
: Realizar pnmera
• Determinar la temponzación de la programac ión
Crear Excel para los cáicmos'
Determinar la temporizació'; luisalAW 2015
./ X

Añ adir: 'De;errnma r ia ~emporr:aci6n'

Figur a 11.10: Documen to con texto en mo do de sugerencia.

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.

11.4.6 .6 REVISiÓN D E LO S CA M BIO S


Podemos observar el historial de los cambios realizado s en un documento a través del enlace
qu e está a la derech a de la ayuda, qu e tam bién se usa para saber si el documento está guardado
ono.

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! ·.: ·· ~ ~·

Preparar prcqrernacrón del C',JfSO 31 cejulio 220 3


Revisar prcqramao cnes de otros curso " . i. ~ ~ ~ _~ , '. ?" 1 ;<

·
• ~ .~~ J ' >,'S
Redactar la nueva prcqramacrón
Revosar la procramacón en coruuruo 31 ce julio 21 ~ 3
.: Reauzarpnmera ~~ -:. /. : ~";

Determn a- la temponzecrónde la prcqra maoó n 31 ce julio 191 5


. C.

Figur a 11.11: Docum en to mo str ando el panel de revisiones.


462 IMPLANTACIÓN DE APLICACIONES W EB

,
11.5 PRACTICAS PROPUESTAS

Práctica 11.1: Doc ume nto co laborativo en Google Docs


• Si no tienes una cue nta en Google Drive, créate una (valdría cua lquiera crea da en otro servi-
cio de Google) .
• A continuación pon te de acuerdo con un par de com pa ñeros qu e también te nga n cuenta,
• Escribid un do cumento conjunto sobre cualquier tema qu e se os ocurra
• Revisad lo qu e cada un o ha escrito
• Ponte en modo sugerencia y espe ra que otro compa ñero te apruebe la sugerencia
• Pon a otro compa ñero en modo lectu ra con come ntarios y pid e qu e escr iba un comentario
• Respo nd e a ese come ntario y escribe un par más
• Anula el primer come nta rio
• Escribe un trozo de tex to largo y des pués de unas horas, elimínalo volvien do a la versión
previa del doc ume nto.

Práctica 11.2: Documento colaborat ivo en Office Onlin e


• Inten ta realizar las mismas accio nes con un a cue nta de Office Online
• Compara en ambos casos las posibilidades

Práctica 11.3 : Presentación online con Google Docs


• Realiza una presentación en Google Doc s
• Haz qu e la pr esentación pueda ser vista por cualqui er persona
• Haz otra presentación y cons igue otro en lace para verla, pero ahora consig ue qu e solo dos
personas la puedan ver

Práctica 11.4: Form ulario o nline


• Cre a un formulario que ha ga un pequ e ño test sobre películas favoritas , Una pre gunta pedi rá
elegir el géne ro favorito (Acción, Comedia, Suspense...). Otra pr egunta pedirá de qué país
so n las películas que más le gusta n (EEUU, Españ a, México, Argen tin a, Francia, ltalia.i.)
• Envía el en lace al formulario a varia s personas y cons igue qu e cuando una per so na responda
al formulario, automáticamente vea los resultados.
• Además haz que los res ultados se almacenen en un a hoja de cálculo para que pu edas anali-
zarlos más fácilme nte
U N IDAD 11. IM PLANTACi ÓN DE APLICACI ON ES DE OF IM ÁT ICA W EB 463

11.6 RESUM EN DE LA UNIDA D


• Las aplicaciones de ofimát ica web posibilitan llevar a la práctica el paradigma BYOD,
por el qu e los tr abajadores utilizan sus propios dispositivos para el tr abajo. Ya qu e se
accede a un ser vicio centr alizado en Intern et y accesible desde cualquier dispositivo con
conex ión .

• 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.

• Sobre cada documento podremo s:


Trabajar sin cone xión.
Compartir el documento, sea para editar o solo para verle , a otros usuarios.
Escribir de forma colaborativa los contenidos, revisando las diferentes versiones y
escribiendo y respondiendo a comentarios.
Trabaj ar en modo sugeren cia hasta que otros usuarios (o nosotros mismos) aprueben
dicha sugerencia.
Organizar los docum en tos en carpetas y subcarpetas. Estableciendo una organiza-
ción a medida en nuestra cue nta.
Uti lizar una carpeta sin cronizada en nu estro or denador de escritorio para tener,
directamente en ella, los doc ume ntos que vamos editando en la nu be. Y viceversa,
que en la nube aparezcan los documen tos qu e editamos en n uestro orde nador.
464 IM PLANTACi ÓN DE APLICAC IO NES W EB

11.7 TEST DE REPASO


A qué hacen referencia las siglas BYOD? ¿En qué formato se descargan los archivos
A la pro hibición que muchas empresas de Coogle Docs?
imponen a sus trabajadores de no usar Se convierten a formato compatible de
dispositivos electrónicos personales. Microsoft Office.
Al hech o de qu e los propios t rabaja- En el forma to nativo de Coogle Docs.
dores lleven sus pro pios dispositivos ...) En XML, concretamente Open
elect rónicos. Docume nt
A qu e cada vez menos ord enadores y j Se guarda solo un enlace, realmente
ot ros dispo sit ivos requieran cable. solo se pu eden abrir en la nub e.
A qu e los pro pios trabajadores te ngan
datos persona les en los dispositivos de - ¿Qu é ti po de product o es Microsoft
la empresa. Sharepoin t?
Un serv icio de com partición y creación
¿Cuál de las sigu ientes no es una ventaja de doc um entos, inicialmente orien-
de la ofimática web? tad o a lntran et s.
Mínimos requ isitos de instalación Un serv idor web con capacidad de
Delegación del control de la abrir documen tos de Word y Excel.
inform ación Una producto ofimática de escritorio
L Facilid ad para la colaborac ión al estilo de Microsoft Office.
rJ. I Mayor seguridad oI Un Sistema Operativo.

- ¿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

ste libro puede ser de gran utilidad para aqu e-

E llos estudiantes, docentes y profesionales que


quieran empe zar a formarse o profundizar en
la Implantación de Aplicaciones Web.

Cada unidad está escrita la siguiente forma:


• Se exponen los contenidos t eóricos de la mis-
ma tratando de fomentar la aplicación inm e-
diata de los mismos, para lo cual se proponen
algunas actividades.
• Tras los contenidos se plantean prácticas que
se explican y resuelven en el propio texto y
que se proponen para realizar a la vez que se
estudia la parte teórica .
• Hay una página final de resumen de la unidad
con las ideas más interesantes vistas en la mis-
ma.
• Al final de cada unidad se han elaborado pre -
guntas de tipo test para evaluar nuestra com -
prensión del texto.

Apache, PHP, MySQL, WordPress y Drupal, bajo


los sistemas Windows y Linux, son las tecnologías
sobre las que camina este texto. La idea no es
tanto dominar estas tecnologías concretas, como
explicarlas con una profundidad suficiente como
para trabajar profesionalmente con ellas o migrar
a otras tecnologías sin grandes dificultades.

978-84-1622 -83 0-0

www.garceta.es

También podría gustarte