PHP |
![]() |
Php est un langage de programmation web, permettant de générer "au vol" des pages web personnalisées. L'on parle de pages web dynamiques, par opposition aux pages "html" qualifiées de pages web statiques, identiques à chaque accès. Sur le web, 25% des pages sont dynamiques, le langage PHP est un des plus utilisés dans leur développement. Il est devenu un standard de fait et présente de nombreuses qualités : rapidité du développement et du temps de réponse du serveur, sécurité, compatibilité maximale avec toutes les plateformes, gratuité, exhaustivité, simplicité, une documentation accessible en français, de très nombreux scripts disponibles, etc. PHP est un langage procédural disposant des fonctionnalités du modèle objet complètes. En raison de la richesse de sa bibliothèque, on désigne parfois PHP comme une plate-forme plus qu'un simple langage.
L'un des grands attraits de PHP est sa courbe d'apprentissage
presque plate. Il suffit à un programmeur d'une journée, avec
la seule documentation, pour se mettre le pied à l'étrier. Et
un non programmeur pourra maîtriser les opérations de bases. Pourtant,
il est possible de maitriser les sockets en PHP, ou de faire des opérations
complexes comme des aggregations d'objets, ou implanter des algorithmes génétiques
en PHP. Il est possible aussi de l'utiliser comme langage de scripts, pour orchestrer
simplement différentes librairies et programmes, dans un langage robuste
et universel.
Damien Seguy
En septembre 2008 PHP était présent sur 34% des sites Web dans
le monde, PHP est la technologie la plus utilisée sur le net. (source
: Nexen)
Php est un langage de script côté serveur, c'est à dire que les programmes php s'exécutent sur le serveur http de pages web. Ils générent alors des programmes html, programmes que le serveur envoie au butineur sur la machine client. Ces programmes html indiquent le contenu à afficher, textes et images, ainsi que la forme, l'aspect que doit prendre la page web affichée sur l'écran. L'on parle alors de "pages dynamiques", puisque les pages sont générées au vol, personnalisés à chaque appel. Cette technique permet de présenter sur des pages web le résultat "temps réel" de requêtes aux bases de données.
Pourquoi utiliser php ?
L'interprète php est activé par le serveur de pages web
pour les pages comportant l'extension .php
-> nos scripts php devront comporter ce suffixe .php
Le protocole http du web fonctionne sur un modèle client-serveur
:
|
|||||||||||||||
Le serveur web agit comme un serveur de fichiers, où
les fichiers contiennent des programmes html, ainsi que des images, des documents de tous formats.
Dans le cas de php, le fichier contient un programme en langage php, qui sera interprété
pour générer finalement un programme html :
|
|||||||||||||||||||||
Quand le serveur php reçoit le contenu du fichier nom.php, il
le parcourt, et crée un nouveau fichier contenant du code html :.
-
Quand il rencontre du texte qui n'est pas du php, il estime qu'il s'agit donc de
code statique html, il recopie alors simplement ce texte dans le nouveau fichier.
-
S'il rencontre du code php, il l'exécute, ce qui provoque la génération
de code html mis dans le nouveau fichier.
Puis le nouveau fichier est rendu
au serveur http de pages web (Apache, 85% des serveurs) qui l'envoie au demandeur.
Le langage html permet de décrire les pages web. Il est généralement
masqué par les logiciels wysiwyg de création de pages, comme Nvu
ou DreamWeaver, cependant pour programmer en php, nous allons avoir besoin
de le retoucher. Voici un exemple
de page web où l'affichage
L'espace
était empli de grasses rumeurs bleues
et rouges.
est provoqué par le
code html sous-jacent :
<font size="6">L</font>'espace
était empli de
<b>grasses</b> rumeurs
<font color="blue">bleues</font>
et <font color="red">rouges</font>.
La structure générale
d'un programme html est la suivante :
<html>
<head>
<title>Titre du document</title>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF"
text="#000000">
Corps du document : instructions html
</body>
</html>
Nous utiliserons fréquement les balises html, il nous faut donc en connaître quelques unes :
| <font...>...</font> pour définir
la typographie d'un texte <b>...</b> pour mettre en gras un texte <br> saut à la ligne <table>...</table> définition d'un tableau <tr>...</tr> définition d'une ligne dans un tableau <td>...</td> définition d'une colonne dans une ligne d'un tableau <div class="style">...</div> définition d'un bloc auquel s'applique un style <span class="style">...</span> définition d'une section à laquelle s'applique un style etc. |
Un programme php, compris entre les délimiteurs <?php et ?>
est un séquence d'instructions permetant de générer du code html. Mais alors il faut vraiment connaître le langage html ? Non...
En pratique pour écrire du code html, sans connaître à la perfection html, nous utiliserons
un générateur, éditeur wysiwyg (Kompozer) pour préparer
le code qui sera ensuite recopié dans nos scripts.
De même, plus tard, pour mettre au point nos requêtes d'accès aux bases de données, sans
être pour autant des experts du langage sql, nous utiliserons un générateur, phpMyAdmin.
Un programme html a pour structure générale :
<html> <head> <title>titre de la page</title>
</head>
<body>
. . . code html ou php
</body>
</html>
Le code php s'insère dans le code html, encadré par les balises <?php et ?> :
<?php code php ?>
Voici un court exemple de code php :
<? php
if (!$event0) {
echo "<font size=2>Vous
devez indiquer une adresse e-mail <b>valide</b></font><br>";
}
else if (!$event1) {
echo "<font size=2>Vous
n'avez rien mis dans le corps de votre message !!!<br>Essayez encore une
fois</font><br>";
} // l'exécution se poursuit normalement s'il n'y a pas d'erreur de saisie
?>
- Chaque instruction
se termine par un point-virgule.
- Les commentaires sont mis à la sauce Java : /* */ ou //
Explication : Si la variable booléenne $event0 (toutes les varaibales
commencent par le signe $) a la valeur faux, le script génère
le code html ci-dessous :
<font size=2>Vous
devez indiquer une adresse e-mail <b>valide</b></font><br>
et ce code html provoque l'affichage à l'écran :
Vous devez indiquer une adresse e-mail valide
L'instruction echo permet d'envoyer dans
le code html généré une chaîne de caractères
(délimitée par des guillemets -ou des apostrophes-) ou la valeur d'une expression.
Sa syntaxe est la suivante :
echo expression ;
L'expression peut être une chaîne de caractères ou bien
une expression que l'interpréte évalue
echo "chaîne de caractères"
;
echo 6*7 ;
Dans l'exemple (3 paragraphes ci dessus),
if (!$event0) {
echo "<font size=+2>Vous
devez indiquer une adresse e-mail <b>valide</b></font><br>";
}
le premier cas conditionnel génére le texte Vous devez indiquer
une adresse e-mail valide, le mot valide étant en gras (balises html
<b></b>) et le texte est en taille réduite de niveau 2 (balisse html
<font></font>). Le texte est suivi d'un retour à la ligne (balise html
<br>)
La chaîne de caractères suivant echo est délimitée
par des guillemets doubles. Un guillemets double appartenant à la
chaîne provoquerait une fin de chaîne. C'est la raison pour laquelle
les guillemets doubles appartenant à la chaîne doivent être
backslashés, c'est à dire précédés de \ : "il est urgent de \"procrastiner\""
Il en est de même pour tous les caractères spéciaux, qui
doivent être précédés d'un backslash :
\" guillemet double \'
guillemet simple \$ caractère
$ \\ caractère \
\n retour à la ligne
Le caractère $ a un rôle particulier, car php le prend comme un préfixe de variable. Donc lorsque le caractère $ est rencontré dans la chaîne qui suit echo, il ne s'agit plus de texte mais d'une variable, l'interpréte utilise le nom de la variable qui suit $ et le remplace par sa valeur.
NB : la fonction print est similaire à echo, mais l'expression à afficher est entre parenthèses.
echo a une autre syntaxe, très pratique
pour générer du code html pur sans avoir à backslaher les
guillemets. Le code html à généréer apparaît
entre deux balises :
echo <<<CONTACT
<div align="right">
<a href="mailto:alain.tisserant@mines.inpl-nancy.fr?SUBJECT=Message
a propos du poly php">
webmestre@cours-php</a>
</div>
CONTACT;
Tout le texte entre le terme suivant echo (choisi librement, ici
CONTACT) et la reprise de ce terme (ici CONTACT;) est directement recopié
dans le code html généré.
-> Attention, le délimiteur de fin, identique à celui qui suit echo,
doit être sur une nouvelle ligne, sans espace, uniquement suivi de point-virgule. C'est ça les joies de la programmation...
Dans l'exemple ci-dessous
<? php
$query="select description,adresse from relations r,documents d where r.id_relations=d.id
and archivage='' and type_relations='industrielles' order by id DESC";
$result=mysql_query($query);
echo "<table>";
while ($row=mysql_fetch_row($result)) {
$description=$row[0];
$adresse=$row[1]; ?>
echo <<<TABLEAU
<tr bgcolor="dddddd">
<td align=center>$description</td>
<td align=center><a href='$adresse'>oui</a></td>
</tr>
TABLEAU;
} // while ($row=mysql_fetch_row($result))
echo "</table>";
?>
le programme php envoie une requête sql à la base de données
et en liste le résultat ligne par ligne (while ($row=mysql_fetch_row($result)))
dans un tableau (balises html <tr> pour amorcer une ligne et <td>
pour amorcer une colonne).

