25. PHP/FI Langage de script côté serveur, avec HTML intégré, pour PostgreSQL

Contenu de cette section

Outil d'Interfaçage WWW http://www.vex.net/php

Pour les questions envoyer un courrier électronique à : [email protected]

On trouvera ci-dessous un extrait de la page d'accueil de PHP/FI :-

PHP/FI est un langage de script côté serveur, avec langage HTML intégré. Il vous permet d'écrire des scripts simples directement dans vos fichiers .HTML à la manière JavaScript, sauf que, à la différence de JavaScript, PHP/FI n'est pas dépendant du butineur utilisé. JavaScript est un langage, côté client, avec HTML intégré alors que PHP/FI est un langage côté serveur. PHP/FI est similaire, dans son concept, au produit LiveWire Pro pour Netscape. Si vous en avez les moyens, vous utilisez le serveur du commerce Netscape et l'un des systèmes d'exploitation supportés, et vous jetterez probablement un oeil sur LiveWire Pro. Si vous préférez un logiciel libre, évoluant rapidement, qui est disponible avec la totalité de son code source, vous apprécierez probablement PHP/FI.

25.1 Fonctionnalités principales

Support de CGI Standard, FastCGI et du module Apache. Comme programme CGI standard, PHP/FI peut être installé sur n'importe quelle machine Unix sur laquelle tourne n'importe quel serveur web Unix. Avec le support du nouveau standard FastCGI, PHP/FI peut trouver avantage des gains de vitesse apportés par ce mécanisme. Comme module Apache, PHP/FI devient une alternative extrêmement puissante et brillante à la programmation CGI.

25.2 Crédits

* De grandes parties de ce code ont été développées à et pour l'université de Toronto. De grands Mercis à Lee Oattes du Département de Développement des Réseaux à l'université pour ses critiques constructives permanentes.

* Le code de prise en charge de Postgres95 a été écrit par Adam Sussman [email protected]

* d'autres, innombrables, ont participé aux tests et à la mise au point du paquetage.

PHP/FI Version 2.0

25.3 Bref Historique

PHP a commencé sa vie comme simple petite enveloppe cgi écrite en Perl. Je l'ai écrit en un après-midi, dans une période entre deux contrats, alors que j'avais besoin d'un outil rapide pour avoir une idée de la personne qui était en train de lire mon curriculum vitae en ligne. Je n'avais eu l'intention de le voir utiliser en dehors de mon propre usage. Le serveur web sur lequel j'avais mon curriculum vitae était extrêmement surchargé et avait des problèmes constants de création de processus. Je réécris le petit programme Perl en C pour me débarrasser de la surcharge considérable générée par la création d'un processus d'exécution du programme Perl à chaque fois que mon curriculum vitae était consulté.

Par la suite d'autres personnes, sur le même serveur web, prirent connaissance de mon petit programme et me demandèrent s'ils pouvaient l'utiliser. Alors, comme cela devait arriver, ils commencèrent à me demander plus de fonctionnalités. J'ajoutais plus de fonctionnalités et finalement constituais une semi-distribution en y incluant une documentation, une liste de diffusion et une FAQ. Le nom de ce paquetage était "Outils pour une Page d'Accueil Personnelle" (Personal Home Page Tools), nom qui devint plus tard "Kit de Construction de Page d'Accueil Personnelle" (Personal Home Page Construction Kit).

A la même époque, je commençais à m'amuser avec les bases de données et j'écrivis un outil pour inclure facilement des requêtes SQL dans des pages web. C'était fondamentalement un autre petit programme CGI qui analysait les requêtes SQL et facilitait la création de formulaires et de tables basés sur ces requêtes. Cet outil fut appelé FI "Interpréteur de Formulaire" (Form Interpreter).

La version 2.0 PHP/FI est une réécriture complète de ces deux paquetages combinés pour former un simple programme. il a maintenant évolué au point de devenir un simple langage de programmation intégré dans les fichiers HTML. L'acronyme original, PHP, lui est resté. Il n'est plus réellement approprié. PHP/FI est aujourd'hui plus utilisé pour mettre en place des sites web entiers que pour de petites pages d'accueil personnelles. Quel que soit son nom, il élimine le besoin de recourir à de nombreux petits programmes cgi Perl en permettant d'insérer de simples scripts directement dans vos fichiers HTML. Ceci améliore les performances globales de vos pages web puisque la surcharge due au lancement de processus Perl successifs a été éliminée. La gestion de larges sites web a également été facilitée en plaçant tous les composants d'une page web dans un fichier html unique. En incluant le support de différentes bases de données, il devient trivial de développer des pages web mettant en oeuvre des bases de données. Nombreux sont ceux qui trouvent que cette intégration est plus facile à gérer que d'essayer de créer des fichiers HTML et CGI séparés.

