PHP
«Php is an Hypertext Preprocessor»
«Personal Home Page»
«People Hate Perl»

 

Php est un langage de programmation web, permettant de générer "au vol" des pages web personnalisées, appelées pages dynamiques. Le contenu d'une page dynamique peut être modifié facilement, souvent grâce à un outil de gestion de contenu dit « CMS » (Content Management System) qui propose une interface par laquelle on peut administrer le contenu web sans passer par de la programmation informatique pure. C'est donc un choix intéressant pour les mises à jour fréquentes, ou lorsqu'elles sont réalisées par des personnes inexpérimentées en html. 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, les sites dynamiques représentent le plus gros du pourcentage des sites. Php 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é, 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. En octobre 2014 PHP est utilisé dans plus de 80% des cas pour le développement des sites web dynamiques (réf).

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


 

Première partie : php, la génération de code html.

 

Principes

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 étant générées au vol sont personnalisée et actualisées à 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 ? pour créer...


Sur le serveur de pages web, l 'interprète php est activé chaque fois que la page demandée comporte l'extension .php
-> les fichiers contenant nos scripts php devront donc comporter ce suffixe .php

Le protocole http du web fonctionne sur un modèle client-serveur :

  1 l'ordinateur (ou tablette, ou smartphone...) "client" envoie une requête: une url (adresse web)
http://domaine/chemin/fichier.html
2 l'ordinateur "serveur" du domaine recherche sur ses disques le fichier demandé  
  4 le butineur exécute le programme .html et affiche le résultat sur l'écran de l'ordinateur "client"

fichier .html
3 "fichier.html", et le retourne vers le demandeur  

 

Le serveur web agit comme un serveur de fichiers, où les fichiers contiennent des programmes html, et aussi 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 :

  2 l'ordinateur "serveur web" du domaine recherche sur ses disques le fichier demandé, suffixé .php
2.1 le fichier, contenant donc un programme php, est transmis à un "serveur php" pour être interprété
2.2 ce serveur d'applications à son tour peut interroger un "serveur de données", par des requêtes SQL
 
 

  3 pour être retourné au demandeur

2.4 le programme html, généré par le serveur php, est transmis au serveur de pages web,
2.3 celui-ci retourne son rapport pour être inclus dans la page web

 

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 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, 64% des serveurs en 2013, devant IIS 17% et Nginx 14% -réf), qui l'envoie alors au butineur demandeur.

 

Le langage de description de pages : html

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 BlueGriffon ou DreamWeaver. Cependant pour programmer en php, nous allons avoir besoin de connaitre des rudiments d'html, poury effectuer des adaptations. 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 &eacute;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=utf-8">
 </head>
 <body>
   Corps du document : instructions html
 </body>
</html>

(NB: La balise title précise le titre de la page ; la balise meta indique ici le codage employé pour le jeu de caractères)

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.

 

