COMUNICACIÓN ENTRE EL CLIENTE Y EL SERVIDOR SIN PHP Y CON PHP
Intentaremos
explicar ahora cuáles son las diferencias entre una petición a un servidor sin
PHP y con PHP. Esto nos permitirá ver cuáles son las principales diferencias
entre una página web estática en HTML y una página web dinámica en PHP.
Empezaremos
recordando a qué llamamos servidor y a qué llamamos cliente, de forma muy
simplificada. Llamamos servidores a ordenadores generalmente potentes, con un
software y hardware especial, y que se encargan de resolver peticiones que le
hacen decenas, cientos o miles de ordenadores. Hablamos de cliente en general
para referirnos a ordenadores tipo ordenador personal de los que habitualmente
tenemos en nuestra casa o en nuestra oficina de trabajo. Un cliente normalmente
trabaja combinando lo que es su entorno local (por ejemplo nuestro sistema de
archivos y programas instalados en nuestro ordenador) con peticiones a un
servidor: por ejemplo cuando nos conectamos a internet y tecleamos una
dirección web (URL), lo que hacemos es realizar una petición a un servidor. En
este caso sería un servidor web, pero hay distintos tipos de servidores (de
bases de datos, xml, etc.). El servidor le responde al cliente entregándole lo
que ha solicitado si es posible o, en algunos casos, indicando que no tiene
permisos para obtener lo solicitado, que lo que ha solicitado no existe, etc.
Estas definiciones
son definiciones simplificadas y muy someras, pero para los objetivos de este
curso nos resultarán suficientes.
COMUNICACIÓN ENTRE
EL CLIENTE Y EL SERVIDOR SIN PHP
En primer lugar, lo
que hacemos es escribir en la barra de direcciones del navegador, la url de la
página web que queremos ver. Después el navegador envía el mensaje a través de Internet al ordenador remoto (servidor), de acuerdo con un protocolo estandarizado,
solicitando la página en cuestión (ejemplo: www.ejemplo.com/index.html). El
servidor comprueba que la petición es válida y lee el archivo solicitado desde
su disco duro. Todo ello es posible gracias al software instalado en el
servidor. Acto seguido, el servidor web envía el archivo solicitado por el
navegador tal cual está en el disco duro. Y, por último, el navegador muestra
en pantalla el archivo que envió el servidor web.
Este proceso
siempre es el mismo cuando hablamos de páginas estáticas (coloquial mente,
“páginas que no cambian”). Cualquiera que sea el cliente que solicita la
página, el contenido devuelto siempre será el mismo. La única forma de que el
contenido del archivo cambie es que el administrador de ese sitio web edite el
contenido del archivo index.html y haga modificaciones.
COMUNICACIÓN ENTRE
EL CLIENTE Y EL SERVIDOR CON PHP. INTÉRPRETE PHP Y GESTORES DE BASES DE DATOS.
Empezamos
escribiendo en la barra de direcciones del navegador la url de la página web
que queremos ver. En segundo lugar, el navegador envía el mensaje a través de Internet al ordenador remoto (servidor), de acuerdo con un protocolo
estandarizado, solicitando la página (archivo) index.php. (Ejemplo: www.ejemplo.com/index.php).
El servidor web
recibe el mensaje, comprueba que se trata de una petición válida, y al ver que
la extensión es "php" solicita al intérprete de PHP (que es otro
programa que se ejecuta en el servidor web) que le envíe el archivo.
En este caso la
situación ha variado: no se trata de una simple extracción de un archivo desde
el disco duro, sino que está actuando un agente intermediario: el intérprete
PHP. El intérprete PHP lee desde el disco duro del servidor el archivo
index.php y empieza a procesar las instrucciones (código de programación) que
contenga dicho archivo. Decimos que el intérprete PHP “ejecuta” los comandos
contenidos en el archivo y, eventualmente, se comunica con un gestor de base de
datos (ejemplos de ellos pueden ser MySql, Oracle, SQL Server, etc.). La
comunicación con base de datos no siempre se produce, pero es algo muy
frecuente cuando trabajamos con PHP. Tenemos pues otra diferencia con las webs
estáticas: interviene otro agente más, el gestor de base de datos, que es capaz
de devolver la información contenida en lugares determinados de una base de
datos. Y una base de datos podemos verla simplemente como un gran almacén de
información organizada en tablas.
Una vez el
intérprete PHP termina de ejecutar el código contenido en el archivo y ha
recibido toda la información necesaria del gestor de base de datos, envía los
resultados al servidor web. El servidor web envía la página al cliente que la
había solicitado y el navegador muestra en pantalla la información que le envía
el servidor web.
En lenguajes de
programación como C o Java estamos acostumbrados a que cuando ejecutamos un
código, observamos unos resultados en la pantalla de nuestro ordenador. Sin
embargo, en PHP el resultado que se obtiene después de ejecutar código es
código HTML que es el que utilizará el navegador para mostrar la página web.
Una cuestión
interesante, y curiosa, es preguntarnos sobre cuál es la diferencia entre el
código HTML que le llega al cliente cuando solicita una página estática y el
código HTML que le llega cuando solicita una página dinámica. La respuesta es
que no hay diferencia: ambos son código HTML. ¿Cómo podríamos saber si un
código HTML proviene de un archivo html, estático, o si proviene de una
respuesta de un intérprete PHP? Pues digamos que si simplemente nos dan el
código no podríamos saber de dónde viene.
Y otra cuestión que
se puede plantear: si tanto con PHP como sin PHP lo que obtenemos es código
HTML, ¿para qué nos sirve el PHP? Bien, PHP es un lenguaje de programación,
mientras que HTML no lo es. Con HTML podemos enviar cierta información siempre
igual, pero no podemos hacer cálculos, no podemos tomar decisiones, no podemos
repetir procesos cierto número de veces. En definitiva, PHP aporta toda la potencia
que supone la programación de ordenadores al mundo de las páginas web. Pongamos
un ejemplo muy sencillo: queremos que en una página web se produzca un proceso
de venta a través de una tarjeta de crédito. Una vez el cliente elige el
producto, número de unidades que quiere y lugar de envío necesitaremos realizar
unos cálculos: esto lo podemos hacer con PHP (también con otros lenguajes, pero
vamos a centrarnos en el objeto de este curso). Una vez realizados los
cálculos, le mostraremos al cliente el importe total y los datos de su compra y
le pediremos que introduzca el número de su tarjeta de crédito y su clave
personal. Ahora hay que tomar una decisión: para esto no nos sirve el HTML. Sin
embargo, usando PHP podemos consultar a una base de datos donde estén
almacenados los números de tarjetas de crédito válidas del banco y sus claves.
Una vez hecha esta consulta, usando PHP podemos mostrar al usuario un resultado
distinto según la situación que se haya producido, por ejemplo:
- Los datos no son
válidos. La compra no ha podido realizarse.
- Los datos son
válidos. Se ha realizado satisfactoriamente la compra. Recibirá su pedido en su
domicilio en un plazo de 10 días. Gracias por confiar en nosotros.
Php es un lenguaje
de programación y HTML no lo es, esta es una gran diferencia. ¿Si PHP es mucho
más potente, por qué no prescindir de HTML? Digamos que cada lenguaje cumple su
función: HTML es un lenguaje muy ordenado que permite enviar información de
forma rápida para que se muestre algo en un ordenador. En este sentido, es más
rápido enviar la información en formato HTML que de otra manera (por ejemplo un
archivo ejecutable que se tuviera que ejecutar en el cliente). Por eso HTML
sigue siendo relevante dentro del mundo de internet: es un formato muy usado para
el envío de información. Cómo se haya generado esa información es otra
cuestión.
En el siguiente
esquema podemos ver el proceso completo.