le langage PHP ou le web dynamique ... oui mais pourquoi?

le Web a été inventé en 1991 par Tim Berners Lee et Robert Cailliau sur une idée simple : « Je n'ai fait que prendre le principe d’hypertexte et le relier au principe du TCP et du DNS et alors – boum ! – ce fut le World Wide Web ! »
Le concept fondamental du worl wide web est donc le lien hypertexte qui permet un parcours discursif (par opposition au parcours itératif utilisé pour lire un livre par exemple).
C'est le langage html qui assure la présentation d' informations, de hypertexte et plus récemment de ressources diverse telles des images, ou des animations flash.
Le world wide web est basé sur le protocole http (par défaut port 80) lui même basé sur le modèle client-serveur, les logiciels serveur à l'écoute des requêtes http sont appelés serveur web ou http.
Il existe plusieurs logiciel serveur (démon) http, parmi eux apache est le plus connu et le plus utilisé, IIS est le logiciel serveur http de Microsoft.
Pour toute la suite c'est apache qui sera utilisé en tant que serveur http, mais le fonctionnement peut être transposé à d'autres serveurs http.

A l'origine était le web statique

c'est le cas le plus simple: seul le serveur web est sollicité.
  1. un client web (ici un navigateur, mais il peut aussi s'agir d'un crawler de moteur de recherche par exemple) envoie une requête http de la forme http://perdu.com.
  2. une fois que le serveur web correspondant au nom de domaine perdu.com  a été trouvé via les DNS, la requête http est transférée au serveur http. le serveur http analyse l'url (Uniform Ressource Locator) demandée et cherche dans l'arborescence correspondante à perdu.com cette ressource
  3. si la ressource existe le serveur web la renvoie au client encapsulée dans une réponse http,  si'l elle n'existe pas il renverra un message d'erreur 404
N.B. : il est possible de spécifier un fichier par défaut en cas de non spécification de ce dernier
ainsi http://perdu.com renverra la même ressource que http://perdu.com/index.html. En revanche seule http://perdu.com/doc.pdf renverra le document pdf  

Que l'intercation soit

Le web statique c'est vite révélé insuffisament intercatif. Le protocole http intègre la possibilité de faire passer des variables dans une requête et l'html met à disposition des balises de formulaire permettant à l'internaute de saisir ou de choisir différentes informations textuelles, voir d'uploader des fichiers.
La première forme d'interaction a été le CGI (common Gateway interface). Un CGI est une ressource exécutable, et exécutée par le serveur http. C'est la sortie standard de cette ressource (la plupart du temps du code html, mais pas toujours) qui sera renvoyée au client.
un CGI possède quelques avantages, notament celui de pourvoir être écrit dans n'importe quel langage, y compris avec des langages compilés, ce qui permet des gains de performances considérable.
soit une nouvelle ressource de perdu.com appelé script.cgi qui prend en entrée une chaîne de caractère et qui a pour sortir standard "hello chaîne de caractère"

  1. un client web envoie une requête http vers perdu.com/script.cgi avec une variable contenant le nom saisi par l'utilisateur en paramètre
  2. le serveur http trouve script.cgi dans l'arborescence aliassée
  3. le serveur exécute script.cgi avec la variable contenant le nom de l'utilisateur en paramètre
  4. le serveur renvoie la sortie standard du script après exécution ("hello chaîne de caractère")
Un CGI possède un inconvénient majeure, c'est qu'il oblige le développeur à écrire des echo ou print pour chaque écriture sur la sortie standard ... les caractères d'échappement rendent ce cette contrainte assez pénible.

et l'embedded fut...

Le coup de génie de PHP est la technique de l'embedded: une séquence de caractère (<? et ?>) permet de délimiter les portions exécutable. Il est ainsi possible d'écrire du code exéutable au milieu du code html.
Au niveau de la configuration du serveur, on stipule en générale que toute ressource possédant l'extension .php nécessite d'être interprété par l'interpréteur PHP. La plupart du temps (si mod_php est installé pour apache) l'interpréteur est embarqué au niveau des process apache ce qui permet un gain de temps (celui du chargement de l'interpréteur) par rapport à un cgi.

  1. un client web envoie une requête http vers perdu.com/script.php avec une variable contenant le nom saisi par l'utilisateur en paramètre
  2. le serveur http trouve script.php dans l'arborescence aliassée et l'envoie à l'interpréteur PHP embarqué
  3. l'interpréteur PHP embarqué exécute les parties PHP de script.php
  4. le serveur renvoie la sortie standard du script après exécution ("hello chaîne de caractère")

N.B. le coup de génie n'en est pas un puisque PHTML était un langage embedded à base de perl avant que PHP n'existe ... faute de mainteneur il est tombé en désuètude
N.B.bis:PHP n'est pas le seul langage embedded ASP et dans une certaine mesure le TAL de ZOPE sont des technologies similaires

interaction avec les bases de données

Une fonctionnalité fondamentale de PHP est sa capacité à dialoguer avec les bases de données, typiquement MySQL. imaginons que le nom de l'internaute passé en paramètre, serve à effectuer une requête quelconque sur un SGBD.

  1. un client web envoie une requête http vers perdu.com/script.php avec une variable contenant le nom saisi par l'utilisateur en paramètre
  2. le serveur http trouve script.php dans l'arborescence aliassée et l'envoie à l'interpréteur PHP embarqué
  3. l'interpréteur PHP embarqué exécute les parties PHP de script.php
  4. si des requêtes vers un SGBD sont présentes dans le script, PHP va interroger les SGBD, récupérer les données renvoyées et le utiliser pour la suite de l'exécution du script
  5. le serveur renvoie la sortie standard du script après exécution ("hello chaîne de caractère")

N.B : MySQL n'est pas le seule SGBD utilisable par PHP, ce n'est pas non plus toujours le meilleur choix ... postgreSQL est robuste, open source et lui aussi utilisable par PHP.

quelques généralités sur PHP

  • PHP a été écrit par Ramsus Lerdorf en 1994 pour gérer sa page perso
  • PHP est actuellement stable en version 5 et la version 6 est prévu pour fin 2008
  • PHP est open source et vient du monde UNIX, il est toutefois possible de l'installer sous windows (wamp, EasyPHP, xampp)
  • PHP est supporté par de nombreux serveur http comme IIS, Netscape, Roxen, IPlanet
  • Damien Seguy a été un pionnier français dans la promotion du langage PHP (nexen.net)
  • PHP est écrit en de C et historiquement basé sur des bibliothèques Perl
  • Le langage proprement dit est Zend Engine, PHP (Hypertext Preprocessor) est la version embedded de Zend Engine
  • Les pages php ont par convention l'extension .php, elle peuvent avoir pour extension .php4, .php5 si plusieurs version de PHP cohabitent sur le même serveur ... PHP 4 n'est plus maintenu depuis fin 2007
  • PHP est un composant de la plateforme d'hébergement standard LAMP (Linux Apache MySQL PHP)
  • la doc officielle en français

statistiques d'utilisation