FI/1/00

PHP: enfin un langage pour le Web!

herve.lepezennec@epfl.ch, LEMA & Yan Brand, JAST Sàrl

Cet article décrit un langage de programmation utilisé pour les pages Web qui permet d'implémenter tous les mécanismes nécessaires à l'interactivité que vous souhaitez.

Introduction: Les langages de programmation Web

Aujourd'hui tout le monde est capable de faire des pages Web, la plupart du temps avec un éditeur HTML graphique qui permet de réaliser des pages simples. J'entends par simples des pages qui sont construites avec un éditeur et qui sont envoyées au navigateur sous la même forme. Dans ce cas on parle également de pages statiques. Le problème est que cela ne permet pas:

Dans l'autre cas, les pages sont dites dynamiques et sont construites à la volée. C'est à dire qu'il y a un programme qui construit le code HTML en fonction d'un template déjà pré-défini et d'informations issues du résultat d'une requête au serveur. C'est par exemple le cas d'un moteur de recherche: la page du résultat de votre recherche est construite avec les données issues de la base de données et même le bandeau publicitaire est affiché en fonction de votre thème de recherche afin de mieux cibler le client.

Cette introduction à la programmation des pages Web étant faite, se pose maintenant la question comment faire cela? Il faut pour la plupart du temps un langage de programmation et une base de données. Cet article s'intéresse seulement à la partie programmation et en particulier à un langage: PHP.

Quasiment tous les langages de programmation peuvent être utilisés pour le Web: Java, perl, C Shell, visual-Basic, PHP,... Sans rentrer dans des querelles de clochers, on peut cataloguer ces langages suivant plusieurs critères:

L'exécution du script est également différente. On peut définir quatre façons d'introduire et d'exécuter les programmes dans les pages Web:

On peut discuter ensuite longtemps sur les avantages et inconvénients de chaque catégorie: la vitesse d'exécution du programme, la visibilité du code, la sécurité, le suivi des versions...

Personnellement j'apprécie tout particulièrement la technologie à la mode ASP qui permet de garder dans le même fichier le code HTML et la programmation tout en cachant le code. PHP entre dans cette catégorie et est semblable à la technologie ASP de Microsoft mais en étant portable à la fois sur Unix et sur Windows.

Revenons à nos moutons:
Qu'est ce donc que le PHP ?

PHP a été conçu dès le début comme un langage exclusivement dédié à la programmation des pages Web (ce qui est assez rare pour tous les langages cités auparavant). Au départ c'était un simple CGI en Perl puis en C, mais toujours en version SSI.

Son acronyme veut dire: Personal Home Page, mais il peut faire bien plus qu'afficher vos photos de vacances. Son auteur, Rasmus Lerdorf, s'est aussi intéressé en même temps aux interfaces avec les bases de données par l'intermédiaire de formulaires. Ces deux produits (PHP et FI) se sont rejoints par la suite dans la version 3. La version 4 est à présent disponible mais n'apporte pas vraiment de gros changements par rapport à la 3.

C'est pour ces raisons que le langage comporte tout ce dont vous avez besoin pour vos pages Web sans vous encombrer d'une usine à gaz. Par contre la liste des fonctions offertes est impressionnante et un coup d'oeil sur le serveur Web de PHP (http://ch.php.net/ ) vaut mieux que le détail dans cet article. En gros vous pouvez:

Installation et configuration

Vous trouverez sur le site de PHP indiqué ci-dessus les informations et les instructions nécessaires à l'installation de PHP sur votre serveur. PHP est un langage du domaine public. Sachez qu'il se trouve en deux versions: l'une sous la forme d'un exécutable CGI et l'autre comme module pour Apache (le serveur Web le plus répandu). Je vous conseille l'utilisation du module Apache qui est plus efficace et qui exploite tous les avantages de cette liaison étroite avec le serveur.

Le principe de base

Les scripts PHP sont alors directement insérés dans vos fichiers HTML et vous devrez leur donner une autre extension afin que le serveur sache qu'il doit les interpréter avant de les envoyer au navigateur. Généralement les extensions utilisées sont .phtml ou .php3.

La partie script est délimitée par les tags prévus à cet effet: <? ou <?PHP ou encore <SCRIPT LANGUAGE="PHP" et se termine par?> ou simplement >


<?PHP
$addr = getenv("REMOTE_ADDR");
$host=gethostbyaddr($addr);
echo "Hello unknown from $host";
?>

Dans ce premier exemple nous voyons le script entre ces deux tags qui affiche à l'écran«Hello unknown» plus le nom de la machine qui se connecte. Vous pouvez faire l'essai à http://www.jast.ch/demo/ex1.php3 .

Les variables sont précédées d'un $ et n'ont pas besoin d'être déclarées. On trouve tous les types de variables ainsi que les structures de contrôle classiques: for, if-then-else, while, do, switch.

Le reste de PHP est une longue suite de fonctions comme «» ou «» qui sont utilisées ci-dessus. Le mieux est de se reporter au manuel on-line afin de consulter la liste: http:/ /ch.php.net/manual/html/manual.html.

Un exemple détaillé

Cet exemple se trouve à l'adresse suivante: http://www.jast.ch/demo/hello.php3 .