Tout au long de cette documentation, toute référence à PHP, FI ou PHP/FI traite de la même chose. La différence entre PHP et FI est seulement conceptuelle. Les deux sont construits à partir de la même distribution du code source. Lorsque je construit le paquetage sans aucun support de connexion d'accès ou de restriction d'accès, je nomme mon binaire FI. Quand je le construit avec ces options, je l'appelle PHP.

25.4 Bon, que puis-je faire avec PHP/FI?

La première chose que vous allez noter, si vous faites tourner une page par l'intermédiaire de PHP/FI, c'est qu'il ajoute un pied de page vous informant du nombre d'accès à votre page (si vous incluez le support des connexions d'accès dans votre binaire). C'est seulement un tout petit exemple de ce que PHP/FI peut faire pour vous. Il joue également le rôle très important d'interpréteur de formulaire cgi, d'où la partie FI de son nom. Par exemple si vous créez un formulaire dans l'une de vos pages web, vous avez besoin de quelque chose pour traiter l'information contenue dans ce formulaire. Même si vous désirez simplement passer l'information à une autre page web, vous aurez besoin d'un programme cgi pour le faire. PHP/FI facilite grandement le processus de prise en charge des données du formulaire pour en faire quelque chose.

25.5 Un simple exemple

Supposons que vous ayez le formulaire :

<FORM ACTION="/cgi-bin/php.cgi/~userid/display.html" METHOD=POST> 
<INPUT TYPE="text" name="name"> 
<INPUT TYPE="text" name="age"> 
<INPUT TYPE="submit"> 
<FORM> 

Votre fichier display.html doit contenir quelque chose du genre :

< ?echo "Hi $ name, vous avez $ âge ans!

" >

C'est aussi simple que cela! PHP/FI crée automatiquement une variable pour chaque champ de saisie de votre formulaire. Vous pouvez alors utiliser ces variables dans le fichier ACTION URL.

L'étape suivante, après avoir vu comment utiliser ces variables, est de commencer à jouer avec quelques balises de gestion du déroulement logique de vos pages. Par exemple, si vous voulez afficher différents messages dépendants de des informations entrées par l'utilisateur, vous pouvez utiliser la logique si/alors (if/else). Dans notre exemple ci-dessus, on peut afficher différentes choses dépendant de l'âge entré par l'utilisateur en modifiant notre fichier display.html en :

<?
    if($age>50);
        echo "Hi $name, vous etes un fossile!<p>";
    elseif($age>30);
        echo "Hi $name, vous etes tres vieux!<p>";
    else;
        echo "Hi $name.";
    endif;
>

PHP/FI fournit un langage de script très puissant qui peut faire beaucoup plus que ce qui est exposé dans l'exemple ci-dessus. Regardez la section sur le langage de Script PHP/FI pour des informations complémentaires.

Vous pouvez également utiliser PHP/FI pour configurer qui a le droit d'accéder à vos pages. Ceci est effectué en utilisant l'écran de configuration inclus. Par son intermédiaire , vous pourrez, par exemple, spécifier que seulement les gens appartenant à un certain domaine seront autorisés à voir vos pages, vous pouvez également créer une règle protégeant certaines pages par un mot de passe. Voir la section Contrôle d'Accès pour plus de détails.

PHP/FI est également capable de recevoir des fichiers téléchargés par n'importe quel butineur conforme à la norme RFC-1867. Cette fonctionnalité permet aux gens de télécharger également des fichiers de texte ou binaire. Avec le contrôle de PHP/FI et les fonctions logiques, vous disposez d'un contrôle total sur qui est autorisé à télécharger un fichier et sur ce que l'on peut faire de ce fichier une fois téléchargé. Voir la section Téléchargement de fichier pour de plus amples détails.

PHP/FI supporte le paquetage Postgres95. Il supporte les requêtes SQL incluses dans vos fichiers .HTML. Consultez la section Support Postgres95 pour plus d'informations.

PHP/FI supporte également le paquetage du SGBD mysql. Il supporte les requêtes SQL incluses dans vos fichiers .HTML. Consultez la section Support mysql pour plus d'informations.

25.6 Redirection CGI

Notes Apache 1.0.x

Une bonne manière de faire tourner PHP/FI est d'utiliser un module de redirection cgi avec le serveur Apache. Veuillez noter que vous n'avez pas à vous soucier des modules de redirection si vous utilisez la version module Apache de PHP/FI. Deux de ces modules de redirection sont disponibles. L'un est développé par Dave Andersen [email protected] et est disponible à ftp://ftp.aros.net/pub/util/apache/mod_cgi_redirect.c et l'autre arrive inclus avec Apache et est appelé mod_actions.c. Ces deux modules sont extrêmement similaires. Ils diffèrent très légèrement dans leur utilisation. Les deux ont été testés et fonctionnent avec PHP/FI.

Mise en garde importante: à la date de cette rédaction (Apr.20/96), la version courante officielle (1.0.5) a de sévères limitations qui empêchent les requêtes de redirection cgi d'avoir des données ??? post-method data associées. J'ai étudié ce problèmes et l'ai résolu dans ma version d'Apache. Il y a un colmatage officiel dans les Fichiers Archives de la Page d'Accueil.

Une autre mise en garde particulièrement importante au sujet d'Apache 1.0.x est qu'il n'aligne pas correctement les types doubles sur la plupart des architectures. Vous découvrirez d'étranges erreurs de bus provenant de votre httpd en utilisant mod_php. Comme solution, soit vous passez à la version Apache 1.1, soit vous éditez le fichier source Apache alloc.c. Dans ce fichier vous trouverez le morceau de code suivant :

union align { /* Types which are likely to have the longest RELEVANT alignment * restrictions... we don't do much with doubles. */

char *cp; void (*f)(); long l; FILE *fp; };

Il vous faudra ajouter un type double à ce source et recompiler votre serveur Apache. Le morceau de code correct est :

union align { /* Types which are likely to have the longest RELEVANT alignment * restrictions... we don't do much with doubles. */

char *cp; void (*f)(); long l; FILE *fp; double d; };

Regardez dans la documentation Apache sur la manière d'ajouter un module. En général vous ajoutez le nom de module dans un fichier appelé Configuration. La ligne à ajouter si vous voulez utiliser le module mod_actions est :

Module action_module mod_actions.o

Si vous envisagez d'utiliser le module mod_cgi_redirect.c ajoutez cette ligne :

Module cgi_redirect_module mod_cgi_redirect.o

Puis compilez votre httpd et installez-le. Pour configurer la redirection cgi il vous faudra soit créer un nouveau type mime dans votre fichier mime.types soit utiliser la commande AddType dans votre fichier srm.conf pour ajouter le type mime. Le type mime à ajouter doit être quelque chose comme :

application/x-httpd-php phtml

Si vous vous apprêtez à utiliser le module mod_actions.c il vous faudra ajouter la ligne suivante dans votre fichier srm.conf:

Action application/x-httpd-php /cgi-bin/php.cgi

Si vous vous apprêtez à utiliser mod_cgi_redirect.c vous devrez ajouter cette ligne à srm.conf :

CgiRedirect application/x-httpd-php /cgi-bin/php.cgi

N'essayez pas d'utiliser en même temps mod_actions.c et mod_cgi_redirect.c .

Une fois que vous avez l'un de ces modules de redirection cgi installé et configuré correctement, vous pouvez spécifier que vous voulez qu'un fichier soit filtré par php/fi en mettant simplement l'extension .phtml au fichier. De plus, si vous ajoutez index.phtml à votre ligne de configuration DirectoryIndex dans votre fichier srm.conf alors la page de plus haut niveau d'un répertoire sera automatiquement filtrée par php si vous appelez votre fichier index index.phtml.

HTTPD Netscape

Vous pouvez rediriger automatiquement les requêtes pour des fichiers ayant une extension donnée de façon à ce qu'ils soient pris en compte par PHP/FI en utilisant le module de Redirection du Serveur CGI Netscape. Ce module est disponible dans le Fichier Archives de la Page d'Accueil de the PHP/FI. Le fichier LIZSEZ_MOI (README) dans le paquetage explique clairement comment le configurer pour l'utiliser avec PHP/FI.

HTTPD NCSA

Actuellement NCSA ne supporte pas les modules, donc, pour effectuer une redirection cgi avec ce serveur, il vous faudra modifier le code source de votre serveur. Un colmatage pour faire cela avec NCSA 1.5 est disponible dans le fichier archives de PHP/FI.

25.7 Lancer PHP/FI à partir de la ligne de commande

Si vous fabriquez la version CGI de PHP/FI, vous pouvez l'utiliser simplement à partir de la ligne de commande, en tapant: php.cgi nom_de_fichier où nom_de_fichier est le fichier que vous voulez filtrer. Vous pouvez également créer des scripts PHP/FI autonomes en faisant ressembler la première ligne de votre script à quelque chose comme :

    #!/usr/local/bin/php.cgi -q

L'option "-q" supprime l'impression des en-têtes HTTP. Vous pouvez vous passer de cette option si vous le désirez.


Chapitre suivant, Chapitre Précédent

Table des matières de ce chapitre, Table des matières générale

Début du document, Début de ce chapitre