COMUNICACIÓ ENTRE EL CLIENT I EL SERVIDOR SENSE PHP I AMB PHP


Intentarem explicar ara quines són les diferències entre una petició a un servidor sense PHP i amb PHP. 
Això ens permetrà veure quines són les principals diferències entre una pàgina web estàtica en HTML i una pàgina web dinàmica en PHP.

Començarem recordant què anomenem servidor ja què anomenem client, de forma molt simplificada. Cridem servidors a ordinadors generalment potents, amb un programari i maquinari especial, i que s'encarreguen de resoldre peticions que li fan desenes, centenars o milers d'ordinadors. Parlem de client en general per referir-nos a ordinadors tipus ordinador personal dels que habitualment tenim a casa nostra o a la nostra oficina de treball. Un client normalment treballa combinant el que és el seu entorn local (per exemple el nostre sistema d'arxius i programes instal·lats al nostre ordinador) amb peticions a un servidor: per exemple quan ens connectem a Internet i teclegem una adreça web (URL), el que fem és realitzar una petició a un servidor. En aquest cas seria un servidor web, però hi ha diferents tipus de servidors (de bases de dades, xml, etc.). El servidor li respon al client lliurant el que ha sol·licitat si és possible o, en alguns casos, indicant que no té permisos per obtenir el sol·licitat, que el que ha sol·licitat no existeix, etc.

Aquestes definicions són definicions simplificades i molt succintes, però per als objectius d'aquest curs ens resultaran suficients.

 

COMUNICACIÓ ENTRE EL CLIENT I EL SERVIDOR SENSE PHP

En primer lloc, el que fem és escriure a la barra d'adreces del navegador, la url de la pàgina web que volem veure. Després el navegador envia el missatge a través d'Internet a l'ordinador remot (servidor), d'acord amb un protocol estandarditzat, sol·licitant la pàgina en qüestió. El servidor comprova que la petició és vàlida i llegeix l'arxiu sol·licitat des del seu disc dur. Tot això és possible gràcies al programari instal·lat al servidor. Tot seguit, el servidor web envia l'arxiu sol·licitat pel navegador tal qual està en el disc dur. I, finalment, el navegador mostra en pantalla l'arxiu que va enviar el servidor web.

Aquest procés sempre és el mateix quan parlem de pàgines estàtiques (col·loquialment, "pàgines que no canvien").

Qualsevol que sigui el client que demana la pàgina, el contingut retornat sempre serà el mateix. L'única manera que el contingut de l'arxiu canviï és que l'administrador d'aquest lloc web editeu el contingut de l'arxiu index.html i faci modificacions.

 

COMUNICACIÓ ENTRE EL CLIENT I EL SERVIDOR AMB PHP. INTÈRPRET PHP I GESTORS DE BASES DE DADES.

Comencem escrivint a la barra d'adreces del navegador la url de la pàgina web que volem veure. En segon lloc, el navegador envia el missatge a través d'internet a l'ordinador remot (servidor), d'acord amb un protocol estandarditzat, sol·licitant la pàgina (arxiu) index.php.

El servidor web rep el missatge, comprova que es tracta d'una petició vàlida, i al veure que l'extensió és "php" sol·licita a l'intèrpret de PHP (que és un altre programa que s'executa al servidor web) que li enviï l'arxiu.

En aquest cas la situació ha variat: no es tracta d'una simple extracció d'un arxiu des del disc dur, sinó que està actuant un agent intermediari: l'intèrpret PHP. L'intèrpret PHP llegeix des del disc dur del servidor l'arxiu index.php i comença a processar les instruccions (codi de programació) que contingui aquest arxiu. Diem que l'intèrpret PHP "executa" les ordres continguts a l'arxiu i, eventualment, es comunica amb un gestor de base de dades (exemples d'ells poden ser MySQL, Oracle, SQL Server, etc.). La comunicació amb base de dades no sempre es produeix, però és una cosa molt freqüent quan treballem amb PHP. Tenim doncs una altra diferència amb les webs estàtiques: intervé un altre agent més, el gestor de base de dades, que és capaç de tornar la informació continguda en llocs determinats d'una base de dades. I una base de dades podem veure simplement com un gran magatzem d'informació organitzada en taules.