Génération de code html par php

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 bien connaître html, nous utiliserons un générateur, éditeur wysiwyg (BlueGriffon) 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.

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 "Vous devez indiquer une adresse e-mail <b>valide</b><br>";
}
else if (!$event1) {
       echo "Vous n'avez rien mis dans le corps de votre message !!!<br>Essayez encore une fois<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 : /* commentaire */ ou // commentaire

Explication : Si la variable booléenne $event0 (toutes les variables commencent par le signe $) a la valeur faux, le script génère le code html ci-dessous :
Vous devez indiquer une adresse e-mail <b>valide</b><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 "Vous devez indiquer une adresse e-mail <b>valide</b><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>). 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 du 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).

Variables

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

NB : lorsque le codage choisi pour le jeu de caractères n'est pas "utf8", cette écriture n'est pas exacte, il faut écrire :
echo "Hello ma&icirc;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.
L'emploi du codage utf8 évite bien des tracas Ãč¿½

Pour la lisibilité humaire 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 (mais sont sans effet sur les résultats affichés à l'exécution par le butineur client).

 

Tableaux

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"  

 

Portée des variables

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.

 

Fonctions

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 (PHP version 5.2.6 a 4707 fonctions) et sur manuelphp.com la doc php avec un excellent outil de recherche.

 

Chaînes de caractères

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, lorsque l'on n'emploie pas le codage utf8 : htmlentities() $V="c'était l'été";
htmlentities($V)
"c'&eacute;tait l'&eacute;t&eacute;"
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 sera nécessaire de mettre des antislashes devant les apostrophes, puis d'ôter les antislashes après la lecture

 

Inclure du code php, ou html, dans un script php

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";   ou directement   include "msg.html";

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.

 

Généralités : codage php

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 n’existe qu’un seul opérateur sur les chaînes, c’est l’opérateur de concaténation “.”
Une constante chaîne est encadrée par des doubles guillemets ; les variables y sont remplacées par leur valeur.

Les structures de contrôle comprennent comme en Java les instructions conditionnelles if…else…elseif ainsi que les instructions itératives do…while, for, break, continue et switch.

PHP permet deux types de tableaux :
Les tableaux indexés, dans lesquels on se déplace en utilisant l’indice 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é d’accè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

Des exemples intéressants se trouvent sur
http://fr.openclassrooms.com/informatique/cours/concevez-votre-site-web-avec-php-et-mysql#part_14666
et en demandant à Google exemples scripts php on a le choix entre quelques dizaine de milliers de pages...

 

Traitement des fichiers

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 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é par php 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 : La portion de programme ci dessous permet d'afficher le contenu d'un fichier texte, lu ligne à ligne (contenant du texte non-html) :
$filename = "texte.txt"; // le fichier texte
$fichier = fopen($filename, 'r'); // ouvrir en lecture seule
echo "Liste du fichier '$filename'<br>- - - <br>\n";
if ($fichier) { // si le fichier existe
   while (!feof($fichier)) { // tant que l'on est pas en fin du fichier
      $ligne = fgets($fichier); // on lit la ligne courante
      echo "$ligne<br>"; // et on l'affiche, suivie d'un retour à la ligne écran
   } // while (!feof(fichier))
} // if ($fichier)
fclose($fichier); // on ferme le fichier

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);
?>

 

 

elePHPant

Exercices  

En préambule, quelques recommandations :
1 pour éditer les scripts php, installer un éditeur syntaxique comme PsPad (avec format>utf8), ou autre éditeur syntaxique comme NotePad++) pour construire les scripts php : PsPad. Attention à décliner toute la tripotée d'"offres commerciales" après l'installation ! Sur Mac voir sur 5 alternatives à Notepad++ pour Mac. Sur Android voir Jota text Editor, et sur iOS Textastic Code Editor.
- ne pas utiliser le "bloc notes windows " pour le code php, il risque d'ajouter un suffixe .txt au nom de fichier script.php, utiliser PsPad...
2 pour générer du code html, installer le composeur de pages web BlueGriffon : BlueGriffon (Windows, Mac, Linux)
- ne surtout pas utiliser BlueGriffon pour le code php, il modifie le code php,   :-(((
3 régler windows pour afficher systématiquement les suffixes : dans l'explorateur de fichiers, décocher "masquer les extensions" puis faire "Appliquer à tous les dossiers" : pour afficher les extensions

L'hébergement fourni par l'école n'est pas adapté à l'enseignement (!!!) : les messages d'erreur ne sont pas affichés, ce qui est plutôt gênant pour la mise au point ... Comme mesure palliative, l'on débutera chaque script php par les deux instructions
ini_set ("display_errors", TRUE); error_reporting (E_ALL) ;
 
Pour un travail normal d'apprentissage de la programmation php, il sera en pratique préférable que chaque élève installe un serveur php sur son PC personnel (EasyPhp version "devserver", mais d'autre sont aussi bon comme wamp ou xamp). EasyPHP est un environnement de travail packagé comprenant le serveur web Apache, le système de gestion de bases de données MySQL et le support du langage PHP. Il est fourni avec phpMyAdmin, une interface permettant de manipuler très facilement les enregistrements de la base de données.


Tout d'abord,
Installer la pile LAMP son son ordinateur personnel

LAMP est l'acronyme d'un ensemble de logiciels libres permettant de construire des serveurs Web : Linux + Apache + MySQL + PHP
Il en existe une version pour Windows, WAMP
En plus d'un éditeur syntaxique PHP (voir les recommandations ci-dessus, et le lien ci-desous), nous avons besoin de 3 autres modules, tous inclus dans Easyphp : un serveur web (Apache) avec un interprète du langage php, une base de donnée (MySQL), une interface de gestion de la base de données (PhpMyAdmin).
Recommandation importante : toujours télécharger les logiciels depuis le site de leur éditeur, et surtout pas depuis des sites comme 01net.com ou softonic.fr qui y ajoutent des adwares, après quoi il faut nettoyer ces cochoneries avec des outils comme AdwCleaner .

I- Sur son PC perso, installer easyphp pour programmer en php et sql localement :
1-Télécharger la version la plus récente de EasyPhp : www.easyphp.org version devserver
2- L'installer (aide ici )
3- Vérifier que le serveur web local fonctionne bien, il suffit de taper dans un butineur http://localhost, ou http://127.0.0.1 (c'est l'adresse de votre machine), ou de choisir la commande "localweb" après un clic-droit sur l'icône d'EasyPhp dans la zone de notifications (en bas à droite de l'écran)  :

II- Où mettre les scripts php pour qu'ils soient interprétés par le serveur de pages web ? Dans le répertoire du serveur Apache installé par EasyPhp (habituellement quelque chose du genre C:\Program FilesX86\EasyPHPDevServer\...\data\localweb, qui correspond à l'url http://localhost).
Y placer le script dont le code source est sur http://tisserant.org/tsi/bozo/bozo.txt . Vérifier que l'exécution http://localhost/bozo.php se déroule bien.

III- Sur son PC perso, il y a besoin aussi d'un éditeur syntaxique, pour éditer les scripts php : installer PSPad, (ou Notepad++, ou tout autre éditeur syntaxique). Avec PSPAD attention à décliner les "offres commerciales" nuisibles après l'installation !

IV- Et il nous faudra aussi un éditeur wysiwyg pour générer du code html : installer la dernière version de BlueGriffon portable ( BlueGriffon est un logiciel libre ; DreamWeaver serait mieux, mais c'est très cher...), mais attention BlueGriffon ne sert qu'à générer du code html, il ne faut pas l'utiliser pour php (il y a PSpad pour cela) ! Attention aussi à refuser les gadgets inutiles et polluants que BlueGriffon propose (Babylon toolbar).

NB :
- sur Linux l'installation de easyphp est aussi facile. Il y a aussi XAMPP. BlueGriffon est disponible pour Linux.
- sur Macintosh, le problème se pose en des termes différents. Voir du côté de MAMP, ou d'autres solutions. BlueGriffon est disponible pour Mac.
- sur iPad, on pourra utiliser l'environnement The Lemon ADE
- sur Androïd, voir du côte de PAW server.

 

Ces préalables étant faits, l'environnement de développement php est prêt, nous pouvons l'utiliser pour programmer en php :

 

1er exercice :
(Ne pas oublier de régler windows pour afficher systématiquement les suffixes : dans l'explorateur de fichiers, décocher "masquer les extensions" puis faire "Appliquer à tous les dossiers")
- Faire avec BlueGriffon une page web qui affiche "Hello world !", en gras et en italique. L'enregistrer, sous le nom hello.html
- L'exécuter avec un double clic dans l'explorateur de fichiers
- L'exécuter par son url web http://localhost/hello.html (le répertoire d'Apache corespond à l'url http://localhost . L'url de cette page web personnelle est localement http://localhost/hello.html ou en adresse IP http://127.0.0.1/hello.html

corrigé

 

 

2ème exercice :
Le même en couleur !
En reprenant dans un éditeur syntaxique (PSpad ou autre... mais pas BlueGriffon )le code html du programme hello.html précéden , lui ajouter du code php qui
- initialise une variable $tag avec la chaîne de caractères "blue" ($tag = "blue";)
- règle l'affichage de "Hello world !" avec la couleur indiquée par la valeur de la variable $tag (echo "<font color='$tag'>Hello world !</font>";)
Ce script sera sauvegardé dans le fichier helloblue.php (suffixe php, puisqu'il y a du code php)
- l'exécuter par son url web
(aviez-vous bien pensé aux balises <?php ?> ?)
- puis l'exécuter par un double clic dans l'explorateur de fichiers : que se passe-t-il ?

corrigé

3ème exercice :
Mettre en oeuvre la technique d'inclusion de code contenu dans des fichiers séparés, avec la commande include.
On découpera le fichier créé à l'exercice précédent helloblue.php en 3 parties, dans les fichiers tete.html, corps.php, pied.html :
1- le fichier tete.html contenant la partie de code de la balise <html> à la balise <body> incluse,
2- puis le fichier corps.php contenant le corps du script php de l'exercice 2, de la balise <body> à la balise </body> non incluse,
3- puis le fichier pied.html conteanant les balises </body></html>
Le programme principal, racine.php, comporte alors trois instructions :

<?php
include "tete.html"; // la partie de code <html>...<body>
include "corps.php"; // le corps du script php de l'exercice 2 (débarassé des balises html head body)
include "pied.html"; // balises </body></html>
?>

Tester...

Corrigés  texte du script maître   tête   corps   pied  

4ème exercice :
4.1 Un premier fichier texte.
D'abord créer un fichier texte "JARGON.txt" contenant les lignes de la définition rédigée après la première séance du cours. Ce fichier doit être mis dans le répertoire www de Apache. Attention à utiliser l'encodage utf8; avec PSpad : format>utf8 (utf-8 ?, voir c'est quoi l'encodage)
La définition du terme est sous la forme terme / définition / nom de l'auteu, formatée comme dans l'exemple ci-dessous sur 5 lignes (dont une ligne blanche de séparation entre définitions) :

TSI     
Techniques et Solutions Informatiques (acronyme propre à la FICM de l'ENSMN d'ARTEM de l'INPL de l'UL du MENSER)     
TISSERANT Alain     
lundi 22 septembre 2014 23:59:59   

(1ère ligne = terme à définir /
2ème ligne = texte de la définition /
3ème ligne = nom de l'auteur de la définition /
4ème ligne = date /
5ème ligne = ligne blanche)

 

4.2 Lister le fichier texte.
Le script suivant affiche le contenu d'un fichier "JARGON.txt" à l'écran :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Jargon du cours TSI</title>
</head>
<body>

<p>
<?php
// afficher.php afficher le jargon
echo "- - - <br>\n";
$filename = "JARGON.txt"; // le fichier texte
echo "Liste du fichier '$filename'<br>";
echo "- - - <br>\n";
$fichier = fopen($filename, 'r'); // ouvrir en lecture seule
if ($fichier) { // si le fichier existe
  echo "<p>";
  while (!feof($fichier)) { // tant que l'on n' est pas en fin du fichier
    $ligne = fgets($fichier); // on lit la ligne courante
    echo "$ligne<br>"; // et on l'affiche, suivie d'un retour à la ligne écran
  } // while (!feof(fichier))
} // if ($fichier)
fclose($fichier); // on ferme le fichier
echo "- - - <br>\n";
?>
</p>

</body>
</html>

- Le texte source du script est disponible sur http://tisserant.org/tsi/jargon/afficher.txt
- Installer ce script sur votre espace serveur web (répertoire www de Apache).
- Afficher le fichier "JARGON.txt" par ce script.

 

4.3 Saisir et enregistrer une définition.
On veut utiliser un script php qui ajoute à ce fichier texte JARGON.txt une nouvelle définition, pour obtenir un texte correspondants à cet exemple où deux définitions ont été entrées.

Pour ajouter facilement des nouvelles définitions au fichier du jargon, un script doit saisir la nouvelle définition et l'enregistrer :

jargon

Voici le code d'un tel script, à placer dans un fichier saisir.php :
(Le fichier JARGON.txt doit être dans le même répertoire que ce script saisir.php)

<?php // ce script doit être placé dans le fichier de nom saisir.php ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Ajouter du jargon</title>
</head>

<body>
<p>

<?php
$filename = "JARGON.txt"; // le fichier texte

// récupérer les éventuels paramétres POST issus du formulaire de saisie
$nom = stripslashes(@$_POST["nom"]); // stripslashes() pour supprimer les antslashes placés automatiquement devant les apostrophes
$terme = stripslashes(@$_POST["terme"]);
$definition = stripslashes(@$_POST["definition"]);

if (($nom == "") && ($terme == "") && ($definition == "")) {
// tous les champs issus du formulaire de saisie sont vides, il s'agit donc d'un premier appel du script

// afficher le formulaire
echo <<<FORM
<form action="saisir.php" method="POST" name="saisie" id="saisie" accept-charset="utf-8">
<table width="100%" border="0" cellspacing="0" cellpadding="5">
<tr>
<td align="right" valign="top">NOM Pr&eacute;nom : </td>
<td valign="top">
<input name="nom" type=text id="nom" value="$nom" size="60" maxlength="60">
</td>
</tr>
<tr>
<td align="right" valign="top">Terme d&eacute;fini : </td>
<td valign="top">
<input name="terme" type="text" id="terme" value="$terme" size="60" maxlength="60" />
</td>
</tr>
<tr>
<td align="right" valign="top">D&eacute;finition : </td>
<td valign="top">
<textarea name="definition" cols="60" rows="10" id="definition">$definition</textarea>
</td>
</tr>
<tr>
<td valign="top">&nbsp;</td>
<td valign="top">
<input type="submit" name="Submit" value="Envoyer" />
</td>
</tr>
</table>
</form>
FORM;

echo "<br><p>Termes actuellement d&eacute;finis :
<br>";

} else {
// le script a été invoqué par le formulaire, traiter le formulaire
// c'est à dire ajouter la définition dans un fichier texte

// ouvrir le fichier en mode lecture- écriture : le pointeur est positionné é la fin du fichier
$fichier = fopen($filename, 'a+');
// NB : la protection contre l'accés simultané if (flock($fichier, LOCK_EX)) ne fonctionne pas sur un filer NFS !

// le fichier est ouvert : y écrire le texte saisi et des informations pour identifier l'utilisateur
$user_IP = $_SERVER["REMOTE_ADDR"]; // recueillir l'IP de l'internaute
$user_host = gethostbyaddr($user_IP); // et son host
$tracking = "[IP $user_IP - "; // IP
$tracking .= "$user_host] "; // Host
setlocale (LC_TIME, 'fr_FR','fra');
$tracking .= strftime("%A %d %B %Y %T"); // et la date

$texte = $terme."\n"; // 1ére ligne : terme défini
$texte .= $definition."\n"; // la définition
$texte .= $nom."\n"; // nom et prénom
$texte .= $tracking."\n";
$texte .= " "."\n";
fwrite($fichier, "$texte");

echo <<<LIEN

<p><a href="index.php">Entrer une nouvelle d&eacute;finition ?</a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>

LIEN;
echo "OK : votre texte a bien &eacute;t&eacute; ajout&eacute;, en fin de liste :<br>";

// fermer le fichier
fclose ($fichier);
}

// afficher le fichier, pour information
echo "<p>";
$filename = "JARGON.txt"; // le fichier texte
$fichier = fopen($filename, 'r'); // ouvrir en lecture seule
echo "Liste du fichier '$filename'<br>";
echo "- - - <br>\n";
if ($fichier) { // si le fichier existe
echo "<p>";
while (!feof($fichier)) { // tant que l'on est pas en fin du fichier
$ligne = fgets($fichier); // on lit la ligne courante
echo "$ligne<br>"; // et on l'affiche, suivie d'un retour é la ligne écran
} // while (!feof(fichier))
} // if ($fichier)
fclose($fichier); // on ferme le fichier
echo "</p>";

?>

</body>
</html>

- Le source de ce script est disponible sur http://tisserant.org/tsi/jargon/saisir.txt
- Installer ce script sur votre espace serveur web (répertoire www de Apache en local, ou hébergement non local).
- L'exécuter pour y rentrer les deux définitions de cette semaine...

 

 

 

Suite : formulaires

Ecole des Mines de Nancy

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

 

Bibliographie php

 

 

 

 

Document : http://tisserant.org/cours/php/php.html
Dernière mise à jour : octobre 2015
Alain Tisserant