Lolo Voyageur Web (lolo.org)

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 :

  1. Utiliser le moteur de recherche de l'archive de la ML officielle,
  2. Consulter les archives de fr.comp.infosystemes.www.auteurs.php
  3. 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)
  4. 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 :



mailVos remarquesRetour au sommaire

Dernière mise à jour le 05-04-2005

Page générée par lolo.org en 0.4358 seconde