fp_asix_m09_u1_pdfindex

100
Llenguatges de guions de servidor Eduard García Sacristán, Eduard Latorre Jarque, Montserrat Madridejos Mora, Raúl Velaz Mayo Adaptació de continguts: Eduard García Sacristán Llenguatges de guions de servidor

description

ioc asix

Transcript of fp_asix_m09_u1_pdfindex

  • Llenguatges de guions deservidorEduard Garca Sacristn, Eduard Latorre Jarque, MontserratMadridejos Mora, Ral Velaz MayoAdaptaci de continguts: Eduard Garca Sacristn

    Llenguatges de guions de servidor

  • Llenguatges de guions de servidor Llenguatges de guions de servidor

    ndex

    Introducci 5

    Resultats daprenentatge 7

    1 Installaci de servidors daplicacions web 91.1 Anlisi de requeriments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

    1.1.1 LURL. Accs a recursos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91.1.2 HTTP: comunicaci entre servidor i client . . . . . . . . . . . . . . . . . . . . . . . 101.1.3 Contenidors web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

    1.2 Servidors web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121.2.1 Servidor web Apache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131.2.2 Installaci dApache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141.2.3 Configuraci bsica dApache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141.2.4 Configuraci de directoris personals . . . . . . . . . . . . . . . . . . . . . . . . . . . 151.2.5 Configuraci de mduls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161.2.6 Control daccessos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

    1.3 Llenguatges script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181.3.1 Llenguatges script de client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181.3.2 Llenguatges script de servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191.3.3 Installaci de PHP5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

    1.4 MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201.4.1 Installaci de MySQL a Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

    1.5 phpMyAdmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211.5.1 Installaci del phpMyAdmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

    1.6 Utilitats de prova i installaci integrada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231.6.1 Utilitats de prova . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

    1.7 Documentaci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261.7.1 Eines dajuda a la creaci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

    2 Programaci web de servidor 292.1 El llenguatge PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

    2.1.1 Funcionament del llenguatge PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292.1.2 Configuraci del llenguatge PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302.1.3 Eines de programaci per a PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312.1.4 Sintaxi del llenguatge PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312.1.5 Tipus de dades del llenguatge PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322.1.6 Operadors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332.1.7 Cadenes i matrius en PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362.1.8 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392.1.9 Estructures de control i sentncies . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402.1.10 Funcions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482.1.11 Classes i objectes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

    2.2 Integraci PHP amb HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

  • Llenguatges de guions de servidor Llenguatges de guions de servidor

    2.2.1 Ls del PHP en formularis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512.2.2 Tipus de dades en PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542.2.3 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572.2.4 Excepcions en PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632.2.5 Galetes (cookies) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 642.2.6 Encriptaci de dades amb el PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

    2.3 Programaci orientada a objectes en PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 692.3.1 Les classes en PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 702.3.2 Objectes en PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 722.3.3 Herncia en PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

    3 Accs a bases de dades des de PHP 793.1 Gestors de bases de dades ms usats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 793.2 Gesti de bases de dades amb PHPMyAdmin . . . . . . . . . . . . . . . . . . . . . . . . . . 803.3 Connexi amb el servidor MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823.4 Tancar la connexi a la base de dades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 833.5 Selecci de la base de dades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 843.6 Treball amb la base de dades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

    3.6.1 Inserci dinformaci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 853.6.2 Consulta dinformaci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 863.6.3 Modificaci dinformaci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 883.6.4 Esborrar registres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 893.6.5 Gesti derrors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

    3.7 Creaci duna base de dades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 903.7.1 Creaci de taules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

    3.8 Mecanismes de seguretat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 933.8.1 Codificaci de la informaci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 933.8.2 Accs restringit a pgines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 953.8.3 Seguretat a la base de dades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

    3.9 Verificaci i proves . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 973.9.1 Nagios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 983.9.2 Pandora FMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 983.9.3 Proves de rendiment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

  • Llenguatges de guions de servidor 5 Llenguatges de guions de servidor

    Introducci

    Actualment s difcil trobar pgines web que estiguin creades estticament. Elsllenguatges de guions de servidors permeten crear webs duna forma rpida iflexible, permetent la interacci amb lusuari i utilitzant dades provinents de basesde dades. PHP s probablemente el llenguatge de guions de servidors ms popularactualment i, juntament amb la base de dades MySQL i el servidor web Apache,fan un equip molt potent amb el qual treballar continguts web.

    En lapartat Installaci de servidors web veureu el funcionament bsic dunservidor web i tot el procs des que es fa la petici web fins que els resultats esmostren per pantalla. Aprendereu a installar un servidor web, un servidor de basesde dades i el llenguatge de guions de servidor.

    En lapartat Programaci web de servidor aprendereu a programar en PHP i laseva integraci dins del llenguatge demarques HTML. Dins de PHP hi ha una granvarietat de funcions que fareu servir per realitzar els vostres webs. Per ltim veureucom fer servir el paradigma dorientaci dobjectes dins dels vostres programes.

    En lapartat Accs a bases de dades des de PHP veureu les funcions i meca-nismes bsics per treballar amb dades que es troben a una base de dades dins deprogrames escrits en PHP. Tamb veureu els diferents mecanismes de seguretatque podeu aplicar als webs dinmics i com fer verificaci i proves del web.

    Per seguir els continguts daquest mdul, s convenient anar fent les activitats i elsexercicis dautoavaluaci i llegir els annexos que sindiquin. Tot i que les unitatsformatives tenen un contingut important des del punt de vista conceptual, sempresha procurat donar-los un enfocament prctic en les activitats proposades.

  • Llenguatges de guions de servidor 7 Llenguatges de guions de servidor

    Resultats daprenentatge

    En finalitzar aquesta unitat, lalumne/a:

    1. Prepara lentorn de desenvolupament i els servidors daplicacions web ins-tallant i integrant les funcionalitats necessries.

    Identifica el programari necessari per al seu funcionament.

    Identifica les diferents tecnologies emprades.

    Installa i configura servidors web i de bases de dades.

    Reconeix les possibilitats de processament en els entorns client i servidor.

    Afegeix i configura els components i mduls necessaris per al processamentde codi al servidor.

    Installa i configura laccs a bases de dades.

    Estableix i verifica la seguretat en els accessos al servidor.

    Utilitza plataformes integrades orientades a la prova i desenvolupamentdaplicacions web.

    Documenta els procediments realitzats.

    2. Genera documents web utilitzant llenguatges de guions de servidor.

    Identifica els llenguatges de guions de servidor ms rellevants.

    Reconeix la relaci entre els llenguatges de guions de servidor i els llen-guatges de marques utilitzats en els clients.

    Reconeix la sintaxi bsica dun llenguatge de guions concret.

    Utilitza estructures de control del llenguatge.

    Defineix i utilitza funcions.

    Utilitza formularis per introduir informaci.

    Estableix i utilitzamecanismes per assegurar la persistncia de la informacientre diferents documents web relacionats.

    Identifica i assegura els usuaris que accedeixen al document web.

    Verifica lallament de lentorn especfic de cada usuari.

    3. Genera documents web amb accs a bases de dades utilitzant llenguatges deguions de servidor.

  • Llenguatges de guions de servidor 8 Llenguatges de guions de servidor

    Identifica els sistemes gestors de bases de dades ms utilitzats en entornsweb.

    Verifica la integraci dels sistemes gestors de bases de dades amb elllenguatge de guions de servidor.

    Configura en el llenguatge de guions la connexi per a laccs al sistemagestor de base de dades.

    Crea bases de dades i taules en el gestor utilitzant el llenguatge de guions.

    Obt i actualitza la informaci emmagatzemada en bases de dades.

    Aplica criteris de seguretat en laccs dels usuaris.

    Comprova el funcionament i el rendiment del sistema.

  • Llenguatges de guions de servidor 9 Llenguatges de guions de servidor

    1. Installaci de servidors daplicacions web

    Internet sha convertit en la principal eina dintercanvi dinformaci a la societatactual. La connexi dels ordinadors a les xarxes locals i aquestes xarxes a daltresde grans dimensions ha possibilitat la comunicaci global dinformaci entre elsordinadors arreu del mn. Per poder oferir serveis web, els servidors han de tenirinstallats una srie de serveis. El servidor web permet lenviament de continguts aaltres ordinadors a travs de la xarxa. Els preprocessadors dhipertext (com PHP)permeten crear continguts web de forma dinmica. Els servidors de bases de dadespermeten emmagatzemar informaci de forma estructurada que es pot fer servirper generar contingut web. Aquests serveis han de ser installats i configuratscorrectament abans de comenar a crear el contingut web dinmic del nostre web.

    1.1 Anlisi de requeriments

    Un servidor web s una pea de programari que respon a les peticions delsnavegadors i lliura la pgina per al navegador a travs dInternet. Quan es crida auna pgina web per ladrea lURL (uniform resource locator), per exemple,www.ioc.org/index.html, la comunicaci entre el navegador i el servidor spossible grcies a tres protocols:

    TCP(Transmission Control Protocol, protocol de control de transmissi):s el responsable de fer que el missatge arribi a la destinaci sense errors.

    IP(Internet Protocol): s el responsable de fer que el missatge trobi el camfins al servidor.

    HTTP(Hypertext Transfer Protocol, protocol de transferncia dhipertext):s el protocol que ha indicat lusuari a lhora de demanar el recurs alservidor. La primera part dun recurs URL correspon al protocol queutilitzaran client i servidor per intercanviar dades.

    1.1.1 LURL. Accs a recursos

    Una adrea URL t la finalitat daccedir a un recurs en un servidor.Totes les adreces URL tenen diferents parts; agafem com a exemplehttp://ioc.xtec.cat:80/educacio/fp-cicles-formatius/cfgs/index.html:

    Protocol: sindica abans de :// i en aquest cas s HTTP. Hi ha altresprotocols, com ara FTP o HTTPS.

    Protocols

    El navegador utilitza el protocolHTTP sobre TCP/IP perdemanar recursos (URL) alsservidors web.

  • Llenguatges de guions de servidor 10 Llenguatges de guions de servidor

    Sollicitud client

    El client envia, utilitzant elprotocol HTTP, una capaleraamb informaci sobre el recurs

    que vol, el mtode que shadutilitzar. Desprs de la

    capalera, senvia, si nhi ha, lainformaci dusuari.

    Adrea del servidor: el lloc don es vol obtenir el recurs (ioc.xtec.cat).

    Port: el port del servidor destinat a laplicaci encarregada de gestionar lespeticions HTTP (port del servidor web). En cas de que no estigui especificates fa servir el port estndard per HTTP (el port 80).

    Ruta fins al recurs: correspon a la ruta a la carpeta dins del servidor webon es troba el recurs (educacio/fp-cicles-formatius/cfgs/).

    Recurs: s el recurs o fitxer que demanem al servidor (index.html).

    El que primer fa el navegador s comunicar-se amb un servidor de noms per obtenirladrea IP que correspon al nom de la mquina ioc.xtec.cat. Amb aquesta IP esconnecta a la mquina servidor. A continuaci, el navegador crea una connexiamb ladrea IP del servidor al port 80, que s el port utilitzat per defecte en elsservidors web. Una vegada el client i el servidor estan connectats, parlen fentservir el protocol HTTP per tal que el client indiqui quins recursos vol del servidor.El servidor enviar aquests recursos al client a travs de la connexi establerta.

    1.1.2 HTTP: comunicaci entre servidor i client

    Un cop establerta la connexi entra en joc el protocol HTTP: el navegador enviauna petici al servidor en qu sollicita el recurs index.html (figura 1.1). Elservidor processa aquesta petici i retorna la pgina sollicitada al navegador, queinterpreta les etiquetes HTML i la presenta a lusuari.

    Figura 1.1. Petici del client dun recurs del servidor

    La informaci que el client envia al servidor en la petici s la segent:

    El mtode HTTP: lacci que sha de fer.

    El recurs a qu sha daccedir (una part de lURL).

    La informaci que lusuari envia al servidor.

    La informaci que el servidor envia en la resposta t dues parts ben diferenciades:la capalera i el contingut.

  • Llenguatges de guions de servidor 11 Llenguatges de guions de servidor

    La capalera cont el codi que indica si la petici sha complert. Tambcont el tipus de contingut que enviar al client.

    El contingut (text, codi HTML, imatges, etc.) del recurs demanat.

    Mtodes GET i POST

    La primera part duna petici HTTP s el tipus de mtode, que serveix perindicar-li el tipus de petici que sha fet. Els mtodes poden ser HEAD, TRACE,DELETE, OPTIONS , CONNECT, GET i POST. Aquests dos ltims sn els que realmentutilitzareu.

    Tant amb GET com amb POST es pot enviar informaci del client al servidor, perhi ha algunes diferncies.

    La informaci enviada amb el mtode GET senvia desprs de ladrea URL, perexemple: ioc.xtec.cat/index.php?opc=edu&lang=cat. La informaci dusuari snles dades que hi ha a partir del smbol ?. Aquest fet implica que la quantitat dedades que es poden enviar amb GET estigui limitada. A ms a ms, la informacique senviat daquesta manera s pblica ja que apareix a la prpia URL, que sfcilment accessible. Per tant no es pot fer servir per enviar dades privades, comuna clau daccs, per exemple.

    Amb el mtode POST, en canvi, la informaci senvia com a part del contingut ino s visible per a lusuari.

    1.1.3 Contenidors web

    El problema dels primers servidors web s que solament entregaven recursosesttics. Rebien una petici, miraven si el recurs estava disponible i lenviaven.

    Lavantatge de les pgines web dinmiques s que el contingut es genera dinmi-cament i, per tant, no existeix esttica i prviament, al servidor.

    Els servidors web tan sols saben enviar pgines esttiques. Perqu un servidor webpugui treballar amb contingut dinmic s necessari installar una altra aplicacique ajudi el servidor web a servir contingut dinmic als clients (com sobservaa la figura 1.2). Les aplicacions encarregades de fer aquesta tasca sanomenencontenidors web i sn les que permeten treballar amb PHP, Java, ASP, C, Python,etc. El seu funcionament s transparent pel client.

  • Llenguatges de guions de servidor 12 Llenguatges de guions de servidor

    Servidors i contenidors

    Els servidors noms sabenprocessar continguts esttics; per

    ser capaos de treballar ambcontinguts dinmics, com una

    base de dades, necessiten lajudade programes externs: els

    contenidors.

    Figura 1.2. Funcionament dun servidor web i dun contenidor

    En la figura 1.2 podeu observar el funcionament dun servidor web juntamentamb el contenidor. Quan el servidor troba un recurs que no s esttic, traspassala petici al contenidor web. Aquest contenidor processa la petici, generadinmicament una resposta en forma de contingut web i la passa al servidor.Finalment el servidor envia el contingut al client.

    1.2 Servidors web

    Els servidors web poden estar implementats dins del kernel del sistema operatiuo dins de lespai de memria dusuari (com qualsevol altra aplicaci del sistema).

    Els servidors web dins del kernel, com ara lIIS de Windows, generalmentsexecuten ms rpid ja que sn part integrant del sistema i poden fer servir totsels recursos de maquinari directament quan els necessiten (com ara la memriasense paginar o la memria cau).

  • Llenguatges de guions de servidor 13 Llenguatges de guions de servidor

    Els servidors web que sexecuten en mode dusuari han de demanar al sistemaquan tenen necessitats de memria o recursos de CPU. Aquestes peticions tardenen realitzar-se i no sempre poden ser satisfetes, ja que el sistema reserva elsrecursos pel seu s i lha de repartir entre tota la resta daplicacions en execuci.

    Com es pot veure en la figura 1.3 i la taula 1.1, tot i que avui en dia hi ha moltsservidors web diferents, Apache s el servidor web ms popular a Internet ambun 65% de quota de mercat. La resta del mercat est repartit entre els servidordaltres companyies, els ms populars dels quals sn IIS de Microsoft i nginx.

    Figura 1.3. Servidors web ms populars a Juliol de 2012

    Font: http://news.netcraft.com

    Taula 1.1. Servidors web ms utilitzats per les pgines web ms visitades dInternet a Juliol de 2012

    Desenvolupador Juny 2012 Percentatge Juliol 2012 Percentatge Canvi

    Apache 448.452.703 64,33% 409.185.675 61,45% -2.89

    Microsoft 95.891.537 13,76% 97.385.377 14,62% 0,87

    nginx 72.881.755 10,46% 73.833.173 11.09% 0,63

    Google 22.464.345 3,22% 22.931.169 3.44% 0,22

    Font: http://news.netcraft.com

    1.2.1 Servidor web Apache

    El servidor HTTP Apache s un servidor web de codi obert per a plataformesUnix (BSD, GNU/Linux, etc.), Windows, Macintosh i altres sistemes operatiusque implementa el protocol HTTP i que utilitza el concepte de lloc virtual.

  • Llenguatges de guions de servidor 14 Llenguatges de guions de servidor

    Per installar paquets endistribucions basades enDebian GNU/Linux, shan

    dexecutar amb drets deroot o amb un usuari

    pertanyent al grup sudo.

    LApache va comenar com una srie de mduls desenvolupats per a un servidorweb en el qual treballaven al Centre Nacional de Supercomputaci dAplicacionsdels Estats Units (NCSA). Un cop va acabar aquest projecte, programadors detot el mn van trobar que hi havia la necessitat de tenir un repositori central enqu es pogus mantenir el codi i els mduls que shavien desenvolupat per podercontinuar treballant en el desenvolupament del servidor. Aix va sorgir la Fundacide Programari Apache (Apache Software Foundation).

    LApache va ser dissenyat des del principi de forma modular, de manera que elprogramari podia ser ampliat per altres desenvolupadors que escrivien petitesparts del codi duna manera fcil. La clau daquest xit s la creaci dunaAPI (interfcie de programaci daplicacions) modular i una srie de fases bendefinides que travessa cada petici que arriba al servidor. Aquestes fases van desde la inicialitzaci del servidor (lApache quan llegeix els fitxers de configuraci),fins a la traducci duna adrea URL en un nom de fitxer de lordinador.

    1.2.2 Installaci dApache

    La forma general dinstallar paquets als sistemes basats en Debian s:

    1 # sudo aptget install {nom_del_paquet}

    Per installar el servidor web heu dinstallar el paquet apache2. Per defecteel servidor fa servir el directori /var/www per contenir les pgines que servir.Una vegada installat podeu comprovar el seu funcionament modificant el fitxer/var/www/index.html i comprovant que es mostra correctament si obriu des delnavegador web ladrea http://localhost tal com es pot veure a la figura 1.4.

    Figura 1.4. Comprovaci del funcionament del servidor Apache

    1.2.3 Configuraci bsica dApache

    Es pot controlar larrencada i aturada del servidor Apache 2 amb un script que estroba dins de la carpeta /etc/init.d. La sintaxi daquest script s la segent:

  • Llenguatges de guions de servidor 15 Llenguatges de guions de servidor

    1 /etc/init.d/apache2 ordre

    en el qual ordre pot ser alguna de les segents opcions:

    start: per iniciar el servidor

    stop: per aturar el servidor

    restart: per reiniciar el servidor. Atura i engega el servidor.

    Recordeu que heu de treballar amb permisos de superusuari per modificar lexe-cuci del servidor, aix que feu servir sudo o treballeu com a usuari root. Podeucomprovar com el servidor satura i engega entrant a la pgina de localhost.

    Un cop finalitzada la installaci dApache 2.0, ja en podem treure algunesconclusions. En primer lloc, podem afirmar que utilitza un disseny modular(basat en mduls) que sutilitza en moltes de les funcions bsiques del servidorweb. Daltra banda, tal com mostra el procs dinstallaci, sha installat perdefecte el paquet apache2-mpm-worker. Aquest paquet proporciona una versimolt ms gil i rpida del servidor. De fet, els mduls de multiprocessament(MPM, multi-processing modules) sn els responsables de connectar amb elsports de xarxa de la mquina, acceptar les peticions i gestionar les respostescorresponents. En el cas dels servidors web, el port de funcionament estndards el 80. Val a dir que dins del procs dinstallaci per defecte del servidor webApache tamb hi ha la installaci del mdul de directori dusuari (userdir), ja quecada usuari disposar dun espai en el seu espai de disc (home) per crear i desarles seves pgines web. Amb tot, si b hi ha un ampli ventall de paquets que shandinstallar amb Apache per augmentar-ne leficincia, cal no deixar de banda ladescrrega de la documentaci del programari, ja que esdevindr de gran utilitatper a ladministrador. El paquet a installar s concretament: apache2-doc.

    Considerant que, en el cas que haguem installat la documentaci, haurem detornar a arrencar el servidor web, tamb podem accedir a la documentacimitjanant la pgina principal predefinida en el servidor web Apache. Per tant,des de qualsevol navegadorweb ens podrem documentar sobre el funcionament delservidor web escrivint en la barra de navegaci http://localhost/manual/.

    1.2.4 Configuraci de directoris personals

    A partir dara, qualsevol fitxer que posem a /var/www sha de visualitzar quanescrivim en el navegador http://IP/nom_del_fitxer, en qu IP s la IP de lamquina en la qual hi ha el servidor web installat.

    Podeu activar el directori personal dels usuaris de la segent manera:

    1. Creeu una carpeta dins del directori personal de lusuari anomenada pu-blic_html. Ho heu de fer amb el vostre usuari, no feu servir lusuari root osudo.

  • Llenguatges de guions de servidor 16 Llenguatges de guions de servidor

    2. Creeu dins de la carpeta /mods-enable dApache uns enllaos simblics capals mduls que voleu fer servir, tal com es pot veure a la figura 1.5.

    3. Reinicieu el servidor.

    En aquest moments el servidor us donar el missatge que podeu veure a la figura6 quan linicieu. Aix s perqu el servidor no t un nom de domini totalmentqualificat. s normal fins que no ho configureu.

    Figura 1.5. Activaci dels directoris dels usuaris

    A partir daquest moment lusuari pot ficar el contingut web personal dins de lacarpeta public_html que ha creat al seu directori personal. Aquesta ser accessiblea travs de ladrea http://localhost/nom_usuari. Per defecte mostrar elfitxer index.html o un llistat dels fitxers del directori si no troba aquest fitxer.

    1.2.5 Configuraci de mduls

    Apache s un servidor modular. Aix vol dir que en el cos del servidor estincls nicament les funcionalitats ms bsiques. Les funcionalitats extres estandisponibles mitjanant els mduls que es poden carregar a lApache. Si el servidorest compilat per fer servir els mduls dinmicament, aquest es poden afegir enqualsevol moment. Si no s aix, Apache sha de recompilar per afegir o treureels mduls. Podeu installar mduls dApache amb lordre apt-get. Per exemple,per installar el mdul per autentificaci MySQL podeu fer servir la segent ordre:

    1 sudo aptget install libapache2modauthmysql

    Una vegada installat, el mdul estar disponible a /etc/apache2/mods-available.Els mduls que sestan fent servir estan a /etc/apache2/mods-enabled.

    Per activar un mdul podeu fer un enlla simblic al mdul de mods-available.

    1 sudo ln s /etc/apache2/modsavailabe/auth_mysql.load /etc/apache2/modsenabled/auth_mysql.load

    o podeu fer servir lordre:

    1 sudo a2enmod auth_mysql

    Per desactivar el mdul podeu fer servir:

    1 sudo a2dismod auth_mysql

  • Llenguatges de guions de servidor 17 Llenguatges de guions de servidor

    Podeu mirar els mduls que est fent servir Apache mirant directament el contin-gut del directori de mduls actius (/etc/apache2/mods-enabled) o amb lordre:

    1 sudo apache2ctl M | sort

    1.2.6 Control daccessos

    Per autenticar als usuaris a Apache es pot fer de dues maneres Bsica i Digest. A laBsica lusuari introdueix en el navegador web el seu nom dusuari i contrasenyai senvien al servidor sense xifrar, tamb s la ms senzilla de configurar. A laDigest lusuari i contrasenya i senvien al servidor xifrats.

    Aquests mtodes controlen laccs als recursos, per no xifren la comunicaciclient-servidor un cop sha validat laccs.

    Autenticaci bsica

    El mdul dApache que controla aquest mtode dautenticaci smod_auth_basic.

    Est suportat per tots els navegadors web.

    Lusuari i la contrasenya no van xifrades del navegador web al servidor.

    Per cada directori que es vulgui protegir a larxiu /etc/apache2/sites-available/default, o en el fitxer relatiu al host virtual corresponent, caldr afegirun bloc ...:

    1 2 AuthType Basic3 AuthName "Directori privat"4 AuthUserFile /etc/apache2/passwd/.htpasswd5 Require validuser6

    En el qual:

    AuthName: indica el nom del domini dautenticaci i s text que se lipresentar a lusuari en el moment dautenticar-se.

    AuthType: indica el mtode dautenticaci a usar.

    AuthUserFile: indica la ruta a larxiu de text que contindr els nomsdusuari i contrasenyes usades en lautenticaci HTTP bsica.

    Require: indica restriccions sobre els usuaris que tenen accs als recursosespecificats. Pot ser valid-user que identifica qualsevol usuari incls alarxiu de contrasenyes .htpasswd o user que especificala llista dusuaris de .htpasswd que poden accedir.

  • Llenguatges de guions de servidor 18 Llenguatges de guions de servidor

    1.3 Llenguatges script

    Un llenguatge dscript (guions) s un llenguatge de programaci basat en guionsque sn seguits lnia per lnia per un processador.

    Un script s un conjunt dinstruccions que afecten a la pgina web, si aquestesinstruccions afecten al navegador es troben al costat del client i si afecten alservidor es troben a lordinador servidor. Si penseu en pgines web que heu visitatrecentment que canvien cada vegada que les visiteu o fins i tot que poden canviarmentre les esteu visitant s possible que utilitzin algun script.

    Per exemple, quan busqueu una paraula al buscador Google, aquest utilitza scriptsper suggerir paraules relacionades, per posar anuncis i per trobar el que esteubuscant. Quan compreu a una botiga virtual, aquesta utilitza scripts per mostrarels productes i per guardar el vostre carro de compra.

    A continuaci veureu les caracterstiques principals dels dos tipus de llenguatgesde guions.

    1.3.1 Llenguatges script de client

    Els llenguatges script de client sexecuten al sistema en el qual es troba elnavegador web (Firefox, Chrome, Opera, Safari, etc.) de lusuari i poden formarpart del codi HTML del document o trobar-se en arxius adjunts. Els llenguatgesscript de client donen interactivitat a les pgines HTML, el codi s lleuger ial arribar al navegador s interpretat (s a dir, els scripts sexecuten sense unacompilaci preliminar) pel navegador.

    El procs dun navegador al sistema del client s:

    1. Lusuari demana una pgina web a un servidor des del seu navegador.

    2. El servidor cerca la plana i, si la troba, la retorna al navegador de lusuari.

    3. El navegador mostra la pgina i al mateix temps executa els scripts de clientper crear la sortida HTML.

    Els llenguatges dscript de client modifiquen la pgina web un cop arriben alnavegador. Lavantatge principal dels scripts de client s que al no executar-seal servidor no consumeixen CPU del servidor ni ample de banda. Sutilitzen per atasques que estalvien feina al servidor, com ara validar els camps dun formulari,o per millorar laparena i la interacci amb lusuari.

    El llenguatge de referncia per programar codi en el cant del client s JavaScript.No es necessita cap llicncia per utilitzar-lo. Al executar-se a la mquina del clientsi aquesta s lenta els scripts es poden executar lentament, o fins i tot no sarribaran

  • Llenguatges de guions de servidor 19 Llenguatges de guions de servidor

    a executar si el navegador no entn el llenguatge dscript. A les preferncies delsnavegadors moderns es pot activar o desactivar lexecuci de Javascript. Com queel codi s a lordinador del client lusuari el pot veure per copiar-lo o manipular-lo.

    Amb la tecnologia AJAX i el Javascript, la millora de funcionalitat de les pginesweb al navegador fa que sassemblin cada cop ms a aplicacions normals delordinador.

    1.3.2 Llenguatges script de servidor

    Les aplicacions web desenvolupades amb llenguatges script de servidor sexecutenen el servidor web i per tant lusuari no t accs al codi font del servidor. Elservidor cont aquests scripts que sn interpretats cada vegada que es rep unapetici duna pgina web. El procs s el segent:

    1. Lusuari a travs del seu navegador demana una pgina al servidor.

    2. Lscript de servidor s interpretat muntant el contingut a retornar (la pginaweb).

    3. Quan lscript acaba, el contingut muntat es retorna al client.

    A lesquema de la figura 1.6 sillustra una mquina client que envia una petici depgina web a un servidor que executa un script de servidor que requereix consultaruna base de dades. Com a resposta, el client rep una pgina web HMTL.

    Figura 1.6. Funcionament dels llenguatges script de servidor

    Entre les caracterstiques ms significatives dels llenguatges script de servidor estroben les de permetre als usuaris tenir comptes individuals i la de comunicar-seamb bases de dades (MySQL, PostgreSQL, SQL Server, Oracle, etc). Permeten

    AJAX

    Sn les sigles dAsynchronousJavascript And Xml, (JavaScriptasncron i XML), un conjunt detecnologies que permetenactualitzar parts duna pginaweb sense haver de tornar-la acarregar sencera.

  • Llenguatges de guions de servidor 20 Llenguatges de guions de servidor

    un nivell de personalitzaci, privacitat i recuperaci dinformaci molt important.Les pgines web de comer electrnic i les pgines web socials fan un s intensiudels scripts de servidor.

    Com a exemples dels principals llenguatges script de servidor tenim el PHP(pgines amb extensi php) i lASP/ASP.net (pgines amb extensi asp/aspx).Altres llenguatges sn Perl (pgines amb extensi pl), Java Server Pages (pginesamb extensi jsp), ColdFusion (pgines amb extensi cfm) i Python (pgines ambextensi py).

    1.3.3 Installaci de PHP5

    Hi ha una srie de paquets necessaris per treballar amb PHP i Apache. Els podeuinstallar amb apt-get (php5, php5-common, libapache2-mod-php5 php5-cli).

    Una vegada installats heu de reiniciar el servidor Apache perqu els canvis siguinefectius.

    De manera opcional podeu installar del PHP5 els paquets referenciats aqu perdonar suport a diferents utilitats. Si sols necessiteu una installaci bsica delPHP, no fa falta installar els paquets segents, encara que sn recomanables.

    php5-gd: biblioteca per a ls dimatges.

    libphp-adodb: biblioteca adodb per a PHP.

    Smarty: sistema Templates PHP.

    php-pear: biblioteques Pear per a PHP.

    php5-json: suport per a objectes JSON.

    php5-xsl: suport per a XSLT.

    php5-odbc: per a connexions odbc.

    1.4 MySQL

    El MySQL s un sistema de gesti de base de dades relacional. Es calcula quet ms de 6 milions dinstallacions. El programa sexecuta com un servidormultiusuari i proporciona accs a una srie de bases de dades.

    El projecte de codi font est disponible en els termes de la llicncia pblica generalGNU, tot i que el MySQL s propietat duna empresa amb nim de lucre, quetamb el patrocina. El MySQL era propietat de la companyia sueca MySQL AB,una empresa que Sun Microsystems va comprar el 2008. Labril de 2009, Oracle

  • Llenguatges de guions de servidor 21 Llenguatges de guions de servidor

    va comprar Sun i indirectament MySQL AB, un dels principals competidors enalguns dels seus productes.

    El MySQL s utilitzat per una gran quantitat de projectes que requereixen unabase de dades amb funcions completes, sistema de gesti, administraci i s usat,entre daltres, per WordPress, phpBB, Google i Facebook.

    Moltes vegades es fa referncia a la combinaci de Linux, el servidor web Apache,el contenidor web de PHP i MySQL amb lacrnim LAMP.

    1.4.1 Installaci de MySQL a Debian

    La forma ms senzilla dinstallar MySQL a Debian s mitjanant apt-get. Heudinstallar els paquets mysql-client i mysql-server. Us demanar quina voleu quesigui la contrasenya de root de MySQL. MySQL t els seus propis usuaris, quesn independents dels usuaris del sistema Linux. Per tant s important canviar lacontrasenya de root i apuntar-la.

    Si ms endavant voleu tornar a canviar la contrasenya ho podeu fer amb lordre:

    1 $ sudo mysqladmin u root h localhost password clau

    Podeu canviar localhost pel nom de la mquina. Un cop fet aix, ja podeu entraral servidor MySQL amb lordre:

    1 $ mysql u root p

    Per aturar o engegar el servidor de MySQL teniu lscript que el controla a/etc/init.d/mysql que accepta les tpiques opcions (start, stop, restart).

    Assegureu-vos que teniu installat el paquet php5-mysql ja que el necessitareu pertreballar amb MySQL i PHP. Ho podeu comprovar amb lordre:

    1 $ dpkg s php5mysql

    1.5 phpMyAdmin

    El phpMyAdmin s un programa de distribuci lliure en PHP, creat per unacomunitat sense nim de lucre. s una eina molt completa que permet accedira totes les funcions tpiques de la base de dades MySQL per mitj duna interfcieweb molt intutiva, tal com es pot veure a la figura 1.7.

    Anoteu la contrasenya deroot en un lloc segur, ja quela necessitareu msendavant.

  • Llenguatges de guions de servidor 22 Llenguatges de guions de servidor

    Figura 1.7. Pantalla principal de laplicaci phpMyAdmin

    Laplicaci tan sols s un conjunt darxius escrits en PHP que es copien en undirectori del servidor web, de manera que, quan saccedeix a aquests arxius,trobem una eina que ens permet crear taules, inserir dades a les taules existents,navegar pels registres de les taules, editar i esborrar, esborrar taules, etc. Fins i totexecutar sentncies SQL i fer una cpia de seguretat de la base de dades.

    1.5.1 Installaci del phpMyAdmin

    La pgina dinici del projecte s www.phpmyadmin.net. Des daqu podeu baixarels fitxers de la darrera versi de laplicaci, que desprs heu de collocar en elnostre servidor web.

    Per a distribucions GNU/Linux basades en Debian, tamb es pot fer la installacidirectament des del repositori:

    1 $ sudo aptget install phpmyadmin

    Durant la installaci us far una srie de preguntes:

    Pel que fa al servidor web que far servir heu de contestar: apache2.

    Quan us pregunta si voleu configurar la base de dades phpMyAdmin ambdbconfig-common, heu de contestar que s.

    Quan us pregunta la contrasenya de root de MySQL (perqu phpMyAdminvol crear les seves taules a la base de dades MySQL)

    Us demanar la clau daccs a la base de dades MySQL de lusuari que shacreat pel phpMyAdmin. Podeu escriure una clau vosaltres o, si la deixeu enblanc, crear una clau aleatria.

  • Llenguatges de guions de servidor 23 Llenguatges de guions de servidor

    Abans de poder accedir al panell de control de phpMyAdmin sha de modificar laconfiguraci dApache.

    Trobeu on s el fitxer apache.conf. Generalment lhaureu de tenir a /etc/phpmyad-min/apache.conf

    En qualsevol cas el podeu trobar amb les ordres:

    1 $ updatedb2 $ locate apache.conf

    Editeu la configuraci dApache i incloeu-hi el fitxer apache.conf de phpMyAd-min. Per aix obriu (amb drets de root) el fitxer /etc/apache2/apache2.conf i afegiual final del fitxer la segent lnia:

    1 Include /etc/phpmyadmin/apache.conf

    Ara ja podeu reinicar el servidor Apache i anar a ladreahttp://localhost/phpmyadmin per veure si funciona. Haureu de trobar unapantalla com la que es pot veure a la figura 1.8.

    Figura 1.8. Pantalla dinici de phpMyAdmin

    1.6 Utilitats de prova i installaci integrada

    La installaci i posterior configuraci dun servidor web Apache, dun servidorde bases de dades MySQL i del llenguatge de programaci PHP s una tasca com-plexa que noms poden emprendre usuaris amb bons coneixements informtics.

  • Llenguatges de guions de servidor 24 Llenguatges de guions de servidor

    La primera lletra fareferncia al sistema

    operatiu: LAMP (Linux),WAMP (Windows), o MAMP

    (Mac OS).

    Els anomenats paquets LAMP, WAMP o MAMP simplifiquen la tasca dinstallari configurar automticament Apache, PHP i MySQL en Linux, Windows o MacOS.

    Aquests paquets proporcionen:

    Servidor Web Apache

    Base de dades MySQL

    Llenguatge de programaci PHP

    Accessos per larrencada i la parada dels serveis

    Facilitats per a la configuraci dels serveis

    El paquet XAMPP s un paquet de programari lliure que t versions per Linux,Windows, Solaris i Mac OS X, a ms doferir els serveis bsics dun paquetintegrat (s a dir, Servidor web Apache + Servidor de bases de dades MySQL+ Llenguatge PHP). Aix doncs, ofereix:

    ProFTPD com a servidor darxius per FTP

    Llenguatge Perl

    Servidor de dades SQLite

    SSL per pgines segures HTTPS (OpenSSL)

    Estadstiques daccs (Webalizer)

    Podeu trobar la darrera versi de XAMPP awww.apachefriends.org/en/xampp.html

    1.6.1 Utilitats de prova

    Per comprovar si funciona la installaci dApache2 i PHP:

    Creeu un document a larrel en /var/www, anomenat info.php i empleneu-lo ambla informaci segent:

    1

    A continuaci, deseu larxiu.

    Proveu el servidor amb el navegador i la direcci del tipus segent:

    1 http://localhost/info.php

  • Llenguatges de guions de servidor 25 Llenguatges de guions de servidor

    Si tot ha anat b, us mostrar una pantalla amb informaci del PHP (veure figura1.9):

    Figura 1.9. Informaci de configuraci de PHP

    Per comprovar, un cop acabada la installaci de MySQL, que podeu accedir alentorn, entrareu com a usuari root i executareu lordre show Databases. Veureules dues bases de dades que installa MySQL i executareu quit per sortir delentorn.

    A un terminal escriureu la comanda segent:

    1 elatorre@debian:~$ mysql h localhost u root p2 Enter password:3 Welcome to the MySQL monitor. Commands end with ; or \g.4 Your MySQL connection id is 415 Server version: 5.1.493 (Debian)6

    7 Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.8 This software comes with ABSOLUTELY NO WARRANTY. This is free software,9 and you are welcome to modify and redistribute it under the GPL v2 license

    10

    11 Type help; or \h for help. Type \c to clear the current input statement.12

    13 mysql> show databases;14 ++15 | Database |16 ++17 | information_schema |18 | mysql |19 ++20 2 rows in set (0.00 sec)21 mysql> quit;

  • Llenguatges de guions de servidor 26 Llenguatges de guions de servidor

    22 Bye23 elatorre@debian:~$

    1.7 Documentaci

    Durant el procs dinstallaci i configuraci dun servidor daplicacions web,cal prendre nota de tots els passos que shan seguit, primer en el moment de lainstallaci i desprs en el moment de la configuraci, de manera que tingueu unareferncia completa de tot el que heu fet. Conixer els detalls de per qu sha posatun valor a una variable o a un fitxer de configuraci pot ser molt til en el futur, jaque s probable que passat un temps us noblideu.

    Crear la documentaci s una part important del procs i pot ser molt til quanapareixen dificultats, incidncies o en manteniments, i es volen saber rpidamentels valors dels parmetres configurats sense haver danar a mirar directament elsarxius de configuraci al servidor.

    La documentaci tamb s importat per a la transmissi de coneixement.Podeu passar la documentaci a altres persones que poden aprendre comest muntat el servidor sense haver dexplicar res per la vostra part.

    Quan es vol replicar en una altra mquina la installaci i configuraci dunservidor web, la documentaci s una gran ajuda per saber com sha fet i comest muntat el servidor que ja est en funcionament.

    Una bona manera de comenar a fer la documentaci s consultar lndex que heuseguit per fer la installaci de laplicaci. Es poden analitzar els punts de lndexque shan anat fent durant el procs dinstallaci, fer-ne un resum i documentarespecialment les parts en les quals es difereix de la guia que sha fet servir per ferla installaci.

    1.7.1 Eines dajuda a la creaci

    Una eina til que podeu fer servir per crear la documentaci s un wiki.

    Un wiki (del hawai wikiwiki, que vol dir rpid) s un lloc web collaboratiuque pot ser editat des del navegador pels usuaris. Els usuaris dun wiki poden,daquesta manera, crear, modificar, enllaar i esborrar el contingut duna pginaweb, de forma interactiva, fcil i rpida. Un dels wikis ms coneguts s laViquipdia (Wikipedia) (veure figura 1.10).

  • Llenguatges de guions de servidor 27 Llenguatges de guions de servidor

    Figura 1.10. Pgina web de la Viquipdia

    Els projectes wiki tenen normalment historials amb totes les modificacions queshan fet dels seus continguts. Daquesta manera sen poden veure totes lesversions i recuperar la informaci eliminada o desfer les edicions incorrectes, jaque els canvis sapliquen normalment a linstant, sense que cap mena dusuari deconfiana o administrador els hagi revisat i confirmat abans.

    Fins ara, laplicaci dels sistemes wiki deuen la seva fama sobretot a la creacidenciclopdies collectives com la Viquipdia. Per les caracterstiques delswikis els converteixen en una eina efectiva per a lescriptura collaborativa, i cadavegada sn ms usades en empreses com a webs i intranets econmiques i eficacesper a la gesti del coneixement.

    Hi ha molts programaris de wiki diferents (podeu consultar lenllahttp://en.wikipedia.org/wiki/Comparison_of_wiki_software), i que fins i totpodeu installar al mateix servidor web. Entre els ms recomanables trobem elsprogramaris DokuWiki i MediaWiki, que fan servir una sintaxi molt similar.

    El DokuWiki (veure logo figura 1.11) est llicenciat sota GPL 2 i escrit en elllenguatge de programaci PHP. Funciona amb arxius de text pla i per tant nonecessita cap base de dades.

    Figura 1.11. Logo DokuWiki

  • Llenguatges de guions de servidor 28 Llenguatges de guions de servidor

    ElMediaWiki (veure logo figura 1.12) s el programari de wiki amb el qual shafet la Viquipdia, est llicenciat sota llicncia GPL, est escrit en el llenguatge deprogramaci PHP i utilitza MySQL com a gestor de base de dades.

    Figura 1.12. Logo MediaWiki

  • Llenguatges de guions de servidor 29 Llenguatges de guions de servidor

    2. Programaci web de servidor

    La programaci web del servidor es pot realitzar fent servir diferents eines itecnologies. PHP s un dels llenguatges ms populars de programaci webdel servidor, generalment integrat dins de codi web codificat en HTML. En lesdarreres versions de PHP es pot fer servir el paradigma dorientaci a objectes.

    2.1 El llenguatge PHP

    El PHP s un llenguatge de programaci obert que sintegra directament enpgines HTML. El seu s ha esdevingut gaireb imprescindible en les pginesque han dutilitzar bases de dades o formularis.

    Rasmus Lerdorf s el creador del llenguatge PHP. El 1995 presenta la primeraedici daquest llenguatge amb el nom de Personal Home Page tools amb llicnciapblica GNU. Per crear el PHP, Rasmus utilitza el codi de programaci C.

    Tot i que el PHP s un llenguatge ideat i creat per explotar tots els avantatgesdInternet, la seva fisonomia permet fer altres tasques potser no relacionadesdirectament amb la xarxa de xarxes. Es podria afirmar que el PHP permet alprogramador fer tot tipus de programes sense dependre daltres llenguatges.

    Per utilitzar el PHP cal disposar dun navegador web, un servidor webque suporti el PHP i installar un motor PHP a la mquina en qu esdesenvolupar el codi.

    El PHP s compatible amb tots els navegadors web actuals (Firefox, Chrome,Safari, Internet Explorer i daltres). Generalment, tots els provedors de serveisweb suporten el PHP, per cal assegurar-sen llegint les caracterstiques delproducte contractat.

    2.1.1 Funcionament del llenguatge PHP

    El codi PHP que escriviu, lhaureu dincrustar dins de codi HTML, concretamentdins les etiquetes del document. Mitjanant unes marques lHTML nointerpretar el codi PHP, el qual, i mitjanant les mateixes marques, sexecutaren el servidor.

    Segons els motorsprincipals de cerca aInternet, el PHP s el sisllenguatge ms popular,desprs del C, Java,Objective C, C++ i C#.

    HTML

    Hypertext markup language. sel llenguatge de marques quems es fa servir per construirpgines web. Lextensi delsarxius HTML pot ser .htm o.html.

  • Llenguatges de guions de servidor 30 Llenguatges de guions de servidor

    El codi segent s un exemple que mostra on es pot collocar el codi PHP dins delcodi HTML:

    1 2 3 Exemple amb PHP4 5 6 9

    10

    El codi PHP sexecuta en un servidor i mostra el resultat en un client. Visualitzareuels resultats amb un navegador web. En la figura 2.1 podeu veure el funcionamentdel llenguatge PHP i com interactuen el servidor i la mquina dusuari.

    Figura 2.1. Funcionament del llenguatge PHP

    2.1.2 Configuraci del llenguatge PHP

    Quan arrenca el PHP es fa la lectura del fitxer php.ini. Aquest fitxer cont laconfiguraci del PHP i es crea durant la installaci del PHP. s possible quenecessiteu fer canvis en el fitxer de configuraci, preneu la precauci de fer-neuna cpia de seguretat abans de fer aquestes modificacions.

    Una inspecci visual del fitxer php.ini us servir per comprendren el funciona-ment. Depenent del valor de les variables que cont aquest fitxer, el comportamentdel PHP variar en la vostra mquina. Podeu comprovar que cada variable queforma part del fitxer est mpliament comentada, amb comentaris que es marquenamb un punt i coma.

  • Llenguatges de guions de servidor 31 Llenguatges de guions de servidor

    2.1.3 Eines de programaci per a PHP

    El programador de codi PHP haur de fer un exercici previ per escollir lentornde programaci que li sigui ms cmode. A causa del bon acolliment daquestllenguatge de programaci sn molts els programes de desenvolupament de codique han anat sorgint en els ltims anys.

    Logo de NetBeans

    Com a desenvolupadors haureu de crear lambient de treball ms adequat si voleucrear i produir codi de la millor manera possible. Escollir correctament lentornde desenvolupament integrat us ser de gran ajuda.

    Per decidir leina de treball adequada haureu de tenir en compte diversos factors,com ara la facilitat ds, la capacitat dintegraci, la possibilitat de treballar alhoraamb altres llenguatges, el suport de leina, el desenvolupament del programari deleina, la possibilitat real de fer servir utilitats com repositoris i, sobretot, quevosaltres us trobeu cmodes treballant amb aquest entorn.

    Repositori

    Espai en qu semmagatzema informaci duna manera centralitzada. Normalment,relacionem repositoris amb control de versions, el qual crea un registre dels canvisefectuats en fitxers, permet recuperar versions antigues i possibilita laccs a les ltimesmodificacions. La importncia de ls de repositoris i control de versions augmenta amesura que el projecte de programaci es fa ms complex.

    Abans de decidir quin entorn de programaci fareu servir proveu-ne uns quants.Els programes que ms es fan servir sn el Komodo IDE, NetBeans, Eclipse,Adobe Dreamweaver o Aptana.

    2.1.4 Sintaxi del llenguatge PHP

    Si voleu que sinterpreti el vostre codi s imprescindible que encabiu el codi escriten PHP entre dos delimitadors. Aquestes marques sn , que utilitzareu per marcar elfinal del vostre codi PHP.

    Aquestes marques sn les ms genriques i les ms recomanades, per no lesniques que es poden emprar. Aix, per marcar els blocs de codi PHP, tambpodreu fer servir per marcar el final; ara b,per poder fer servir aquestes marques, tingueu en compte que probablement hgiude modificar la configuraci del PHP mitjanant el fitxer php.ini.

    Els documents XHTML i XML necessiten la forma per interpretar lacodificaci PHP. Gran part de les pgines web dissenyades avui dia fan serviraquests formats; per tant, si voleu que el vostre codi PHP sinterpreti correctament,feu servir aquestes marques.

    Qu s un IDE?

    Un entorn de desenvolupamentintegrat (Integrated DevelopmentEnvironment) s un programaque aglutina un conjunt deinesde gran utilitat per alprogramador.

    LXHTML i lXMLaconsegueixen nivells altsde compatibilitat entrediferents sistemes dunamanera molt senzilla isegura.

  • Llenguatges de guions de servidor 32 Llenguatges de guions de servidor

    Podeu fer servir cometesdobles o simples per indicarla sentncia, ms endavant

    veureu les conseqnciesque sen deriven.

    No poseu comentarisaniuats, us causaran

    problemes.

    Instruccions

    En PHP indicareu el final duna instrucci amb punt i coma. Cada vegada que esdetecti un punt i coma sinterpretar el codi inserit fins a aquell punt.

    El codi segent s un exemple dinstrucci. Lordre echo mostrar en el vostrenavegador el text escrit entre cometes dobles.

    1

    Les seqncies de control de codi PHP sn les niques que no finalitzen amb punti coma.

    A continuaci, teniu la manera ms correcta descriure dues instruccions. Enaquest cas apareix . Aquesta s una etiqueta bsica de lHTML que provocaun salt de lnia.

    1

    Comentaris

    Amb lobjectiu de crear un codi ms entenedor utilitzareu comentaris. Elscomentaris en PHP els podreu incloure mitjanant:

    Dues barres (//) o un coixinet (#) si voleu comentar una lnia

    Una barra i un asterisc (/*) per indicar linici de comentari, i un asterisci una barra per indicar el final de comentari si voleu comentar ms dunalnia(/*).

    1

    s recomanable incloure comentaris en el vostre codi. s important per ajudar-vos en la comprensi del codi i tamb per recordar els motius del disseny del codi,per tamb s important per fer-lo ms entenedor a la resta de programadors.

    2.1.5 Tipus de dades del llenguatge PHP

    El PHP s un llenguatge de programaci que no obliga a declarar prviament elnom de les variables que sutilitzaran ni el seu tipus (s diu que s un llenguatge

  • Llenguatges de guions de servidor 33 Llenguatges de guions de servidor

    sense tipus o no tipat). Ara b, tot i que existeixen els tipus de dades en PHPaquests no es comproven. Una variable pot emmagatzemar dades del tipus enter,decimal, lgic, cadenes de text, colleccions o objectes. Aix si emmagatzemeu auna variable una cadena de text i ms endavant li assigneu una variable entera, nodonar error.

    Quan treballeu amb objectes aneu amb compte, ja que les diferents versions delPHP no es comporten igual amb aquest tipus de dades.

    2.1.6 Operadors

    Els operadors us permetran fer accions dins el codi. Podreu canviar i assignarvalors, canviar ladrea del codi, condicionar lexecuci de blocs de codi i, endefinitiva, dotar de la complexitat necessria els vostres programes per aconseguirun objectiu.

    Els operadors es poden agrupar en tres blocs segons el nombre de valors sobre elsquals sactua.

    1. Loperador unari opera sobre un valor i el que pot fer en aquest valor snegar-lo, incrementar-lo o decrementar-lo, entre altres coses.

    2. Loperador binari opera sobre dos valors i permet sumar-los, restar-los ocomparar-los.

    3. Loperador ternari permet escollir entre dues expressions en funci dunaaltra.

    Teniu en compte la precedncia dels operadors.

    En la taula 2.1 apareixen els operadors aritmtics de qu disposeu. Teniu encompte que la divisi retornar un valor en coma flotant si el resultat de la divisino s exacte.

    Taula 2.1. Operadors aritmtics

    Operador Nom Acci Tipus doperador

    -$valor Negaci Oposat de $valor Operadors daritmtica

    $valor + $valorB Addici Suma de $valor i$valorB

    Operadors daritmtica

    $valor - $valorB Subtracci Diferncia entre $valor i$valorB

    Operadors daritmtica

    $valor * $valorB Multiplicaci Producte de $valor i$valorB

    Operadors daritmtica

    $valor / $ valorB Divisi Quocient de $valor i$valorB

    Operadors daritmtica

    $valor % $valorB Mdul Resta de $valor dividitper $valorB

    Operadors daritmtica

    Programaci orientada aobjectes i PHP

    Des de la versi 5 de PHP, aquestes pot fer servir com llenguatgeorientat a objectes, tot i que elprogramador no est obligat a ferservir aquesta metodologia deprogramaci.

  • Llenguatges de guions de servidor 34 Llenguatges de guions de servidor

    En la taula 2.2 es presenten els operadors dassignaci. Loperador bsic dassig-naci s ligual. Amb loperador igual la variable de lesquerra rep el valor delexpressi de la dreta.

    Taula 2.2. Operadors dassignaci

    Operador Nom Acci Tipus doperador

    $valor = $valorB Assignaci Assignar el contingut de$valorB a $valor

    Operadors dassignaci

    $valor += $valorB Assignaci Sumar el contingut de$valorB i $valor iemmagatzemar-lo a$valor

    Operadors dassignaci

    $valor.= text Assignaci Concatenar la cadenade la dreta a la delesquerra

    Operadors dassignaci

    Per activar o desactivar bits individuals dun enter fareu servir els operadors debit. En la taula 2.3 es mostren els operadors de bit de qu disposeu.

    Taula 2.3. Operadors de bit

    Operador Nom Acci Tipus doperador

    $valor & $valorB I Els bits que sn actiustant en $valor com en$valorB sn activats.

    Operadors de bit

    $valor | $valorB O Els bits que sn actiusen $valor o en $valorBsn activats.

    Operadors de bit

    $valor $valorB XOR Els bits que sn actiusen $valor o $valorB,per no en tots dos, snactivats.

    Operadors de bit

    $valor No Es canvia lestat delsbits.

    Operadors de bit

    $valor $valorB Desplaament a la dreta Desplaa els bits de$valor, $valorBposicions a la dreta.

    Operadors de bit

    Per comparar valors el llenguatge PHP disposa doperadors de comparaci. Enla taula 2.4 teniu els casos possibles que podeu utilitzar.

    Taula 2.4. Operadors de comparaci

    Operador Nom Acci Tipus doperador

    $valor == $valorB Igual TRUE si $valor s iguala $valorB.

    Operadors decomparaci

    $ valor === $ valorB Idntic TRUE si $valor s iguala $valorB i sn delmateix tipus.

    Operadors decomparaci

    $ valor!= $ valorB Diferent TRUE si $valor no sigual a $valorB.

    Operadors decomparaci

    $ valor $ valorB Diferent TRUE si $valor no sigual a $valorB.

    Operadors decomparaci

  • Llenguatges de guions de servidor 35 Llenguatges de guions de servidor

    Taula 2.4 (continuaci)

    Operador Nom Acci Tipus doperador

    $ valor!== $ valorB No idntic TRUE si $valor no sigual a $valorB o no sndel mateix tipus.

    Operadors decomparaci

    $ valor < $ valorB Ms petit que TRUE si $ valor s mspetit que $ valorB.

    Operadors decomparaci

    $ valor > $ valorB Ms gran que TRUE si $ valor s msgran que $ valorB.

    Operadors decomparaci

    $ valor = $ valorB Ms gran o igual que TRUE si $ valor s msgran o igual que $valorB.

    Operadors decomparaci

    En la taula 2.5 teniu els operadors dincrement i decrement, operadors queresulten de gran utilitat i simplifiquen fora el codi.

    Taula 2.5. Operadors dincrement/decrement

    Operador Nom Acci Tipus doperador

    ++$valor Preincrement Incrementa $valor unaunitat, i desprs retorna$valor.

    Operadorsdincrement/decrement

    $valor ++ Postincrement Retorna $valor iincrementa $valor unaunitat.

    Operadorsdincrement/decrement

    $valor Predecrement Decrementa $valor unaunitat i retorna $valor.

    Operadorsdincrement/decrement

    $valor Postdecrement Retorna $valor idecrementa $valor unaunitat.

    Operadorsdincrement/decrement

    El PHP us proporciona operadors de lgica. En la taula 2.6 teniu les possibilitatsde qu disposeu. Els operadors I i O estan repetits perqu poden operar ambprecedncies diferents.

    Taula 2.6. Operadors de lgica

    Operador Nom Acci Tipus doperador

    $valor and $valorB I TRUE si $valor i $valorBsn TRUE.

    Operadors de lgica

    $valor or $valorB O TRUE si $valor o$valorB sn TRUE.

    Operadors de lgica

    $valor xor $valorB XOR TRUE si $valor o$valorB sn TRUE, perno tots dos alhora.

    Operadors de lgica

    ! $valor No Inverteix el contingut de$valor

    Operadors de lgica

    $valor && $valorB I TRUE si $valor i $valorBsn TRUE.

    Operadors de lgica

    $valor || $valorB O TRUE si $valor o$valorB sn TRUE.

    Operadors de lgica

  • Llenguatges de guions de servidor 36 Llenguatges de guions de servidor

    Podeu anar provant elsdiferents codis dels

    materials simplementafegint el codi dins dun

    fitxer amb extensi .php queestigui dins de la carpetadel servidor web i obrir-lo

    des dun navegador.

    Cometes dobles

    Vigileu amb les cometes doblesja que, de vegades, quan copiemel codi i lenganxem a leditor es

    copia un carcter de cometesdiferent. Per exemple, si copieu

    un codi des del Microsoft Office,tindreu un carcter de cometesdiferent que no ser interpretat

    pel PHP.

    Les matrius poden rebre lacci doperadors especials. En la taula 2.7 teniu elsoperadors de matrius que podeu utilitzar.

    Taula 2.7. Operadors de matrius

    Operador Nom Acci Tipus doperador

    $ valor + $ valorB Uni Uni de $ valor i $valorB.

    Operadors de matrius

    $ valor == $ valorB Igualtat TRUE si $valor i $valorBtenen les mateixesparelles clau/valor.

    Operadors de matrius

    $ valor === $ valorB Identitat TRUE si $valor i $valorBtenen les mateixesparelles clau/valor en elmateix ordre i delsmateixos tipus.

    Operadors de matrius

    $ valor!= $ valorB No-identitat TRUE si $valor no sigual a $valorB.

    Operadors de matrius

    $ valor $ valorB No-identitat TRUE si $valor no sigual a $valorB.

    Operadors de matrius

    $ valor!== $ valorB No-identitat TRUE si $valor no sidntic a $valorB.

    Operadors de matrius

    2.1.7 Cadenes i matrius en PHP

    Una cadena de text s una successi de carcters. El tipus al qual pertanyen lescadenes s lstring, el qual no t inicialment suport per a Unicode, problema quese solucionar amb funcions predefinides del mateix llenguatge.

    En PHP les cadenes tenen una longitud mxima marcada per la memria de lamquina en qu sexecuti el codi. Podreu especificar les vostres cadenes de quatremaneres diferents:

    1. Amb cometes simples. Es considera que aquesta s la manera ms senzilladindicar una cadena, per haureu de tenir en compte que no sinterpretaran lesvariables i les seqncies de sortida. Aix, en lexemple segent, no es mostrarel valor de la variable $nom ni tampoc es far el salt de lnia amb \n. Fixeu-vos,per, que s que sinterpreta el salt de lnia marcat amb letiqueta dHTML .

    1

    2. Amb cometes dobles. Fent servir cometes dobles per marcar cadenes podreumostrar el valor de les variables. El text incls entre cometes sinterpretar amblHTML, per tant, seran les etiquetes dHTML les que es podran interpretar.Escrivim un text que contingui una variable i una seqncia descapament enlexemple segent. Comprovareu que es mostrar el contingut de la variable.

  • Llenguatges de guions de servidor 37 Llenguatges de guions de servidor

    1

    3. Utilitzant sintaxi heredoc. Quan necessiteu escriure un text molt llarg srecomanable que feu servir aquesta forma. Utilitzant aquesta sintaxi millorareu lavelocitat del codi i facilitareu la lectura. En lexemple segent podeu veure comsutilitza la sintaxi heredoc. La marca que es fa servir per identificar el text s

    4. Utilitzant sintaxi nowdoc. A partir de la versi 5.3.0 del PHP sinclou elsuport per a nowdoc, per tant, no el feu servir si teniu una versi anterior. Aquestasintaxi resulta molt til quan heu de plasmar un bloc llarg de text que no necessitaser processat. s un mtode de treball amb cadenes molt rpid i gil. Per ferservir sintaxi nowdoc heu dencabir el text entre dues marques especials. Lamarca dinici s

    Matrius

    Les matrius resulten molt tils en lmbit de treball del llenguatge PHP. De fet, entots els llenguatges de programaci les matrius sn una pea fonamental, sense laqual seria molt difcil resoldre determinades situacions.

  • Llenguatges de guions de servidor 38 Llenguatges de guions de servidor

    Count s una funci queretorna la longitud del

    vector.

    Una matriu s una collecci de valors. Poden ser unidimensionals,bidimensionals i multidimensionals.

    Vectors o matrius

    Tot i que es parli de manera genrica de matrius cal aclarir que les matrius snrealment arrays bidimensionals. Els arrays unidimensionals sn els vectors i els arraysmultidimensionals sn arrays de ms de dues dimensions. Durant el desenvolupament dela matria es treballar generalment amb arrays duna dimensi.

    Per accedir als valors que els arrays contenen cal utilitzar el delimitador [ ]. Enlexemple segent es mostra com es crea un vector:

    1 $credit[4]="Fonaments de Programaci";2 $credit[5]="Implantaci dAplicacions Web";3 $credit[10]="Sntesi";

    En aquest sentit PHP s un llenguatge ms flexible i menys estricte i estructurat,que daltres com ara C o Java. No cal que definiu larray prviament. Heu creatun vector, per tant, duna dimensi que cont alguns dels noms de crdits del cicleque esteu estudiant. Tot i que no sha utilitzat, el vector comena en la posici 0.Per poder-vos moure utilitzareu un subndex indicat entre [ ].

    Larray pot crixer dinmicament, per exemple, si voleu adherir el crdit 7 nomscal que feu:

    1 $credit[7]="Relacions en lmbit de Treball";

    Si no utilitzeu un subndex per treballar amb el vector, aquest el generarautomticament. En lexemple segent es crea un vector que contindr els diesde la setmana i els traur per pantalla:

    1

    Matrius associatives

    Les matrius associatives permeten al programador una flexibilitat i velocitat enla generaci de codi molt importants. En PHP les matrius associatives shanconvertit en una eina potent de la qual sempre es depn.

  • Llenguatges de guions de servidor 39 Llenguatges de guions de servidor

    Una matriu associativa s una matriu que permet accedir als valors queemmagatzema mitjanant un subndex de tipus cadena. s a dir, s un arrayen el qual les posicions es poden especificar per strings (en comptes delsndexs).

    En lexemple segent es crea la fitxa dun alumne sense utilitzar una matriuassociativa:

    1 $dades[0]="Omar";2 $dades[1]="12345678A";3 $dades[2]="1956";4 $dades[3]="ASIX";

    Segons lexemple anterior, si voleu recuperar alguna dada haureu de recordar elsubndex que us retornar el valor que necessiteu; per exemple, per mostrar el DNIhaureu descriure:

    1 echo $dades[1];

    En les matrius associatives tot s ms fcil. Lexemple segent mostra com es potcrear una fitxa personal i treure el DNI per pantalla:

    1 $dades[nom]="Omar";2 $dades[dni]="12345678A";3 $dades[naixement]="1956";4 $dades[cicle]="ASIX";5

    6 echo $dades[dni];

    Tal com es pot veure s molt ms fcil recordar lndex duna posici per un nomque no per un nmero.

    Hi ha una altra manera de generar matrius associatives. Lexemple segent t unresultat idntic a lanterior:

    1 $dades=array(nom=>"Omar",2 dni=>"12345678A",3 naixement=>"1956",4 cicle=>"ASIX");

    2.1.8 Variables

    El PHP s un llenguatge que garanteix dinamisme a les vostres pgines web. Poderfer que determinats valors controlats per vosaltres canvin en funci del codi estradueix en un abandonament de la rigidesa del codi.

    Una variable s un identificador al qual podreu assignar un valor, valor quepodr canviar al llarg del temps.

    Les matrius associatives lesutilitzareu moltssim quantreballeu amb variablespredefinides.

  • Llenguatges de guions de servidor 40 Llenguatges de guions de servidor

    Per representar una variable caldr escriure el smbol del dlar seguit pel nom quevulgueu posar. En el moment de donar nom a una variable heu de tenir en compteque es diferencien majscules i minscules i que haur de comenar amb una lletrao carcter de subratllat.

    En PHP, a diferncia demolts altres llenguatges, no cal declarar una variable abansdutilitzar-la. El smbol del dlar s el que marca que es tracta duna variable.

    1

    Com podeu veure, les variables poden adquirir qualsevol dels tipus suportats, ila variable $Durada emmagatzema lenter 180, mentre que la resta de variablesemmagatzemaran cadenes.

    Les variables sassignen per valor per defecte, per si voleu assignar un valor perreferncia ho haureu dindicar fent servir el smbol& tot just davant de la variable.

    2.1.9 Estructures de control i sentncies

    Quan comenceu a analitzar un problema i inicieu el procs de plasmar en un paperall que us passa pel cap, de seguida us adoneu que necessiteu ms eines, amb lessentncies no en teniu prou per resoldre el problema.

    Les estructures de control proporcionen dinamisme al vostre codi,i us brinden loportunitat dindicar quines accions podeu prendre endeterminades situacions.

    El PHP us permet utilitzar un ampli ventall destructures de control, les qualssn comunes en la gran majoria de llenguatges de programaci. Si teniu msduna sentncia per executar dins una estructura, les haureu dagrupar entre claus.Si noms heu dexecutar una sentncia dins les estructures, ls de les claus sopcional.

    Estructura de control: if, else, elseif

    Mitjanant lestructura if podreu condicionar lexecuci dun codi. En cas quela condici que sanalitza sigui certa, sexecutar un bloc de codi indicat. En lafigura 3.2 podeu veure el diagrama daquesta estructura.

  • Llenguatges de guions de servidor 41 Llenguatges de guions de servidor

    Figura 2.2. Estructura if else

    En el cas segent es condiciona lexecuci dun bloc de codi en funci del valorde la variable $nom. Si $nom s igual a Rashid sexecutar el codi que hi ha entreles claus.

    1

    De vegades, resulta molt til controlar els casos en qu no es compleix la condicidonada i provocar que sexecuti un codi alternatiu.

    1

    Lestructura if us pot donar ms alternatives a lhora de crear condicionants en elvostre codi. Per exemple, davant lexecuci dun codi alternatiu podeu provocarel compliment duna condici.

    1

  • Llenguatges de guions de servidor 42 Llenguatges de guions de servidor

    7 elseif($nom==Layla)8 {9 echo "Ests dins el codi de la segona condici";

    10 }11 else12 {13 echo "No es compleix cap de les dues condicions";14 }15 ?>

    Igual que en la majoria de llenguatges de programaci, podeu aniuar-hi codi.

    1

    Estructura de control: while

    Fareu servir lestructura while si us trobeu amb la necessitat de repetir unaseqncia dinstruccions durant un perode de temps controlat per una variable.En la figura 2.3 podreu veure el diagrama daquesta estructura.

    Figura 2.3. Lestructura while

    Lexemple segent mostra com el while us pot ser molt til per crear un codi quegeneri la taula de multiplicar del nmero 7:

  • Llenguatges de guions de servidor 43 Llenguatges de guions de servidor

    1

    Estructura de control: do while

    Lestructura do la utilitzareu en els casos en qu sempre shagin de fer unesaccions i, en finalitzar aquestes accions, es comprovi un estat que deixar pas auna repetici del codi anterior o b forar la sortida del bucle. En la figura 2.4podeu veure el diagrama daquesta estructura.

    Figura 2.4. Lestructura do

    La sintaxi de lestructura do inclou un while, que sencarrega de comprovar unaexpressi.

    En lexemple segent es mostra en el navegador el nmero de lnia corresponentmentre no arribem a la lnia 10. Fixeu-vos que la comprovaci del valor de lavariable es fa una vegada sha produt una iteraci.

    1

  • Llenguatges de guions de servidor 44 Llenguatges de guions de servidor

    7 }8 while($linia

    Estructura de control: for

    Lestructura for utilitza tres expressions en la seva implementaci. La primeraexpressi sexecuta en iniciar-se el codi i dna un valor inicial a una variable. Calremarcar que aquesta variable tindr un paper important en el desenvolupamentdel codi, ser la variable que permetr el control del bucle. La segona expressi sla condici que ha de ser favorable per poder executar el bucle de codi. La terceraexpressi indica una acci que cal dur a terme quan finalitzi el bloc de codi. En lafigura 2.5 podeu veure el diagrama daquesta estructura.

    Figura 2.5. Lestructura for

    En lexemple segent la variable $edat sinicialitza amb valor 0 i, mentre tinguiun valor ms petit que 18, es permetr lexecuci del bloc de codi que hi ha sotael control del for. Quan finalitzi el bucle, la variable $edat sincrementar en unaunitat.

    1

  • Llenguatges de guions de servidor 45 Llenguatges de guions de servidor

    Qualsevol de les tres expressions que formen part de lestructura for poden serformades per ms duna expressi i, fins i tot, poden restar buides.

    No cal que les tres expressions del for tinguin valor, les podeu deixar buides (perrespectant els punt i coma). Lexemple segent mostrar una sortida idntica alexemple anterior, per ara dins el for noms hi ha una expressi. La declaracii inicialitzaci de la variable sha fet fora del bucle i, a ms a ms, augmentareuuna unitat la variable $edat dins el mateix codi del bucle.

    1

    La sentncia break

    La sentncia break provoca la sortida de qualsevol estructura de control, trencantaix un bucle. Penseu per exemple un bucle que cerca un element dun array. Unavegada trobat, s ineficient acabar de recrrer la resta de larray.

    Podeu indicar a aquesta sentncia quantes estructures de control voleu saltar.

    En lexemple segent el break provoca la sortida de dos blocs de codi:

    1

    La sentncia continue

    La sentncia continue provoca el salt de les lnies de codi que restin per executardins un bucle i continua executant la primera lnia de codi que es trobi fora delbucle.

    s possible indicar quants bucles se saltar aquesta sentncia.

  • Llenguatges de guions de servidor 46 Llenguatges de guions de servidor

    En lexemple segent, la continue forar la sortida del bloc de codi encapalatper if.

    1

    Lestructura switch

    Lestructura de control switch executa un codi determinat en funci del valor dunavariable. En la figura 2.6 podeu veure el diagrama daquesta estructura.

    Figura 2.6. Lestructura switch

    Per implementar lestructura switch caldr fer servir la sentncia case seguida dedos punts, la qual sencarregar de comparar el valor de la variable que utilitzael switch amb el valor que identifica un codi determinat, i la sentncia break, queforar la sortida del bloc de codi. Opcionalment es podr utilitzar la sentnciadefault seguida de dos punts, que ens permetr executar un codi en cas que no escompleixi cap condici certa dins el switch.

  • Llenguatges de guions de servidor 47 Llenguatges de guions de servidor

    En lexemple segent lestructura switch utilitza la variable $opcio. En cas quela variable $opcio valgui 0 sortir un missatge per pantalla, si el valor dopci fos1 el missatge seria un altre, i si fos 2 el missatge tamb seria diferent; ara b, enqualsevol altre cas sexecutar el codi que es trobi a continuaci del default. En elcas concret de lexemple, com que $opcio t un valor de 3 sexecutar el codi deldefault.

    1

    Lestructura foreach

    Lestructura de control foreach permet recrrer una matriu. Aquesta estructura espot fer servir a partir de la versi 4 del PHP.

    En lexemple segent es crea una matriu que emmagatzema quatre nombres. Amblestructura foreach es recorre la matriu posici a posici i es copien els nombresen la variable $valor:

    1

    Tamb es pot assignar una clau a cada element. En lexemple segent els ndexsclau de la matriu sn noms que emmagatzemen edats:

    1

  • Llenguatges de guions de servidor 48 Llenguatges de guions de servidor

    2.1.10 Funcions

    En el desenvolupament normal dun programa sempre arriba un punt en qu esveu la necessitat dagrupar codi i donar-hi un nom, per controlar-lo o per evitarrepetir-ne contnuament les mateixes lnies.

    Una funci s un grup de codi independent que fa una tasca per al programa.

    La funci executa loperaci i retorna el control del programa a la instruccisegent a la que la va cridar.

    Funcions definides per lusuari

    Lusuari pot definir totes les funcions que necessiti. s imprescindible que elnom donat a la funci no estigui prohibit, s a dir, no es poden fer servir paraulesreservades (per exemple, echo), comenar amb un nombre o un carcter especialni repetir el nom duna funci dins un mateix mbit. Tot i que el PHP no far capdistinci entre majscules i minscules, es recomana utilitzar el nom de la funciidntic a lutilitzat en la declaraci.

    Les funcions poden rebre parmetres. El pas de parmetres dentrada es faescrivint entre parntesis i a continuaci del nom de la funci.

    En lexemple segent podeu veure com es declara la funci missatge i com,posteriorment, es crida passant-hi un parmetre.

    1

    Les funcions tamb podran retornar valors. Per fer-ho caldr utilitzar la sentnciareturn.

    En lexemple segent comprovareu com la funci suma, la qual rep dos parme-tres, retorna el resultat de sumar dos nombres:

    1

  • Llenguatges de guions de servidor 49 Llenguatges de guions de servidor

    Funcions internes

    El llenguatge PHP t funcions definides internament. Aquestes funcions sn degran utilitat per al programador i resulta imprescindible estudiarles i conixer-neles ms importants.

    s possible que diverses funcions no es reconeguin en el vostre entorn de treballdel PHP; el motiu daix s que algunes funcions internes no shan incls en lacompilaci, la qual cosa ha fet necessria una compilaci dels mduls que lescontenen. Amb phpinfo() es poden veure les extensions carregades en la vostraconfiguraci del PHP.

    Sn funcions internes molt usuals echo, fprintf, print, printf i sprintf, en qu quedademostrat que el llenguatge PHP ja t definides funcions especfiques que podenser de gran utilitat per a lusuari.

    En lexemple segent es mostra com es pot codificar amb codificaci md5 elcontingut duna variable:

    1

    2.1.11 Classes i objectes

    El llenguatge de programaci PHP est preparat per fer s daspectes propis dela programaci orientada a objectes, tot i que el PHP no s un llenguatge deprogramaci orientada a objectes.

    Per definir una classe en llenguatge PHP sha dutilitzar la paraula reservada classseguida del nom que hi voleu donar. Entre claus shan dubicar els atributs i elsmtodes propis de la classe.

    Per instanciar objectes en PHP es far servir loperador new seguit del mtodeconstructor de la classe.

    Lexemple segent mostra el funcionament de la classe Alumne. Aquesta classet dos atributs que resumeixen les caracterstiques de la classe. Podreu observarque els atributs $nom i $curs sn precedits per loperador var, el qual identificacom a variable el text que ve a continuaci.

    La classe Alumne cont un mtode especial anomenat constructor, el qual t lamissi dinicialitzar objectes. s molt fcil identificar els mtodes constructors,ja que reben el mateix nom que la classe. Dins el mtode constructor sassignenvalors als atributs $nom i $curs. En aquest exemple sutilitza $this, que s unavariable predefinida que fa referncia a lobjecte que en aquest moment sestutilitzant.

    Podeu mirar lajuda de PHPa www.php.net/manual/es/funcref.php. Aqu podeutrobar una caixa per cercarla referncia de les diferentsfuncions del llenguatge.

    Simula 67

    Es tracta dun llenguatge creatper fer simulacions. Selconsidera lorigen de laprogramaci orientada aobjectes. Els seus autors sn elsnoruecs Ole-Johan Dahl iKristen Nygaard.

  • Llenguatges de guions de servidor 50 Llenguatges de guions de servidor

    Una altra manera de generar mtodes constructors s utilitzar function __cons-truct. ltimament aquesta variant s la que ms sutilitza, tot i que les duesfrmules sn perfectament vlides.

    Podeu veure que dins la classe hi ha un mtode anomenat avaluar que sencarregadassignar un valor a latribut $nota.

    Fora de lmbit de la funci es crea un objecte de la classe Alumne amb la partculanew seguida del mtode constructor.

    1

    2.2 Integraci PHP amb HTML

    Normalment trobareu el llenguatge de programaci PHP dins daltres llenguatges.El ms usual s escriure codi en PHP dins de codi HTML.

    Heu de recordar que el codi PHP s interpretat pel servidor, i els resultats esmostren en el navegador que utilitzeu. La simbiosi que es crea entre el PHP ilHTML permet al PHP generar HTML i a lHTML passar dades al PHP.

    Per comenar a dominar el llenguatge PHP s recomanable que comenceu creantuna pgina bsica. A partir daquesta pgina podeu provar coses i construir lesbases que necessitareu ms endavant. Aix s important, ja que laprenentatge dequalsevol llenguatge de programaci comena en establir unes bones bases.

    Heu de saber que no s necessari treballar amb una pgina HTML per utilitzar elPHP; ara b, per veure resultats en un navegador haureu de filtrar el PHP per unllenguatge que el navegador pugui interpretar, com lHTML.

  • Llenguatges de guions de servidor 51 Llenguatges de guions de servidor

    2.2.1 Ls del PHP en formularis

    El formulari electrnic s una eina molt potent fortament establida a Internet.Permet lintercanvi o la introducci de dades entre usuaris duna manera rpidai senzilla. Un formulari permet la interactivitat i s el detonant que converteixInternet en leina ms poderosa per enviar informaci a un destinatari.

    El llenguatge PHP representa un salt qualitatiu enorme en ls de formularis.LHTML no s un llenguatge creat pensant a utilitzar formularis, sin que es vacrear amb altres objectius. El llenguatge PHP t un gran potencial en la gesti dedades; per tant, quan HTML i PHP treballen juntament amb formularis ens trobemamb un binomi ideal.

    Preparaci de lHTML

    El llenguatge HTML mostrar la faana que lusuari veur a la pantalla delnavegador. El PHP ser darrere daquesta primera pantalla i treballar amb lesdades.

    En la figura 2.7 podeu veure laspecte tpic dun formulari. El codi necessari perdissenyar aquest formulari s elaborat en HTML; en canvi, el motor que esperales dades s constitut amb PHP.

    Figura 2.7. Aspecte dun formulari

    El primer que cal programar per fer servir un formulari dissenyat en PHP s crearel codi HTML. Un formulari en HTML semmarca entre les etiquetes i . Per manipular aquest formulari sutilitza latribut ACTION.

    PhpMyAdmin

    Leina de programari lliurePhpMyAdmin est creadaintegrament en llenguatge deprogramaci PHP. s unexemple del que podeu arribar aprogramar amb aquest llenguatgede programaci.

  • Llenguatges de guions de servidor 52 Llenguatges de guions de servidor

    HTML i PHP

    En el treball de formularis i PHPs interessant que exploreu el

    mn de les etiquetes de lHTML.Si no sabeu com lHTML

    treballa amb els formularis,limitareu les possibilitats del

    vostre codi.

    Latribut ACTION indica el programa que sencarrega de manipular les dades, tascaque encomanareu a un codi dissenyat en llenguatge PHP.

    Letiqueta us permet fer servir dos mtodes per enviar informaci:GETi POST. El mtode GET s molt til en motors de cerca, per no ofereix gaireseguretat, ja que les dades que envia es poden veure en lURL del navegador.El mtode POST s molt ms segur, ja que quan el servidor detecta que el mtodede transacci dinformaci s POST espera rebre dades immediatament sense ferservir lURL, la qual cosa implica que aquestes dades no seran visibles en lURL.

    Un petit exemple de crida a un formulari seria:

    1 2 3 El nostre primer exemple amb formularis4 5 6 Introdueix el teu nom i prem el bot!7

    8 9 Si us plau, escriu el teu nom:

    10 11 12 13

    Podeu veure com, dins letiqueta , apareix letiqueta . LatributACTION crida un fitxer anomenat contesta.php, el qual contindr el codi PHPencarregat de valorar el formulari. El pas de les dades es far mitjanant elmtode POST. El servidor detecta que sest executant un codi que cont transaccidinformaci mitjanant el mtode POST; per tant, el servidor es posa a escoltara lespera que hi arribin dades. Les dades les rebr directament, sense fer servirlURL. En el moment en qu es premi el bot etiquetat com a Enviar totes lesdades introdudes en el formulari senvien al fitxer contesta.php.

    Com valora el PHP un formulari

    En el moment denviar les dades des del formulari duna pgina HTML a un fitxerescrit en PHP sha de tenir en compte que latribut NAME emmagatzema el valor.

    1 2 3 Resposta a la petici de dades4 5 6 ...Continuem amb lexemple!7 El teu nom s:8 11 12

    En el moment en qu senvien dades del formulari HTML cap a un fitxer PHP,aquestes dades apareixeran dins dun array superglobal amb tots els seus valors.

  • Llenguatges de guions de servidor 53 Llenguatges de guions de servidor

    Les matrius associatives i els formularis

    Resulta de gran utilitat fer servir matrius associatives per tractar la informacirebuda dun formulari.

    Podeu utilitzar les matrius associatives $_POST i $_GET ; el seu s, per, sercondicionat pel mtode utilitzat en el pas de dades en el codi HTML. Aix, si en elcodi HTMLel mtode s POST haureu de fer servir la matriu associativa $_POST ;en canvi, si heu fet servir el mtode GET en el codi HTML, haureu de fer servir lamatriu associativa $_GET.

    Per accedir als valors emmagatzemats en les matrius associatives fareu servirlatribut corresponent NAME de lHTML com a ndex de la matriu associativa.

    No heu doblidar que el PHP s un llenguatge de programaci que, entre altrescoses, us permet utilitzar bucles. En el formulari segent es defineix una seleccimltiple, en qu podreu marcar els navegadors que coneixeu.

    1 2 3 Un exemple amb un formulari4 5 6 7 Nom: 8 Correu electrnic: 9 Navegadors que coneixes:

    10 11 Chrome12 Mozilla Firefox13 Safari14 Opera15 Lynx16 17 18 19 20

    Aqu us trobareu amb un petit problema. Per recuperar els valors introduts coma nom i correu electrnic no hi ha cap problema, la matriu $_POST us permetrun recorregut buscant els valors emmagatzemats a nom iemail. Amb la seleccimltiple, per, sorgeix un petit problema. A diferncia dels casos anteriors, aranavegadors pot contenir ms dun valor, com ho fareu per mostrar tots els valorsper pantalla? La soluci s utilitzar un bucle:

    1

    El bucle foreach anterior permet recrrer la matriu navegadors, la qual contindrels navegadors que heu marcat en el formulari inicial.

    Si no recorreu la matriu i la mostreu directament amb:

    1 echo $_POST[navegadors];

  • Llenguatges de guions de servidor 54 Llenguatges de guions de servidor

    noms es mostrar la cadena Array.

    2.2.2 Tipus de dades en PHP

    En PHP no s necessari declarar una variable abans dutilitzar-la; de fet, no calni establir el tipus al qual pertany, el mateix llenguatge sencarregar dassignarel tipus corresponent segons el contingut i el context. Fixeu-vos en lexemplesegent:

    1

    Podeu veure que en lexemple anterior en cap moment no sha definit el tipus dela variable.

    Si voleu, podeu indicar el tipus de la variable o forar una conversi de tipus. Unautilitat que fareu servir sovint s forar el tipus duna variable per validar lentradade dades.

    El llenguatge del PHP suporta vuit tipus primitius, dos despecials i algunspseudotipus.

    Tipus de dades primitius

    Els tipus de dades primitius suportats pel PHP sn vuit, agrupats en escalars,compostos i especials. Per dinamitzar el tractament de dades i ajudar a comprendrealguns codis es permet utilitzar pseudotipus, com ara mixed,number o callback.

    1. Els tipus de dades escalars sn:

    boolean: s un tipus de dades molt simple que pot representar un valor cert(TRUE) o fals (FALSE). Aquest tipus de dades sutilitza molt en estructuresde control. Si feu conversi de dades s molt important que tingueu encompte que es considerar fals el nombre enter i amb coma 0, la cadena 0o una cadena buida, una matriu buida, un objecte sense variables membre,el tipus

    NULL i els objectes SimpleXML que shagin creat detiquetes buides. A continu-aci, es mostren dues variables booleanes:

    1 $sortir=FALSE;2 $entrar=TRUE;

  • Llenguatges de guions de servidor 55 Llenguatges de guions de servidor

    integer: aquest tipus representa nombres no fraccionables per sota de launitat. Poden ser positius i negatius. Aquests nombres enters els podeurepresentar en notaci decimal, hexadecimal o octal. La plataforma sobre laqual treballeu determinar la mida de les variables enteres. El PHP forarun canvi de tipus a flotant si es produeix un desbordament, tant si s positiucom negatiu. A continuaci, es mostren dos exemples de variables enteres:

    1 $positiu=3451;2 $negatiu=4345;

    float: aquest tipus fa referncia als nombres de coma flotant, i normalmenttreballa amb una precisi aproximada de catorze dgits decimals. Acontinuaci, es mostra un exemple duna variable amb coma flotant:

    1 $amb_coma=34.5;

    string: es tracta duna cadena de carcters. El llenguatge del PHP no imposaun lmit a la mida daquestes cadenes; ara b, no oblideu que el lmit elmarcar la memria del maquinari en qu estigui funcionant el PHP. Aquteniu diversos exemples de cadenes:

    1

    En lexemple anterior es fan servir cometes dobles i simples per marcar lescadenes. La diferncia entre fer-ho dunamanera o duna altra s que amb cometesdobles sinterpreten les variables com a tals