Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les tutoriels > Non-Officiels > Site Web > PHP > Langage, bibliothèques et fonctions > Enregistrer et lire des données de fichiers .ini > Les bases > Les outils pour l'écriture > Lecture du tutoriel

Les outils pour l'écriture

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)
Avatar
Auteur : Kyle Katarn
Visualisations : 473

Plus d'informations Plus d'informations
Dans ce chapitre, je vais vous donner tous les outils nécessaires pour l'écriture dans un fichier .ini de sorte qu'à la deuxième partie de ce tuto, nous puissions commencer à monter le système de lecture / écriture.

Pour tous les Zér0s qui ont suivi les cours de M@teo21, ce chapitre ne sera qu'un rappel : ceux qui ont l'habitude d'écrire, lire et supprimer des fichiers n'ont pas besoin de le lire et ont juste à passer en revue leurs connaissances avec le QCM. ;)
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

Le chmod

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é ! :D

Les fonctions de manipulation de fichiers

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 : PHP
1
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 :

LettreLectureÉcritureCurseurSpé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 : PHP
1
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 : PHP
1
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 : PHP
1
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.

Effacer pour mieux réécrire

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 :
Image utilisateur
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 : PHP
1
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.

Q.C.M.

Quel mode d'ouverture de fichier utilise la fonction file_put_contents ?
Comment supprimer un fichier seulement s'il existe ?
Laquelle de ces fonctions ne reçoit pas une ressource comme premier paramètre ?

Statistiques de réponses au QCM


Et voilà, vous avez maintenant tout ce qu'il vous faut : nous allons pouvoir créer notre page de gestion des fichiers .ini.
Chapitre précédent Sommaire Chapitre suivant
Retour en haut Retour en haut


Créé : le 10/06/2007 à 23:05:56
Modifié : le 26/08/2008 à 10:36:33
Avancement : 0%
Licence : Copie non autorisée

L'orthographe, la grammaire et la présentation de ce tutoriel ont été vérifiées par les zCorrecteurs.

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 161 Zéros connectés | Requêtes SQL 8 requêtes | Temps de génération de la page : Total (SQL) 0.0955s (0.084s)