Chaque variable commence par le signe dollar "$". Les variables sont typées de manière implicite en fonction du type de la valeur qui leur est affectée. Il n'y a pas en php de déclaration préalable des variables.
Manipulation des variables dans une chaîne de caractères :
Par exemple, avec $x="Jean"; $y="Claude";
la concaténation des deux chaînes peut s'effectuer
par l'intermédiaire de l'opérateur point "." :
$z=$x."-".$y; retourne "Jean-Claude",
mais, puisque les variables contenues dans une chaîne de caractères
sont remplacées par leur valeur, l'on peut aussi écrire
$z="$x-$y" avec le même
résultat.
Nous avions déja vu cette particularité avec l'instruction echo :
si la chaîne de caractères contient une variable, $id, c'est
la valeur de la variable qui est affichée :
echo "Hello maître $z !";
affiche : Hello maître Jean-Claude
Mais cette écriture n'est pas exacte, il faut écrire :
echo "Hello maître $z !<br>";
pour afficher : Hello maître Jean-Claude
En effet, les caractères accentués doivent être codés
sous leur forme d'entité html, la balise <br> signale la
fin de ligne à l'affichage.
Pour la lisibilité du code html généré, il peut être utile de placer judicieusement des caractères fin-de-ligne, \n , qui génèrent une fin de ligne dans le listing du code html.
Les variables tableaux en php ressemblent à celles du langage Java. Mais en php les tableaux
peuvent être aussi bien linéaires que associatifs :
$tab[0] = 33;
$valeur["bleu"]="#FF0000";
De très nombreuses fonctions permettent de manipuler les tableaux. En voici trois :
| fonction | exemple | résultat | |
| Pour construire un tableau à partir de ses éléments : array | array() | $compte = array("un", "deux", "trois") | $compte est un tableau de trois éléments, indexés à partir de zéro |
| Pour rassembler des variables en un tableau, ce qui permet de les manipuler ensuite en une seule ligne. (le tableau obtenu est indexé à partir de zéro) : list | list() | list($a, $b, $c) = $compte | $a=="un" $b=="deux" $c=="trois" |
| Pour éclater une chaîne en variables réunies dans un tableau, grâce à une expression rationnelle : split | split() | list($user, $domain) = split("@", "president@whitehouse.com", 2); | $user=="president" $domain=="white.house" |
Une variable $v peut représenter aussi bien une valeur numérique,
une chaîne, un cookie, une variable session ou une variable postée
d'un formulaire. L'on dit que le langage php n'est pas typé.
Chaque variable utilisée dans une fonction a une portée locale
restreinte à la fonction. Une fonction ne peut pas utiliser directement
de variable globale, située hors de la fonction.
Leur mécanisme est similaire à C ou Java.
Exemple :
<?php
function somme($xa,$y) {
$resultat=$x+$y;
return $resultat;
}
$a=1;
$b=2;
echo somme($a,$b);
?>
NB : l'on trouvera sur le web la liste des fonctions et sur manuelphp.com la doc php avec un excellent outil de recherche.
Php est très orienté traitement de chaînes.
Voici quelques unes des fonction les plus utiles pour manipuler les chaînes
de caractères:
| fonction | exemple | résultat | |
| Pour transcrire les caractères non-html (éàùÇ/...) dans leur codage en html : | htmlentities() | $V="c'était l'été"; htmlentities($V) |
"c'était l'été" |
| Pour connaître la longueur d'une chaîne : | strlen() | strlen("Met les bouts dès l'aube à mon mobile home à Nîmes !") | 52 |
| Pour remplacer une sous-chaîne par une autre : | str_replace() | str_replace("Hi","Hello","Hello you !") | "Hi, you !" |
| Pour tester si une chaîne est contenue dans une autre : | ereg() | ereg("cole","Ecole des Mines") | 1 |
| Pour mettre des antislashes devant les apostrophes : | addslashes() | addslashes("c'était l'été") | "c\'était l\'été" |
| Pour enlever ces antislashes : | stripslashes() | stripslashes("c\'était l\'été") | "c'était l'été" |
| Pour extraire une sous-chaîne de $n caractères d'une chaîne à partir du $p ième : | substr() | substr("mercredi",3,5) | "credi" |
| Pour chercher le premier caractère "n" et afficher la sous-chaîne commençant par ce "n" : | strstr() | strstr("ordinateur","n") | "nateur" |
| Pour supprimer les espaces en début et en fin de chaîne : | trim() | trim(" truc ") | "truc" |
| Pour éclater une chaîne en sous-chaînes selon un délimiteur, avec le résultat dans un tableau | explode() | explode(";", "un;deux;trois") | tableau composé des trois éléments |
| Pour éclater une chaîne en sous-chaînes selon un délimiteur, avec le résultat dans des variables | list() | list($a, $b, $c) = explode(";", "un;deux;trois") | $a=="un" $b=="deux" $c=="trois" |
NB : pour enregistrer du texte dans une base de données MySql, il est nécessaire de mettre des antislashes devant les apostrophes, puis d'ôter les antislashes après la lecture
Les instructions include et require permettent d'inclure
dans le programme php le contenu d'un fichier, contenant aussi bien
du php que de l'html :
include "fichier";
Utiliser include revient à faire un simple copier-coller : le code du fichier appelé est inséré dans la page appelante, à l’endroit exact où se trouve include.
Ainsi, l'on peut grandement améliorer la lisibilité des scripts
en séparant physiquement les fichiers contenant du php de ceux contenant
de l'html.
La portion de programme ci dessous permet d'insérer dans le code html
généré le contenu d'un fichier contenant de l'html :
$FileName = "msg.html";
include "$FileName";
include_once "fichier";
garantit que l'inclusion de code ne sera faite qu'une fois dans le script. Cette
forme sera utilisée par exemple pour inclure le code php de connexion
à une base de données.
Php, comme tous les langages de programmation, requiert des règles de
présentation du programme pour en améliorer la lisibilité.
-
On place généralement une instruction par ligne,
-
en indentant
le code comme en Java ou C++.
-
Chaque instruction se termine par un point-virgule
en fin de ligne.
- Les commentaires sont précédés de //, ou encadrés par /* et */
Les types de données standards en PHP sont :
integer (entiers)
double (réels)
string (chaînes de caractères)
array (tableaux)
object (objets)
Les variables sont des identificateurs précédés de $ : $ma_belle_variable
PHP est faiblement typé : l'interprète PHP décide au moment
de l'exécution du type de chaque variable, en fonction du contenu
de la variable. Une variable n'a donc pas à être déclarée
au préalable ; elle change de type en fonction de son contenu.
Les opérateurs sont classiques :
$a + $b Addition $a - $b Soustraction
$a * $b Multiplication
$a / $b Division $a % $b Modulo
Chaînes de caractères. Il nexiste quun seul
opérateur sur les chaînes, cest lopérateur de
concaténation .
Une constante chaîne est encadrée par des doubles guillemets ;
les variables y sont remplacées par leur valeur.
PHP permet deux types de tableaux :
Les tableaux indexés, dans lesquels on se déplace en utilisant
lindice numérique de lélément, indice commençant
par zéro.
Exemples : $tab[0] = 17; $tab[1] = 23;
ou $tab = array(17, 23);
Les tableaux associatifs, qui ont pour chaque élément une
valeur associée qui sert de clé daccès.
Exemple : $evaluation["alain"]=20; $evaluation["jacques"]=10;
Dans les fonctions, les variables ont une portée strictement
locale, aussi l'écriture ci dessous est incorrecte :
<?php
$a=1; $b=2;
function somme( ) {
$resultat=$a+$b; return $resultat; }
echo somme( );
?>
Si des paramètres d'une fonction sont absents dans l'instruction d'appel, ils peuvent se voir affecter une valeur prédéfinie : function message_d_erreur($message = "Erreur d'execution") {
Des exemples intéressants se trouvent sur
http://www.siteduzero.com/tutoriel-3-14668-un-site-dynamique-avec-php.html#part_14666
et en demandant à Google exemples scripts php on a le choix entre quelques centaines de milleirs de pages...
Php permet d'effectuer des traitements sur les fichiers, côté serveur exclusivement, la manipulation des fichiers côté client est impossible, fort heureusement pour des raisons de sécurité.
La fonction readfile() permet d'afficher à l'écran
un fichier.
Cette fonction se charge d'elle même d'ouvrir le fichier au préalable.
Exemple :
<?php
// affiche le fichier monfichier.txt
readfile ("monfichier.txt");
?>
D'autres fonctions de manipulation de fichier (se référer au manuel php, ou à ce cours www.netalya.com/fr/cours-php-fichiers.asp) :
Exemple : La portion de programme ci dessous permet d'insérer dans le
code html généré le contenu d'un fichier contenant de l'html
:
$FileName = "msg.html";
if (file_exists($FileName)) {
echo "<table width=\"100%\" border=\"1\"><tr><td>\n";
readfile($FileName);
echo "</td></tr></table><br>\n";
}
Exemple : Ajouter une ligne dans un fichier texte
<?php
// ouverture du fichier en mode lecture- écriture : le pointeur est
à la fin du fichier
$fichier = fopen($filename, 'a+');
// écriture de la ligne
fwrite($fichier,"Nouvelle ligne à insérer \n");
// fermeture du fichier
fclose ($fichier);
?>

