Vous vous apprêtez à lire un tutoriel rédigé par un membre de ce site. Malgré tout le soin que ce membre a pu apporter au tutoriel, nous ne pouvons pas garantir que les informations contenues sur cette page sont exactes à 100%. Merci de garder cela en tête lorsque vous lirez cette page ;o)
Attention, tous les fichiers ne sont pas toujours modifiables : pour s'en assurer, utilisez le code suivant :
Code : PHP 1
2
3
4
5
6
7
8
9
10
11 | <?php
$filename = "membres.ini"; //Dans le cas de notre fichier ini
if(is_writable($filename))
{
echo "Le fichier est accessible en écriture";
}
else
{
echo "Le fichier n'est pas accessible en écriture";
}
?>
|
Si jamais il n'était pas accessible en écriture, il faudrait alors modifier son
chmod. Le chmod est un code donnant accès en lecture, écriture et exécution au propriétaire, au groupe et au public, je n'entre pas dans les détails, voici le code pour le modifier si nécessaire :
Code : PHP 1
2
3
4
5
6
7
8
9
10 | <?php
if(chmod ("membres.ini", 0644)) // Toujours donner 4 chiffres car la notation du mode est octale (et donc aucun chiffre supérieur à 7 dans cet entier).
{
echo "Le fichier est désormais lisible par tous et modifiable par le propriétaire.";
}
else
{
echo "Le changement de chmod a échoué.";
}
?>
|
Si le changement échoue, c'est que votre serveur ne le permet pas ou que le chemin d'accès du fichier est protégé.
Votre fichier est maintenant -normalement- prêt à être modifié !
Tout d'abord, voici comment on procède pour écrire dans un fichier : on ouvre le fichier, on le modifie et on le ferme, exactement comme avec le Bloc-notes. On va donc d'abord voir les fonctions d'ouverture et de fermeture d'un fichier.
fopen() et fclose()
fopen()
fopen() s'emploie de la façon suivante :
Code : PHP1
2
3 | <?php
$handle = fopen("membres.ini", "a+");
?>
|
Et que vaut la variable
$handle, me direz-vous ? Eh bien c'est une
ressource de type stream (flux), autrement dit on ne peut pas l'afficher, on va juste s'en
servir en la passant en argument des autres fonctions de manipulation de fichier. Pour en finir avec cette fonction
fopen(), le premier argument est donc le nom du fichier et le deuxième est le mode.
Voici les modes les plus courants :
| Lettre | Lecture | Écriture | Curseur | Spécial |
|---|
| r |
oui |
non |
au début |
- |
| r+ |
oui |
oui |
au début |
- |
| w |
non |
oui |
au début |
Efface le contenu du fichier |
| w+ |
oui |
oui |
au début |
Efface le contenu du fichier
Crée le fichier s'il n'existe pas |
| a |
non |
oui |
à la fin |
Crée le fichier s'il n'existe pas |
| a+ |
oui |
oui |
à la fin |
Crée le fichier s'il n'existe pas |
On a maintenant ouvert notre fichier, et vous devez savoir qu'il est possible d'ouvrir plusieurs fichiers en même temps en donnant différents noms à vos ressources, vous pouvez ainsi manipuler les fichiers ensemble.
fclose()
Une fois toutes les opérations faites, on ferme le fichier ainsi :
Code : PHP1
2
3 | <?php
fclose($handle);
?>
|
fwrite()
Tout d'abord, sachez que cette fonction a un alias :
fputs(), c'est-à-dire que vous pouvez utiliser l'une ou l'autre de la même façon ; moi, je préfère
écrire plutôt que
mettre (cf. nom de ces fonctions en français). Cette fonction prend en premier paramètre la
flux ressource et en second, la
chaîne de caractères à insérer et elle renvoie le nombre d'octets écrits ou
false en cas d'échec.
Code : PHP1
2
3
4
5
6
7
8 | <?php
$mon_texte = "[groupe]
item=valeur";
if(fwrite($handle, $mon_texte) === FALSE)
{
echo "L'écriture a échoué.";
}
?>
|
file_put_contents()
Et enfin
file_put_contents() qui est l'équivalent de :
Code : PHP 1
2
3
4
5
6
7
8
9
10
11 | <?php
$chemin = "membres.ini";
$mon_texte = "[groupe]
item=valeur";
$handle = fopen($chemin, "w+");
if(fwrite($handle, $mon_texte) === FALSE)
{
echo "L'écriture a échoué.";
}
fclose($handle);
?>
|
Et avec
file_put_contents(), il suffit de faire ça :
Code : PHP1
2
3
4
5
6
7
8
9 | <?php
$chemin = "membres.ini";
$mon_texte = "[groupe]
item=valeur";
if(file_put_contents($chemin, $mon_texte) === FALSE)
{
echo "Echec de l'écriture.";
}
?>
|
Attention : cette fonction magique a ses limites, car elle agit comme si on avait entré le mode
w+ à
fopen(). Vous êtes donc obligés de réutiliser les trois autres fonctions si vous voulez entrer un autre mode. De plus, cette fonction n'existe que depuis PHP 5 et exige donc une extension
.php5 des fichiers ; si vous n'êtes pas sûrs, utilisez plutôt la première méthode.
C'est le principe de la modification : on récupère le contenu d'un fichier, on le change puis on remplace l'ancien contenu par le nouveau. Voilà le schéma de l'opération en ce qui concerne le
.ini :

Et là-dessus, on sait tout faire sauf transformer un array en texte pour fichier
.ini (pas de panique : on le verra dans le chapitre suivant). La dernière chose dont vous avez besoin avant qu'on finisse ce chapitre, c'est de méthodes pour effacer le contenu d'un fichier.
Pour ça, vous avez le mode
w (et
w+) de
fopen(), ou la fonction
file_put_contents() qui efface le fichier avant d'écrire dedans. Enfin, la dernière méthode consiste à supprimer le fichier avec la fonction
unlink().
Code : PHP 1
2
3
4
5
6
7
8
9
10
11 | <?php
$filename = "membres.ini";
if(unlink($filename))
{
echo "[" . $filename . "] a été supprimé.";
}
else
{
echo "La suppression de [" . $filename . "] a échoué.";
}
?>
|
Mais si le fichier à supprimer n'existe pas,
unlink() renvoie une erreur : donc, pour éviter cette tache dans la page, on vérifie que le fichier existe avec
file_exists().
Code : PHP 1
2
3
4
5
6
7
8
9
10 | <?php
if(file_exists($filename))
{
echo "Le fichier existe.";
}
else
{
echo "Le fichier n'existe pas.";
}
?>
|
Donc si le fichier n'est pas protégé, il suffit de mettre cette ligne de code pour le supprimer :
Code : PHP1
2
3
4
5
6 | <?php
$filename="membres.ini";
//Ici, on ne sait si le fichier $filename existe
if(file_exists($filename)) unlink($filename);
//Ici, on n'a aucun message d'erreur et on est sûrs que le fichier $filename n'existe plus
?>
|
Après le QCM, vous serez parés à créer le système complet de gestion des fichiers
.ini.
Et voilà, vous avez maintenant tout ce qu'il vous faut : nous allons pouvoir créer notre page de gestion des fichiers .ini.