Il permet de demander à l'utilisateur de rentrer quelques renseignements puis d'enregistrer ces renseignements dans un fichier log et de remercier l'utilisateur de son geste. Simple mais le mécanisme ainsi expliqué permet par la suite de s'adapter aux besoins de chacun. L'exemple ne met pas en valeur les possibilités graphiques, réseau et les accès avec les bases de données. Pour cela le mieux est d'aller faire un tour sur les sites que j'indique en fin d'article.

Le principe est d'avoir un seul script pour l'affichage du questionnaire lors de sa première exécution et le traitement des données lors de son deuxième passage après avoir cliqué sur le bouton «».

Explications:

Regardez sur le listing ci-aprèsavec les numéros de lignes sur la gauche afin de mieux se repérer pour les explications.

1.     <?PHP
2.     function display_form() 
3.     {
4.     global $PHP_SELF; ?>
5.     <FORM TARGET="<?php echo $PHP_SELF; ?>" METHOD=GET>
6.     <H1><center> Welcome to the PHP Quizz !!! </center></H1>
7.     Please give your email:  <INPUT TYPE=TEXT NAME="name" SIZE="30"><BR>
8.     And answer to the following questions:
9.     <p><p>
10.     Level of Dev: <INPUT TYPE=RADIO NAME="level" VALUE="beginner" CHECKED>beginner
11.     <INPUT TYPE=RADIO NAME="level" VALUE="medium">medium
12.     <INPUT TYPE=RADIO NAME="level" VALUE="expert">expert
13.     <p>
14.     Favorite Scripting langage:
15.     <INPUT TYPE=CHECKBOX NAME="script[]" VALUE="php">PHP
16.     <INPUT TYPE=CHECKBOX NAME="script[]" VALUE="pl">Perl
17.     <INPUT TYPE=CHECKBOX NAME="script[]" VALUE="asp">ASP
18.     <INPUT TYPE=CHECKBOX NAME="script[]" VALUE="c">C
19.     <INPUT TYPE=CHECKBOX NAME="script[]" VALUE="sh">Shell
20.     <INPUT TYPE=CHECKBOX NAME="script[]" VALUE="java">Java
21.     <INPUT TYPE=CHECKBOX NAME="script[]" VALUE="other" CHECKED>Other
22.     <p>
23.     <INPUT TYPE=HIDDEN NAME="stage" VALUE="results">
24.     <INPUT TYPE=SUBMIT VALUE="Thanks!"> 
25.     </FORM>
26.     <?PHP
27.     }
28.     ?> 

29.     <?PHP
30.     function process_form() {
31.     global $level; 
32.     global $script;
33.     global $name;
34.     $ip = getenv("REMOTE_ADDR");
35.     openlog("Quiz PHP:", 1, 17);
36.     syslog(1, "$name [$ip] gives: $level for $script[0] $script[1] $script[2] $script[3] $script[4] $script[5] $script[6] ");
37.     closelog();
38.     echo "Bye $name ";
39.     echo "and thanks for your participation...";
40.     }
41.     ?> 

42.     <?PHP 
43.     if (empty($stage)) { display_form(); }
44.     else { process_form(); }
45.     ?> 

Le fichier HTML commence directement avec le script PHP [1].

La fonction display_form() construit le formulaire HTML et ce qu'il y a d'intéressant c'est le mécanisme entre les lignes [1] et [4] qui permet l'imbrication entre le code PHP et l'HTML. PHP reconnaît très bien s'il s'agit de code pur HTML et dans ce cas il n'y a pas lieu de mettre des echo ou print à chaque envoi de code HTML. La ligne [5] utilise la variable PHP_SELF qui correspond au nom du script qui est exécuté. Cela permettra de revenir à ce même script lors du clic sur le bouton du questionnaire. Le reste est du pur HTML jusqu'aux lignes [26] à [28] où je ferme la définition de la fonction. Je définis une variable cachée stage afin de mémoriser mon premier passage dans le script [23].

La fonction process_form() utilise les variables de la fonction précédente donc il convient de les définir en global [31], [32] et [33]. Ligne [34] je récupère l'adresse IP de la machine cliente. Lignes [35] à [37] j'ouvre une entrée dans le système de log du serveur afin de stocker les infos.

Enfin les lignes [42] à [45] correspondent à la sélection des deux fonctions par la variable stage.

Pour en savoir plus

Nous utilisons PHP 3.0 au LEMA pour l'intranet du Laboratoire et également à la société Jast au parc scientifique, pour des réalisations d'extranet. Un des gros avantages de ce langage de script qui n'a pas été traité dans cet article est la facilité avec laquelle il gère les bases de données et en particulier MySQL. Ceci pourra faire l'objet d'un autre article s'il y a de la demande...

En attendant voici une liste de sites traitant du PHP sur lesquels vous pourrez trouver des compléments d'information et des exemples:

http://www.php.net/

et son site miroir pour la Suisse:

http://ch.php.net .

http://www.phpindex.com/

http://phpwizard.net/

http://www.weberdev.com/

http://phpclub.unet.ru/

http://www.devshed.com/

Pour ce qui est de la littérature, les éditeurs ont longtemps boudé PHP mais depuis 6 mois il y a eu entre 5 et 10 nouveaux livres.

Personnellement je préfère la documentation on line du www.php.net (HTML ou PDF) qui est très bien faite et complète. Les sites ci-dessus offrent suffisamment de matière pour nous rassasier.


retour au sommaire du Flash informatique du mois de janvier 2000
retour à la page principale des Flash informatique
Vos commentaires
© FI-1-00 du 25 janvier 2000