Vous avez un site web (c.f. l’indispensable article abordant le sujet, sinon ce n’est pas la peine qu’on se décarcasse). Oui mais voilà : tous vos amis en ligne se moquent de vous car il n’est qu’en HTML, sans aucun script pourri de votre propre cru, et tout parasité par les Pop-up de pub, imposés par votre hébergeur . « PHP c’est le contenu dynamique de la vraie interactivité ! » gloussent-ils. « Avec PHP, t’es vraiment libre, et si tu ajoutes les formidables possibilités d’une base de données MySQL, wahou ! ». On vous a déjà fait le coup avec Linux qui allait vous libérer des OS fascistes du nord ouest des Etats-Unis. Cependant, vous êtes toujours sous Windows après avoir joué au ball-trap avec la RedHat 5.2 fr. Comment regagner l’estime de vos amis et enfin participer à la vague PHP ? Quelques infos rudimentaires pour une brève présentation.
La petite histoire
Pour la genèse du PHP, on peut se référer au manuel en ligne chez Nexen. En résumé : le créateur du langage de script PHP est Rasmus Lerdorf, qui au début de 1995 distribua une version publique, connue sous le nom de Personnal Homepage Tool, pour créer des pages web dynamiques, c’est-à-dire avec un ensemble d’utilitaires simples (livre d’or, compteur, forum, formulaires, etc.).
Par la suite, cette version s’est développée, de telle sorte que PHP est compris à présent comme abréviation de Préprocesseur Hypertexte.
Définitions
Le PHP (Hypertext Preprocessor) est un langage de script, qui fonctionne côté serveur. Très bien vous direz-vous, mais qu’est-ce qu’un script, un langage de script, et qu’est-ce qu’un serveur ?
Un script est une suite d’instructions simples, peu structurées, permettant d’automatiser certaines tâches.
Un langage de script
est langage permettant de réaliser des programmes généralement petits et interprétés. L’intérêt est de faire simple, rapide, utilitaire
Un serveur est un ordinateur détenant des ressources particulières et qu’il met à la disposition d’autres ordinateurs par l’intermédiaire d’un réseau.
Le terme « PHP » va donc pouvoir qualifier aussi bien un script, qu’un langage de script, que le programme qui interprète les scripts écrits dans ce langage.
Interpréteur et compilateur
Le script PHP, (i.e. la suite d’instructions), est interprété dans le langage de script PHP, cela veut dire ici qu’il n’est pas compilé. Oui, mais qu’est-ce que la compilation ?
Compiler, c’est passer du code source d’un programme à un exécutable binaire à l’aide du logiciel approprié (le compilateur), afin de traduire en langage machine les lignes de code.
L’exécutable est alors un programme en code binaire directement compréhensible par le processeur, ou fichier contenant des commandes entraînant des opérations de la part du système. Mais il n’est plus directement compréhensible par un humain, sauf mutant de la troisième génération capable de lire des lignes de code en binaire.
Les serveurs WEB sur lesquels le module PHP est installé permettent alors l’exécution de scripts PHP, puisque ces derniers fonctionnent du côté serveur (voir la définition). Ce qui n’est pas le cas de tous les serveurs et notamment de tous les hébergeurs de pages Web. Avant de télécharger des scripts pour ses pages web en ligne, il faut donc savoir si votre hébergeur offre le PHP.
Le script tel qu’en lui-même
Un script PHP quant à lui, est une suite d’instructions qui sont intégrées au code HTML. Exemple de script PHP :
<html>
<head>
<title>Exemple de script PHP</title>
</head>
<body>
<?php echo "Bonjour, je suis un script PHP!"; ?>
</body>
</html>
L’exemple n’est pas très convaincant, puiqu’on pourrait écrire directement dans le code HTML la phrase : « Bonjour, je suis un script PHP ! ». Mais il est volontairement simple afin d’illustrer la mixité du langage de script et du code HTML.
La fonction echo() permet d’afficher les chaînes de caractères dans le document envoyé par le serveur, et qui sera lu par le navigateur ; dans l’exemple : « Bonjour, je suis un script PHP ! ». Ce qui n’est pas rien.
Cependant pour comprendre l’intérêt des scripts, il faut ici retracer vraiment très brièvement l’histoire du Web en tant que plate-forme de communication interactive. Qu’est-ce qu’un Web dynamique et interactif ?
Web dynamique, youpi !
Les premières pages du Web étaient statiques et basées sur du code HTML simple. « Statique » signifie que pour changer le contenu affiché d’une page, il fallait modifier le code source et enregistrer celui-ci puis remplacer le document sur le serveur. Démarche pénible, lourde et donc limitée.
De plus, la communication entre le serveur et le visiteur qui consulte la page avec son navigateur n’était pas interactive, c’est-à-dire que le visiteur ne pouvait interroger, ni transmettre d’informations, en bref interagir avec ce qu’il consulte. (On pouvait donc à l’époque raconter n’importe quoi sur la future interactivité du Web).
Au contraire d’un forum actuel en ligne sur une page web. Par exemple : je lis un message, et décide d’y répondre, mon post apparaît sur la page. Ou d’un moteur de recherches, dans lequel je tape une requête, et ce dernier bien gentiment affiche les résultats de sa base de données. Ou d’un site que je visite et qui me propose de voter pour qu’il figure en tête de topgrosboeufsonline.com.
Common Gateway Interface
D’où l’idée de développer un standard permettant d’exécuter des programmes sur les serveurs Web, c’est-à-dire d’établir une plate-forme de communication standardisée entre les stations de travail des clients qui consultent et le serveur lui-même. Voilà le CGI, pour Common Gateway Interface.
Le langage de programmation qui s’est imposé pour écrire des programmes CGI est le Perl, pour Practical Extraction and Report Language. Langage Unix créé par Larry Wall en 1986.
un schéma rustique pour visualiser :
Commentons là encore de manière très schématique, sans entrer dans le détail des protocoles et des opérations, qui sont ici simplifiés à l’extrême. Pour une présentation plus fouillée du CGI, voir le dossier de CCM.
1. Le client (i.e. l’internaute avec son navigateur) adresse humblement une requête au serveur Web. Par exemple, il clique sur une commande (submit, rechercher, etc.) d’un petit moteur de recherches, après avoir rempli la fenêtre de saisie, avec « sex with ornitho ».
2. Le code de la page consultée serait le suivant :
<html>
<body>
<form method=put action=/cgi-bin/rechercher.pl>
<pre>
<imput type=texte name=requete>
<input type=submit>
</pre>
</form>
</body>
</html>
Dans ce cas, le serveur va lancer le fichier programme « rechercher.pl » écrit en Perl (extension en .pl), avec l’interpréteur Perl, puisque le Perl est un langage interprété. Ce qui suppose bien-sûr que l’interpréteur Perl soit installé sur le serveur.
3. Le programme CGI exécute les commandes, par exemple « extraire » telles données d’une base. (En gros, le programme lit les saisies et les compare aux enregistrements de la base de données).
4. Le programme CGI génère un message de réussite avec le lien trouvé, en cas de résultat positif.
5. Il le renvoie au serveur Web.
6, 7. Le résultat est transmis au client au format HTML. L’internaute le voit donc apparaître dans la fenêtre de son navigateur, par exemple « Résultats : http://www.sexwithornitho.com 100% ».
Le PHP
A la différence d’autres scripts CGI écrits dans d’autres langages tels que le Perl ou le C, le script PHP est inclus à l’intérieur de la page afin de réaliser une action précise. On l’a vu avec l’exemple simple du « Bonjour je suis un script PHP ! ». Ainsi, les lignes de code PHP sont incluses entre une balise de début et une balise de fin ( par exemple :
<?php...?>
).
Ce qui n’est pas le cas dans l’exemple de programme CGI plus haut. En effet, on a vu que dans le code HTML indiqué c’est le nom du programme en Perl et son répertoire (/cgi-bin) qui figurent en vue d’une exécution grâce à l’interpréteur Perl installé sur le serveur. Le code en Perl, lui, se trouve dans le fichier « rechercher.pl ».
PHP mêle donc les données et la programmation, ce qui permet réellement d’écrire des scripts de façon simple et rapide. Ce qui ne veut pas dire que tous les scripts en PHP doivent nécessairement figurer in extenso dans chaque page. En effet, quand le code doit être réutilisé de manière régulière dans plusieurs scripts différents, ou dans différentes pages, on ne va pas réécrire à chaque fois ce code.
Le rôle d’un script est d’automatiser certaines tâches. Dans ce cas, on écrit ce code dans un fichier externe (nom_du_fichier.inc), qu’on appelle dans le script principal si besoin grâce à la fonction include (include "nom_du_fichier.inc" ;).
Ce qui distingue le PHP des langages de script comme le Javascript est que le code est exécuté sur le serveur et non par la machine cliente (qui consulte ce qui est hébergé par le serveur). Le client ne reçoit que le résultat du script, sans aucun moyen d’avoir accès au code qui a produit ce résultat (sauf si on le lui donne bien-sûr).
En résumé, le serveur reconnaît le script à la terminaison .php du document et l’interprète grâce au programme PHP, avant de le renvoyer au client.
Précisons néanmoins pour les puristes. Le programme PHP sur le serveur (ce qui interprète les scripts PHP) ne fonctionne pas nécessairement en CGI, mais peut être ajouté en mémoire en tant que bout d’exécutable supplémentaire, à la suite du code du serveur Web. De cette façon, à chaque fois qu’il y a une requête sur un script, le serveur Web n’a plus qu’à appeler PHP comme il appellerait une de ses propres sous-routines, et non en exécutant un programme externe. Mais revenons aux caractéristiques générales.
Le langage PHP possède les même fonctionnalités que les autres langages permettant d’écrire des scripts CGI, comme par exemple : collecter des données, générer dynamiquement des pages web ou bien envoyer et recevoir en douce des cookies.
De plus PHP est gratuit, et c’est aussi un logiciel libre, c’est-à-dire que son code source est accessible, modifiable, et on peut distribuer librement ces modifications.
Du côté du Serveur
On a vu que le PHP est un langage de script côté serveur. Cela veut dire que si vous voulez tester vos scripts en interne, sur votre ordinateur non connecté au Réseau, à l’aide de votre navigateur, il vous faut installer :
1. le programme PHP qui va interpréter vos scripts.
2. un serveur HTTP, c’est-à-dire le logiciel, pas la salle pleine de machines avec des techniciens qui mangent des pizzas.
En effet nous avons vu qu’avec le seul navigateur, les scripts PHP ne sont pas interprétés. Ce qui est gênant pour voir le rendu de vos pages et si vos scripts fonctionnent, c’est-à-dire par exemple ne comportent pas d’erreurs.
Plutôt que d’utiliser le FTP (File Transfer Protocol) pour envoyer vos fichiers sur le serveur de votre hébergeur afin de les consulter en ligne, démarche lourde, répétitive, coûteuse, le plus simple est d’installer un serveur local sur votre ordinateur.
« Local » en ceci que votre ordinateur n’est pas ici destiné à devenir un véritable serveur Web, connecté au Réseau avec certaines de vos données stockées sur le disque consultables par n’importe quel client. Encore une fois, il s’agit juste d’installer les programmes nécessaires pour tester vos scripts.
comment installer un serveur local ?
Vous pouvez télécharger séparément Apache, PHP, MySQL, et tout configurer à la main. Mais ne le cachons pas, c’est relativement compliqué pour un débutant incapable de fabriquer une station Unix avec un trombone, un élastique et deux roudoudous.
Il y a heureusement beaucoup plus simple, car dans le monde du Libre, les bonnes volontés ne manquent pas, ouf ! Prenons l’exemple d’EasyPHP pour un environnement Windows.
EasyPHP, est un package qui regroupe Apache, PHP et MySQL.
Apache est un serveur HTTP. C’est aussi un logiciel libre. Rappelons que le HTTP (HyperText Transfer Protocol) est comme son nom l’indique un protocole de transmission dédié aux clients et aux serveurs du web. Un serveur web est donc un logiciel permettant de rendre accessibles à de nombreux ordinateurs (les clients) des pages web stockées sur le disque.
MySQL est lui aussi un logiciel libre, un SGBDR (un Système de Gestion de Bases de Données Relationnel). Les données sont organisées en fonction de leur utilisation (données fixes dans une table, données variables dans une autre, etc.).
L’installation vous sera familière : lancez l’exécutable easyphp1-4setup.exe et laissez le programme avec les paramètres par défaut (disque C :, répertoire \EasyPHP\), sauf si vous cherchez les ennuis, ou à faire le malin ; mais après, inutile de venir pourrir le forum ci-dessous.
Deux icones vont s’ajouter sur votre bureau : une petite plume rose pour Apache, et un simple, voire sobre, My SQL pour MySQL (les SGBDR sont en effet moins portés sur les parures de music-hall). Lancez évidemment Apache (et MySQL si besoin) avant de tester vos scripts.
Vous devrez placer vos documents avec du code PHP dans le sous-répertoire \www\. Sur le disque dur, l’adresse du document sera : "C :\EasyPHP\www\mon_fichier.php", alors que sous le navigateur elle sera : "http://localhost/mon_fichier.php". Magie du serveur local.
Pour d’autres explications plus détaillées sur l’installation et la configuration voir le site CCM. Pour Linux : phpmylinux.
avec quoi j’écris mes scripts ?
Entre nous ce n’est pas d’un intérêt primordial, et il faudrait d’ailleurs arrêter de paniquer pour si peu ; et même de s’énerver en collant de grandes claques à votre micro (préférez votre animal domestique pour un tel traitement). Vous pouvez très bien utiliser un éditeur de texte simple, mais il est vrai qu’on se prive ainsi de la joie de télécharger un nouveau quelque chose.
Signalons donc un éditeur spécialement dédié et donc très pratique (gestion des fichiers, visualisation du résultats, etc.), le freeware PHP Editor, que l’on peut télécharger, sur le site de Jérôme Saynes.
Si vous écrivez vos scripts sous un logiciel de création de pages HTML, il faut que vos fichiers contenant du code PHP soient enregistrés avec l’extension .php (ou .php3 ou .php4 suivant la version de PHP utilisée), ce que ne font pas toujours de tels logiciels. Faites également attention à certains éditeurs qui laissent des instructions de formatage dans le document, ce qui rend le code inutilisable.
Quelques liens pour finir
Dans les myriades de sites en php qui causent du PHP, on pourra consulter avec profit les suivants (qui nous ont servi à rédiger cet article) :
EasyPHP
PHPinfo
Manuel officiel PHP4
CCM
The PHP Group
PHPMestre
Un bref tutoriel PHP3