Avant Propos :
Ces pages sont un mirroir des travaux entrepris dans le cadre de ma formation de développeur/Intégrateur de systèmes ouverts et Internet. Nous avons "bricolé" un site afin d'y exercer nos talents.
Descriptif Php
Avant de vous précipiter à lire tout ce baratin, aller jeter un
oeil sur la page de liens consacré exclusivement à Php.
Sacré de monde libre !
Bon, Php est un langage interprété
(langage de script)gratuit issu du monde OpenSource,
dit le monde libre. Ce logiciel a pour rival CGI et
ASP de mes chers et tendres amis de microspot. Le code
s'exécute du coté du serveur Http contrairement à Javascript qui ne réalise ses prouesses que chez le Client (browser ou navigateur).
Qui dit exécution sur le serveur, dit un serveur Http. Php
s'intègre à la plupart des serveurs Http que ce soit IIS ou Apache (début 2001, Apache représentait 70% des serveurs installés dans le
monde contre 20 % pour IIS, le soit disant concurrent
de Microspot). Bien sûr, Apache est lui aussi adepte du monde libre. Pour
tester votre code avant de le balancer chez votre hébergeur, vous devez
installer un serveur Http sur votre machine locale.
Normalement, si on respecte la logique (on se demande laquelle), vous devriez
disposer d'un Linux pour installer votre serveur
Apache et Php. Votre chaîne sera ainsi complètement free. Bon, comme même les
gens du monde libre sont aussi intelligents, ils ont offert aux malheureux
utilisateurs de windoz une version de leur beau serveur Apache. Pour les adeptes du mac,
je ne sais pas s'il existe une version d'Apache. Dans
le cadre d'un site professionnel, il est déconseiller d'utiliser ce genre de
mélange. Comme nous ne cherchons qu'à tester notre code Php, cette solution sera
bien suffisante.
Tout ça est bien gentil mais si je veux faire du "vrai" site
dynamique (bonne question philosophique : Qu'est ce qu 'un site dynamique ? un
site où les pages sont générées à la volée par le serveur où simplement dans le
cas d'une base de données ?). En général, pour beaucoup, il faut avoir une base
de données pour que le site soit dynamique. Qu'a cela ne tienne, Php dispose d'interfaces (pas à confondre avec celle de Java) avec la plupart des base de données dont Oracle, Sybase. Bien sûr, comme
tout est prévu dans le monde libre, il y a une base de données dénommée MySql qui est gratuite (à priori
c'est payant sous Windoz ou en version limitée) avec qui Php est parfaitement
interfacé.
Comme nous sommes chanceux, notre hébergeur Free a fait le choix des technologies gratuites en nous
mettant à disposition Php (certes que la version Php3)
et MySql. Nous avons donc tout pour nous amuser avec un
site dynamique.
Bref, vous l'aurez compris, Php, outre sa
gratuité offre bien des avantages :
- La gratuité et la disponibilité du code source (PHP3 est distribué sous
licence GNU GPL, Php4 a un autre type de licence mais toujours ouverte)
- La simplicité d'écriture de scripts
- La possibilité d'inclure le script Php au sein d'une page HTML
- La simplicité d'interfaçage avec des bases de données (de nombreux SGBD
sont supportés, mais le plus utilisé avec ce langage est MySQL).
- L'intégration au sein de nombreux serveurs web (Apache, Microsoft IIS,
...)
Intégration avec Html
Tout comme Javascript, Php est associé aux pages Html par
l'inclusion de balise. Pour des raisons de compatibilité, il existe 4 façons
:
- <?php //blabla ?> C'est la syntaxe la plus employée
- <? //blabla ?>
- <script langage="php"> //blabla</script> Tiens ça ressemble un peu à la
déclaration du Javascript
- <%php //blabla %> ça ressemble à la syntaxe ASP
Le fichier pour être interprété par le serveur doit porter l'extension php3 ou php (pour les serveurs qui
supportent la version Php4).
Chez
Free, vous devez absolument référencer vos fichiers Php par l'extension php3
Interprétation/Exécution du code
Tout comme Javascript ou Html, un script Php est un fichier
texte dont les instructions sont incluses dans du code Html.
Pour écrire votre code Php, il n'existe pas vraiment
d'environnement de développement spécifique, vous devez vous contenter d'un bon
éditeur de texte. Kit-Html est un éditeur Html, Javascript et php (plugins) bien sympa (vous pouvez notamment interfacer son
système d'aide avec la documentation Php ce qui vous permet d'obtenir la
documentation juste avec la pression de F1 sur un mot
clé du langage) mais qui plante de temps en temps. Ultraedit est bien sûr un challenger de taille mais je n'ai
pas trouver encore de plugins Php (je sais que cela existe mais où ?). Ces deux
softs sont bien sûr sur la fameuse compil Ifip.
Enfin, le fichier doit
porter l'extension php ou php3 selon (et pour free alors ?).
Ainsi, lorsqu'un navigateur (le client) désire accéder à une page
dynamique réalisé en php, le scénario suivant se produit :
- le serveur reconnaît qu'il s'agit d'un fichier php et le lit
- Dès que le serveur rencontre une balise indiquant que les lignes suivantes
sont du code php, il "passe" en mode php3, ce qui signifie qu'il les exécute
sans sommation !
- Lorsque le serveur rencontre une instruction, il la transmet à
l'interpréteur
- L'interpréteur exécute l'instruction puis envoie les sorties éventuelles à
l'interpréteur
- A la fin du script, le serveur transmet le résultat au client (le
navigateur)
Gros avantage de ce système :
- le client ne reçoit que le code interprété : impossibilité de voir le code
php car il est automatiquement interprété par le serveur lors de son appel
Mon premier programme en Php
L'exemple de base :
|
<html> <head><title>Exemple</title></head> <body> <h1>Mon
premier programme en php</h1> <?php echo "<h2>koukou le
monde c'est moi le maitre !!</h2>"; ?> </body> </html> |
Le résultat de l'exécution de ce fichier par le serveur est le
suivant :
|
<html> <head><title>Exemple</title></head> <body> <h1>mon
premier programme en php</h1> <h2>koukou le monde c'est moi
le maitre
!!</h2> </body> </html> |
Pour vérifier mes dires, deux méthodes :
- Créer un fichier php3 et copiez le sur votre site (c'est à dire chez
iweb4) avec l'extension php3 et appelez le depuis votre logiciel Client (votre
merveilleux Ie comme dirait un autre Laurent)
- Installer le fameux trio libre Apache/Php/MySql
sur votre machine. Cette solution n'est pas la plus simple quoique maintenant
il existe un logiciel qui installe le tout sous windows (Easyphp) sans votre aide. Ça ne fonctionne pas
toujours parfaitement mais cela a le mérite d'exister. La bonne vieille
méthode de la "mimine" est vraiment très enrichissante et est abordable à
partir du moment où on lit la prose de skakespeare. Si vous rencontrez des
soucis pour assembler les 3 composants, n'hésitez pas à me contacter.
Les variables Php
Quelle que soit le type de la variable, elle doit être précédée
du caractère dollar $. Ainsi, si vous voulez faire
référence à la variable page, vous devez écrire $page. Contrairement au langage C,
Php n'est pas un langage typé, c'est à dire que vous
n'êtes pas obligé de déclarer une variable avant de l'utiliser.
Nom des variables
Le nom des variables doit obligatoirement commencer par une
lettre (peu importe la casse d'ailleurs) . Il peut contenir des lettres,
chiffres et la caractère "_" mais pas le caractère
espace.
Comme vous le savez, Php est sensible à la casse, donc la
variable $page est différente de $Page.
Caractères spéciaux
Un certain nombre de caractère ascii sont
dits spéciaux, c'est à dire qu'ils effectuent des opérations
particulières. Ces caractères commencent par le caractère "\" pour en
faciliter l'utilsation.
| Caractère |
Description |
| \" |
guillemet |
| \\ |
barre oblique inverse (antislash) |
| \r |
retour chariot |
| \n |
retour à la ligne |
| \t |
tabulation |
Déclaration de constantes
La déclaration de constantes se fait par la fonction define(). La syntaxe de cette fonction est la suivante :
define("Nom_de_la_variable", Valeur);
Portée des données
Suivant l'endroit où on déclare une variable, celle-ci pourra
être accessible (visible) de partout dans le code ou bien que dans une portion.
- Lorsque l'on déclare une variable à l'intérieur d'un bloc d'instructions
(entre des accolades), sa portée se confine à l'intérieur du bloc dans lequel
elle est déclarée. Une variable déclarée à l'intérieur d'un bloc
d'instructions (dans une fonction ou une boucle par exemple) aura une portée
limitée à ce seul bloc d'instruction, c'est-à-dire qu'elle est inutilisable
ailleurs, on parle alors de variable locale.
- Lorsqu'une variable est déclarée dans le code même, c'est-à-dire à
l'extérieur de toute fonction ou de tout bloc d'instruction, elle est
accessible de partout dans le code (n'importe quelle fonction du programme
peut faire appel à cette variable). On parle alors de variable globale.
Nota bene : Pour qu'une fonction puisse accéder à une variable
globale, il faut spécifier dans la définition de la fonction que l'on souhaite
utiliser une variable globale avec l'instruction global nom_de_le variable ; afin d'aider l'interpréteur
dans sa tâche. Un petit exemple cause mieux que de grands discours, alors
plongeons dans le code (c'est Patricia qui devrait être contente).
|
<html> <head><title>Exemple variable
globale</title> <?php
$test=1; function AfficheValeurVide() { echo
"résultat de la variable test sans appel à la variable gloable :
$test"; }
function AfficheVraieValeurDeTest() { global
$test; echo "résultat de la variable test avec référence à la variable
globale :$test<br>"; ?>
</head> <body> <h1>Mon deuxième
programme en php</h1> </body> <?php
AfficheValeur Vide(); AfficheVraieValeurDeTest()
?>
</html> |
Ce fichier avec l'extension Php3 donne le résultat ci-dessous
:
|
<html> <head><title>Exemple variable
globale</title> </head> <body> <h1>mon
deuxième programme en php</h1> </body> résultat de la
variable test sans appel à la variable globale : <br> résultat de
la variable test avec référence à la variable globale
:1 </html> |
Comme vous le constater, la fonction AfficheVide() fait appel à une variable $test qui n'est pas définie dans la fonction. Elle affiche en
lieu et place de $test le caractère vide. Par contre, la fonction AfficheVraieValeur() fait référence à la variable globale
$test et affiche normalement la valeur 1.
Structuration des sites et fichiers
Un des premiers intérêts de Php est de faciliter la gestion et
l'organisation de son site et des fichiers. Grâce aux commandes require et include , vous pouvez
intégrer d'autres fichiers. Par exemple, cette page comme les autres de ce
répertoire ont une structure identique. Elles sont composé de trois éléments
distincts chacun correspondant à un fichier:
| fonctionnalités |
nom fichier |
| Barre de navigation (entête) |
header.inc.php3 |
| Texte |
mapage.htm dans
notre exemple |
| Pied de page |
foot.inc.php3 |
Le fichier appelé pour afficher cette page est
affichemapage.php3. Son contenu est le suivant :
|
<?php include
"header.inc.php3"; include "mapage.htm"; include
"foot.inc.php ?>
|
Les noms barbares des fichiers pour l'entête et le pied sont des
"conventions" du monde Php quoique vous trouverez plus souvent footer.inc.php3 à la place de foot.inc.php3.
header.inc.php3
Ce fichier est composé de tout ce que vous trouvez normalement
entre les balises <html> et <body>.
|
<HTML> <HEAD> <TITLE>Iweb4
Site</TITLE> <LINK type=STYLESHEET TYPE="text/css"
HREF="style.css"> <SCRIPT type="text/javascript"
src="navdd.js"></script> <SCRIPT LANGUAGE="JavaScript"
SRC="menu.js"></script> </HEAD> <body
onload="init()"
bgcolor="#F9FDFE"> <br><br><br><br> |
Comme vous ne l'aurez pas manquer de remarquer, ici j'ai inclus
dans ce fichier l'appel à la barre de menu (fonction init()). comme toutes les pages reposent sur le même
découpage, la présentation sera identique. Les scripts javascript
correspondent à la gestion de la barre de menu. Le fichier navdd.js contient le code de la barre et le fichier menu.js à son paramétrage. Les 4 lignes sautées (balise <br>) sont juste là pour éviter de cacher du texte sous
la barre de menu.
phpstructurefichier.htm
ce fichier contient tout simplement le texte "pur" du
document.
foot.inc.php3
ce fichier contient le pied de page, c'est à dire le bandeau
composé des 3 éléments "se plaindre", "retour au sommaire" et "dernière mise à
jour".
|
<br><br> <table summary="pied de page"
width="100%" height="60" border="0"> <tr> <td
width="33%" align="left"><a
href="mailto:xxx@xxxx.fr?Subject=ya_quelquechose_qui_marchepas"><img
SRC="images/message.GIF" width="42" height="33" border="0"
align="absmiddle"><font face=Impact color=#FF3300>Se
plaindre</font></a></td> <td width="33%"
align="center"><font face=Impact color=#666600><a
href="../index.htm" target="_top">retour au
sommaire</a></font></td> <td width="33%"
align="right"><font face=Impact color=#000000>Dernière mise à
jour le
03-03-2001</font></td> </tr> </table> </html> |
Application à une version imprimable
Pour disposer d'une version imprimable (version complète
utilisable en vue d'une impression ou pour les heureux possesseurs de liaisons
haut débit), vous pouvez appliquer la même recette. Exemple avec 4 fichiers
préfixés par mapage.
|
<?php include
"header.inc.php3"; include "mapage1.htm"; include
"mapage2.htm"; include "mapage3.htm"; include
"mapage4.htm"; include "foot.inc.php ?>
|
Bon, vous me direz c'est bien gentil tout çà, mais j'aimerai bien
automatiser un peu la chose ; je ne vais quand même pas créer un fichier php3
pour chaque fichier que je veux afficher. Pour automatiser, il va falloir
apprendre à récupérer le nom du fichier que l'on veut afficher puisque c'est le
seul paramètre qui change.
Récupération des paramètres
Il existe en gros deux moyens de récupérer des valeurs, soit par
l'entremise d'un lien soit avec un formulaire.
Via un lien
Vous savez depuis notre cours Javascript que nous pouvons passer
des variables via une URL. Il suffit de coller à
l'URL le caractère "?" et d'inclure chaque valeur en les
séparant par le caractère "+" (il s'agit d'une
convention !). Ensuite, en javascript, on s'amuse à découper la chaine de
caractère reçue (par exemple, index.htm?page=mapage1)
pour en extraire la chaine mapage1. Imaginez un peu le
travail dans la cas de plusieurs paramètres passés.
Heureusement, Php offre un moyen vraiment facile pour récupérer
les paramètres.
Si un lien pointe sur le fichier index.php3?page_a_afficher=mapage, il suffit de faire
référence à la variable $page-a-afficher dans le fichier
index.php3 pour en connaitre la valeur.
Si on applique cette fonctionnalité à la structure du site, on
peut imaginer la gestion suivante.
J'ai toujours mes 4 fameux fichiers mapagex.htm ainsi que deux
fichiers accueil.htm et erreur.htm. La page accueil.htm
est ma page par defaut et erreur.htm contient un
message d'erreur pour un appel à une page inexistante. J'accède à mes
différents fichiers mapagex via des liens qui ont pour structure index.php3?page=mapagex. Mon fichier index.php3 doit gérer les erreurs (page inexistante par
exemple et l'absence de paramètre).
|
<?php include
"header.inc.php3"; // si page n'est pas definie, alors la page
d'accueil se lance if(!isset($page)){ include "accueil.htm";} //
si la page est definie, alors, on l'inclut ! else{ // on vérifie que
la page existe if(file_exists("$page.htm")){ include
"$page.htm";} // La page demandée est introuvable, le serveur affiche
page d'erreur else{ include "erreur.htm";} } include
"foot.inc.php3"; ?>
|
Le fonctionnement est simple :
- Si la page demandée n'existe pas, on affiche une page d'erreur dont le
corps du texte est présent dans le fichier erreur.htm.
- Si aucune page n'est définie, on affiche la page par défaut, c'est à dire
accueil.htm.
- Enfin, si la page existe, on affiche le contenu du fichier correspondant à
la variable $page.
Notez bien ici que le passage du paramètre page se fait sans le type de fichier. La commande include "$page.htm" peut paraitre un peu particulière. Le fait
de placer des caractères entre les " force
l'interpréteur à exécuter (c'est son boulot d'ailleurs) d'abord cette chaine de
caractère avant de lancer la commande include. Si $page=mapage, la chaine de caractere sera interprétée comme
mapage.htm résultat de l'exécution de $page ("mapage") concaténé à la chaine de caractère ".htm".
Via un formulaire
Gràce au formulaire, nous pouvons envoyer des données au serveur.
Nous avons deux méthodes à notre disposition, à savoir les méthodes GET et POST.
Pour rappel, la méthode GET correspond à un envoi des données codées dans l'URL
alors que la méthode POST correspond à un envoi de données stockées dans le
corps de la requête HTTP.
Prenons la cas d'un formulaire qui transmet juste le nom et le
prénom d'une personne. La code HTML du formulaire ressemble à ceci.
|
<form Method="GET"
Action="affichemonform.php3"> Nom: <input type="text" size="20"
name="nom"><br> Prenom : <input type="text" size="40"
name="prenom"><br> <input type="submit"
value="envoyer"> </form>
|
Le formulaire fait appel au fichier affichemonform.php3 qui sera exécuté à la suite de l'envoi
des données. Pour que notre exemple soit plus complet, il faudrait bien sûr
prévoir dans la page du formulaire un peu de code javascript pour éviter
d'envoyer n'importe quoi ou tout simplement rien du tout.
Lorsqu'on utilise un formulaire avec un fichier Php, toutes les données associées aux champs name lui sont
passées en tant que variable. Chaque donnée est accessible via son nom
(propriété name) précédée du caracctère "$".
Dans notre exemple, affichemonform.ph3
recoit les variables $nom et $prenom qui ont pour contenu respectivement les champs nom et
prenom du formulaire.
Le fichier affichemonform.php3
pourrait ressembler à celui-ci.
|
<html> <head> <title>affichage de
données suite à un
formulaire</title> </head> <body>
<?php if
(($nom=="")||($prenom=="")){ if ($nom=="")print ("pas bien de ne pas
donner son nom<br>\n"); if ($prenom=="")print ("un prenom peut
etre ? Ca serait mieux!!<br>\n");} else{ echo
"<h1>paramètres recupérés</h1><br>\n"; echo
"<h2>nom transmis : $nom</h2>\n"; echo "<h2>prenom
transmis : $prenom</h2>";}
?> <body> </html>
|
Il est vraiment toujours conseiller de vérifier les données
arrivées au niveau du serveur avant de vouloir notamment les intégrer à une base
de données. Vous aurez remarquer l'emploi conjoint de la balise <br> et de la chaine "\n". Cette
derniere va provoquer un passage à la ligne suivante non pas sur le document
mais dans le code html généré. C'est la balise <br> qui elle va provoquer le saut de ligne à
l'écran.
Liens PHP
Ce document est issu d'un tutorial Php3 en francais que vous pouvez trouver à l'adresse suivante tutorial Php.
Vous pouvez contacter son auteur via email à clauer@linux-france.org.
Ressources sur le Web
Comme pour tous les sujets concernant l'informatique, le Web
regorge de ressources disponibles. En particulier, de nombreux tutoriels en
Anglais, des archives de mailing-list, des F.A.Q., etc... Jugez-en par vous
même : Tutoriels Anglais/Français :
Installation, Configuration :
Mailing lists, Forums de News, FAQ :
Exemples de code, Bibliothèques PHP :
FAQ de fr.comp.infosystemes.www.auteurs.php
Il n'en existe pas pour le moment. En rédiger une et la maintenir
est un job de longue haleine. Pour le moment, vous pouvez consulter les archives
maintenues sur un serveur du Loria : http://www.loria.fr/services/news/fr.comp.infosystemes.www.auteurs.php.html
Trouver de l'aide
PHP3 est né pour Web, vit et se développe par le Web : C'est donc
naturellement sur le Web que vous trouverz l'aide nécessaire. Les recettes
magiques pour trouver rapidement la solution à son problème sont toujours les
mêmes :
- Utiliser le moteur de recherche de l'archive de la ML
officielle,
- Consulter les archives de fr.comp.infosystemes.www.auteurs.php
- Poster dans le forum fr.comp.infosystemes.www.auteurs.php (la
fréquentation est en hausse ces derniers temps, depuis que Free propose PHP
sur ses pages)
- Vous inscrire sur la mailing-list
Php3-France
Exemples de sites utilisant PHP3
La liste des sites connus utilisant PHP3 à travers le monde est
maintenue sur le site PHP3. On y
trouve de grands noms comme :
Il existe aussi quelques site Français :
Page générée par lolo.org en 0.4358 seconde
|