– Les fichiers –

Les fichiers en PHP disposent de fonctions spécifiques, qui facilitent leur utilisation. En général, le fonctionnement d’un fichier est le suivant: ouverture, traitement, fermeture.

Ouverture et fermeture d’un fichier

L’ouverture d’un fichier se fait en utilisant la fonction fopen(). On utilise cette fonction quelle que soit l’action à effectuer sur le fichier, à savoir lire, écrire, ou créer.

entier fopen(chaine nomdufichier, chaine mode);

Il existe différents modes disponibles:

  • r: ouverture en lecture seulement
  • w: ouverture en écriture seulement (la fonction crée le fichier s’il n’existe pas)
  • a: ouverture en écriture seulement avec ajout du contenu àla fin du fichier (la fonction crée le fichier s’il n’existe pas)
  • r+: ouverture en lecture et écriture
  • w+: ouverture en lecture et écriture (la fonction crée le fichier s’il n’existe pas)
  • a+: ouverture en lecture et écriture avec ajout du contenu àla fin du fichier (la fonction crée le fichier s’il n’existe pas).

La fermeture d’un fichier se fait en utilisant a méthode fclose().

fclose($fichier);

 

Lecture dans un fichier

Pour lire dans un fichier on va procéder toujours strictement de la même manière.

Tant qu’on n’est pas arrivé à la fin du fichier (while (!feof($file))), on récupère une ligne d’info($ligne=fgets($file)).

Il y a deux méthodes pour récupérer les infos d’un fichier:

  • fgets($fichier, $longueur): récupère la ligne courante du fichier sur une longueur définie(optionnelle)
  • fgetc($fichier): récupère un caractère dans la ligne courant du fichier

Ecriture dans un fichier

Pour écrire dans un fichier, on va utiliser la méthode fputs() qui est un alias de la méthode fwrite() si on travaille dans un fichier dont on a spécifié l’ouverture.

L’autre méthode consiste à utiliser la méthode file_put_contents(). On va alors envoyer le contenu d’une chaîne de caractères dans un fichier.

file_put_contents(‘fichier.txt’, »élément à envoyer\n »); 

Quelques méthodes sur les fichiers et répertoires

  • is_writable (ou is_writeable) indique si un fichier est ouvert en écriture
  • is_readable: indique si le fichier est ouvert en lecture
  • file_exists: vérifie qu’un fichier existe
  • filesize: renvoie la taille du fichier
  • filetype: renvoie le type du fichier

Il est possible d’effectuer des actions sur les dossiers de votre serveur web:

  • booléen is_dir(string path)
  • resource opendir ( string path )
  • string readdir ( resource dir_handle )
  • void closedir ( resource dir_handle )

Exemple de fonction

L’upload de fichier

L’upload de fichiers via les formulaires nécessite un petit aménagement du formulaire, et une action spécifique sur la page d’arrivée.

 

Sur le formulaire, il faut utiliser absolument deux éléments:

  • la méthode d’envoi POST
  • le type d’encodage enctype=multipart/form-data

Sur la page d’arrivée du formulaire, on va procéder à la récupération du fichier

  • On peut tester l’extension du fichier
  • On peut également définir une taille maximale de fichier
  • Il faut définir un répertoire d’upload et ensuite déplacer le fichier

Exemple complet et détaillé de récupération

Toutes ces actions ne sont pas essentielles, ce qui importe est la récupération des données.