Attention : Enfin, l'hébergement fourni par l'école n'est pas dapaté à l'enseignement (!) : les messages d'erreur ne sont pas affichés, ce qui est plutôt gênant pour
la mise au point des script ... |
![]() |
Eventuellement, installer la pile LAMP son son ordinateur personnel Sur son PC perso, installer easyphp pour programmer en php et sql localement : Sur son PC perso, il y a besoin aussi de NB : |
1er exercice : |
2ème exercice : |
| 3ème exercice : Mettre en oeuvre la technique d'inclusion de code contenu dans des fichiers séparés, avec la commande include. On écrira un programme php insérant 1- le fichier tete.html contenant la partie de code <html>...<body>, 2- puis le fichier corps.php contenant le corps du script php de l'exercice 2 (débarassé des balises html head body), 3- puis le fichier pied.html conteanant les balises </body></html> Le programme principal devient donc
Tester... Corrigés texte du script maître en-tête corps pied |
| 4ème exercice : Programmer un script php qui ajoute à un fichier texte quelques lignes, comportant la définition d'un terme, sous la forme terme / définition / nom de l'auteur. On pourra utiliser les scripts ci-joints correspondants à cet exemple où une définition a été entrée. |
Suite : formulaires
Pour en savoir plus :
Introduction
à php www.commentcamarche.net/php/phpintro.php3
Documentation
php, en français www.manuelphp.com
Liste complète des fonctions PHP, listées par rubrique www.info-3000.com/phpmysql/listecompletefonction.php
Document : http://www.mines.inpl-nancy.fr/~tisseran/cours/php/php.html
Octobre 2001 - Dernière mise à jour : 20 octobre 2009
Alain Tisserant Home
Remarques, suggestions, questions, ... : ![]()