Pour sauvegarder un grand nombre de données sur un serveur, on utilise généralement une base de données. Lorsque le nombre de données à sauvegarder reste modeste, on peut se contenter d'un simple fichier texte. Plusieurs fonctions de PHP sont conçues pour manipuler les fichiers.
Pour lire le contenu d'un fichier texte placé sur le serveur, il faut veiller à ce que celui-ci reste accessible en lecture. Pour modifier son contenu, il faut aussi le rendre accessible en écriture (chmod 777 fichier.txt).
La fonction file_get_contents() permet d'afficher le fichier texte au complet.
Exemple de code :
<?php $fichier ="dossier/fichier.txt"; $contenu=file_get_contents($fichier); echo $contenu; ?>
La fonction file() retourne dans un tableau l'intégralité d'un fichier en mettant chacune de ces lignes dans un élément du tableau.
Exemple de code :
<?php $fichier ="dossier/fichier.txt"; $tableau=file($fichier); for($i=0; $i<count($tableau); $i++) { echo $tableau[$i]."<br>"; } ?>
Il peut être utile de tester si le fichier à visualiser existe ou pas. On utilise la fonction file_exists() pour cela.
Exemple de code :
<?php if (file_exists("fichier.txt")) { echo "Le fichier existe."; } else { echo "Le fichier est inexistant."; } ?>
Pour éditer un fichier, on commence par l'ouvrir. Lorsque son contenu sera modifié, il faudra le fermer.
Exemple de code :
<?php $monfichier = fopen("fichier.txt","r") ... fclose($monfichier); ?>
La fonction fopen() comporte deux paramètres :
Lorsque le traitement sur le fichier se termine, on le ferme avec la fonction fclose().
Il peut être utile de tester si l'ouverture de fichier s'est bien déroulée, pour stopper le script PHP le cas échéant.
Exemple de code :
<?php if (!$monfichier = fopen("fichier.txt","r")) { echo "Echec de l'ouverture du fichier"; exit; } else { ... fclose($monfichier); } ?>
Un pointeur est utilisé pour désigner un endroit particulier du fichier. A son ouverture en mode lecture seule, le pointeur est situé au tout début du fichier.
La fonction fgets() renvoie la ligne courante sur laquelle se trouve le pointeur. Le deuxième paramètre de la fonction désigne le nombre maximum de caractères à récupérer sur la ligne.
Exemple de code :
<?php $monfichier = fopen("fichier.txt","r"); $ligne = fgets($monfichier,255); fclose($monfichier); echo 'Contenu du fichier : '.$ligne; ?>
Une solution consiste à appeler plusieurs fois la fonction "fgets()" :
<?php $monfichier = fopen("fichier.txt","r"); $ligne1 = fgets($monfichier,255); $ligne2 = fgets($monfichier,255); fclose($monfichier); echo 'Première ligne du fichier : '.$ligne1; echo '<br>', echo 'Deuxième ligne du fichier : '.$ligne2; ?>
Une bouche permet d'obtenir toutes les lignes du fichier. La fonction "feof()", utilisée dans la boucle "while", teste si la fin du fichier a été atteinte (feof signifie find end of file).
Exemple de code :
<?php $monfichier = fopen("fichier.txt","r"); while(!feof($monfichier)) { $ligne = fgets($monfichier,255); echo $ligne."<br>"; } fclose($monfichier); ?>
On commence par se préoccuper de la position du curseur dans le fichier. On utilise la fonction fseek() pour cela.
Pour placer le curseur au début du fichier :
fseek($monfichier, 0);
La fonction fputs() permet d'écrire dans un fichier.
Exemple de code :
<?php $monfichier = fopen("fichier.txt","a"); fputs($monfichier, "montexte"); fclose($monfichier); ?>
Le fichier à modifier peut être ouvert de plusieurs manières :
L'exemple de code suivant, à adapter selon ce que vous voulez obtenir, permet de réaliser un compteur de visites.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <?php $fp = fopen("compteur.txt","r+"); $nbvisites = fgets($fp,11); $nbvisites=$nbvisites+1; fseek($fp,0); fputs($fp,$nbvisites); fclose($fp); echo 'Ce site compte '.$nbvisites.' visiteurs.'; ?> </body> </html>