Exercice php :
Enregistrer le jargon dans un fichier

 

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

<!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=iso-8859-1" />
<title>Jargon du cours TSI</title>
</head>

<body>

<p>
<?php // afficher.php afficher le jargon
$filename = "JARGON.txt"; // le fichier texte
echo "Liste du fichier '$filename'<br>";
echo "- - - <br>\n";
readfile ($filename);
echo "\n<br>- - - <br><br>\n";
?>
</p>

</body>
</html>

- Un exemple d'utilisation se trouve à http://www.mines.inpl-nancy.fr/alain.tisserant/tsi/jargon/afficher.php
- Créer un fichier texte "JARGON.txt" avec quelques lignes (la définition rédigée dans le semaine dernière). Ce fichier doit être dans le répertoire www de Apache, ou celui de l'hébergement non local.
- Installer ce script sur votre espace serveur web (répertoire www de Apache, ou hébergement non local).
- Afficher le fichier "JARGON.txt" par ce script.

 

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

jargon

Voici ce script, avec le formulaire de saisie et son traitement pour enregistrement.
(Le fichier "JARGON.txt" doit être dans le même répertoire que ce script)

<!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=iso-8859-1" />
<title>Le jargon du cours TSI</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, $_POST["nom"] pour récupérer le paramètre "nom"
$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="index.php" method="POST" name="saisie" id="saisie">
<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'éccè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

$tracking = "[IP ".$_SERVER["REMOTE_ADDR"]."] "; // IP
setlocale (LC_TIME, 'fr_FR','fra');
$tracking .= strftime("%A %d %B %Y %T"); // et date

$texte = " <p>
<b>".htmlentities($terme)." :</b><br>\n"; // 1ère ligne : terme défini, en gras
$texte .= htmlentities($definition)."<br>\n"; // la définition
$texte .= "<i>".htmlentities($nom)."</i><br>\n"; // nom et prénom, en italique
$texte .= "$tracking<br>
</p>\n"; // enfin les informations pour identifier le visiteur
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 "Liste du fichier '$filename'<br>";
echo "- - - <br>\n";
readfile ($filename);
echo "\n<br>- - - <br><br>\n";

?>

</body>
</html>

- Installer ce script sur votre espace serveur web (répertoire www de Apache, ou hébergement non local).
- L'exécuter pour y rentrer les deux définitions de cette semaine...

 

3- Avec un éditeur de textes, modifier la première définition qui avait été entrée, pour la rendre compatible avec le format html des nouvelles définitions (BlueGriffon sait générer du code html...).

 

Octobre 2011
Document : http://www.mines.inpl-nancy.fr/alain.tisserant/cours/php/fichier_jargon/index.php