Un cop l'intèrpret PHP acaba d'executar el codi contingut a l'arxiu i ha rebut tota la informació necessària del gestor de base de dades, envia els resultats al servidor web. El servidor web envia la pàgina al client que l'havia sol·licitat i el navegador mostra en pantalla la informació que li envia el servidor web.

En llenguatges de programació com C o Java estem acostumats que en executar un codi, observem uns resultats en la pantalla del nostre ordinador. No obstant això, en PHP el resultat que s'obté després d'executar codi és codi HTML que és el que utilitzarà el navegador per mostrar la pàgina web.

Una qüestió interessant, i curiosa, és preguntar-nos sobre quina és la diferència entre el codi HTML que li arriba al client quan demana una pàgina estàtica i el codi HTML que li arriba quan demana una pàgina dinàmica. La resposta és que no hi ha diferència: tots dos són codi HTML. Com podríem saber si un codi HTML prové d'un arxiu html, estàtic, o si prové d'una resposta d'un intèrpret PHP? Doncs diguem que si simplement ens donen el codi no podríem saber d'on ve.

I una altra qüestió que es pot plantejar: si tant amb PHP com sense PHP el que obtenim és codi HTML, ¿per a què ens serveix el PHP?Bé, PHP és un llenguatge de programació, mentre que HTML no ho és. Amb HTML podem enviar certa informació sempre igual, però no podem fer càlculs, no podem prendre decisions, no podem repetir processos cert nombre de vegades. En definitiva, PHP aporta tota la potència que suposa la programació d'ordinadors al món de les pàgines web. Posem un exemple molt senzill: volem que en una pàgina web es produeixi un procés de venda a través d'una targeta de crèdit. Un cop el client tria el producte, nombre d'unitats que vol i lloc d'enviament necessitarem realitzar uns càlculs: això ho podem fer amb PHP (també amb altres llenguatges, però ens centrarem en l'objecte d'aquest curs). Un cop realitzats els càlculs, li mostrarem al client l'import total i les dades de la seva compra i li demanarem que introdueixi el número de la targeta de crèdit i la seva clau personal. Ara cal prendre una decisió: per això no ens serveix l'HTML. No obstant això, usant PHP podem consultar a una base de dades on estiguin emmagatzemats els números de targetes de crèdit vàlides del banc i les seves claus. Un cop feta aquesta consulta, usant PHP podem mostrar a l'usuari un resultat diferent segons la situació que s'hagi produït, per exemple:

- Les dades no són vàlides. La compra no ha pogut realitzar-se.

- Les dades són vàlids. S'ha realitzat satisfactòriament la compra. Rebrà la seva comanda en el seu domicili en un termini de 10 dies. Gràcies per confiar en nosaltres.

Php és un llenguatge de programació i HTML no ho és, aquesta és una gran diferència. ¿Si PHP és molt més potent, per què no prescindir d'HTML? Diguem que cada llenguatge compleix la seva funció: HTML és un llenguatge molt ordenat que permet enviar informació de forma ràpida perquè es mostri alguna cosa en un ordinador. En aquest sentit, és més ràpid enviar la informació en format HTML que d'una altra manera (per exemple un arxiu executable que s'hagués de executar en el client). Per això HTML segueix sent rellevant dins el món d'Internet: és un format molt utilitzat per a l'enviament d'informació. Com s'hagi generat aquesta informació és una altra qüestió.

En el següent esquema podem veure el procés complet.

 

EXERCICI

Respon a les següents preguntes indicant vertader o fals i justificant breument la teva resposta:

a) Tots els servidors web treballen amb PHP, ja que és l'única manera d'aconseguir que es mostri una pàgina web al computador client.

b) El codi HTML generat amb PHP no és distingible del codi HTML generat manualment, llevat que comptem amb alguna informació addicional.

c) HTML és un llenguatge de programació que permet decidir i repetir, però no té funcionalitats d'accés a bases de dades.

d) Per crear pàgines web dinàmiques HTML és un llenguatge obsolet. Per a la seva creació farem servir PHP o un altre llenguatge d'última generació.