Valid XHTML 1.0 Transitional CSS Valide !

PHP 6 : les fichiers

6-1 Introduction

PHP, en tant que langage serveur, peut accéder aux ressources du serveur et plus particulièrement au système de fichier du serveur. Cet accès ne se limite pas à la lecture de données contenues dans des fichiers, mais permet aussi la manipulation de fichiers et de répertoires (création, suppression, renommage...).

La manipulation, au sens strict du terme, de fichiers ne peut se faire que sur le serveur, les fichiers du client étant, par définition inaccessibles aux scripts PHP. Il existe tout de même deux exceptions à cette règle : «l’upload» de fichiers et le «download» de fichiers. Pour ces deux dernières «manipulations» on peut quand même remarquer que «l’initiative» est laissée au client, plus exactement à l’utilisateur, et non au serveur.

6-2 Manipulation de répertoires

Les répertoires sont comme des ressources qu’il faut ouvrir et dans lesquelles on se «déplace», comme dans une liste.
Les différentes fonctions "répertoire" en php :

Un exemple sur les répertoires : Il affiche tous les fichiers du répertoire où se trouve le fichier html ou php actuel.
Exemple personnel

6-3 Les fichiers

L'objectif de ce paragraphe est d'étudier comment manipuler le contenu des fichiers et aussi comment gérer la maintenance des fichiers : suppression, modification des droits (uniquement sous UNIX évidemment)...
Les différentes fonctions "fichier" en php : 2 catégories

• celles qui permettent de lire et d’écrire dans des fichiers;
• celles qui permettent de manipuler les fichiers ainsi que leurs propriétés.

6-3-1 Fonctions de lecture et d'écriture

Il est possible de sauvegarder des informations dans un fichier sur le serveur à l’aide d’un script PHP. L’accès aux fichiers peut se faire, soit par l’intermédiaire de lecture de caractères, soit par l’intermédiaire de lecture d’octets "bruts". Seule la méthode "caractères" est présentée ici.
ATTENTION :
1. une valeur numérique sauvegardée dans un fichier texte sera automatiquement convertie en la chaîne de caractères correspondante.
2. en PHP, la notion de fichier est «large» : un fichier est aussi bien un fichier du disque du serveur, qu’un URL !

Il y a plusieurs façons de lire des caractères dans un fichier : on peut lire, en une opération de lecture, un nombre fixé de caractères, une ligne d’un fichier, la totalité du fichier. Comme dans le cas des répertoires, les fichiers sont considérés comme des listes de données. Cela implique que toute lecture provoque un déplacement de «la position courante» dans le fichier. Lors de l’ouverture, la «position courante» du fichier dépend du mode d’ouverture. Un fichier ouvert en mode lecture verra sa position courante placée au début. Cette position courante est «implicite» : c’est le système qui en gère le déplacement. Evidemment, il existe des fonctions permettant, par exemple, de se déplacer dans le fichier, notamment au début de celui-ci.

NB : La lecture totale d’une ligne se fait en réalisant une lecture de 4096 caractères.
Pour manipuler des fichiers, il peut être nécessaire de savoir si l’on se trouve à la fin du fichier.

Exemple avec l'affichage de la totalité des caractères contenus dans un fichier par les différentes fonctions présentées ci-dessus

Exemple d'écriture dans un fichier

Les opérations d’écriture et de lecture présentées précédemment modifiaient la position courante du fichier : en effet, suite à une lecture ou à une écriture, la position courante du fichier se trouve décalée. Il est donc nécessaire, dans certains cas, de modifier la position courante sans modifier le contenu du fichier, ou sans lire des données qui ne sont pas utiles au bon déroulement de l’application.

La valeur de retour indique si le déplacement a été bien effectué ou non. En utilisant cette fonction, on se déplace à la position précisée par position dans le fichier.
Attention on remarque que le premier caractère d’un fichier est à la position 0.
Attention les retours à la ligne sont considérés comme des caractères !
Un exemple de deplacement de la position courante

6-3-2 Manipulations de fichiers

Il existe d'autres fonctions "fichiers", qui elles, permettent de manipuler les fichiers : effacement, copie, test des droits...
Attention au système d'exploitation du serveur : tout n'est pas possible sous Windows95 ou Windows98!
De plus comme dans le cas de la création d’un fichier, il faut faire attention aux droits ainsi qu’au propriétaire ou au groupe du fichier : vous ne pouvez pas forcément changer les droits, renommer ou effacer tous les fichiers !

Exemple avec les différentes fonctions portant sur les fichiers

Evidemment, il existe d'autres fonctions. Elles sont décrites sur Manuel PHP

6-4 upload de fichiers

En PHP, on peut écrire un script pour que l'internaute puisse faire un "upload" de fichier, c'est à dire le télécharger.
Attention, donner une trop grande possibilité d’upload de fichiers sur un site risque de provoquer la saturation rapide de ce dernier !
On utilise ici le protocole HTTP et non pas FTP.

6-4-1 Choix du fichier côté client

L'internaute sélectionne le fichier à télécharger à l’aide d’un formulaire. Deux types de formulaires sont possibles :

Ce type de formulaire utilise un encodage "multipart/form-date", à voir dans la doc html

6-4-2 Gestion du côté serveur

Une fois le bouton submit pressé, le fichier est envoyé au serveur. Sur le serveur, Les différentes informations relatives au fichier sont contenues dans un tableau associatif nommé $_FILES . Si le nom de la variable issue du formulaire contenant le fichier est $fichier les entrées du tableau associatif sont : • $_FILES["fichier"]["name"] pour nom du fichier original sur la machine source; • $_FILES["fichier"]["type"] pour le type MIME du fichier; • $_FILES["fichier"]["size"] pour la taille en octets du fichier envoyé; • $_FILES["fichier"]["tmp_name"] pour le nom temporaire du fichier sur le serveur. • $_FILES["fichier"]["error"] qui retourne, si nécessaire le code d’erreur associé à l’opération Les codes d’erreurs associés à l’upload de fichier sont : • 0 - UPLOAD_ERR_OK aucune erreur • 1 - UPLOAD_ERR_INI_SIZE taille supérieure à celle précisée dans le fichier php.ini • 2 - UPLOAD_ERR_FORM_SIZE taille supérieure à MAX_FILE_SIZE précisée dans le formulaire html • 3 - UPLOAD_ERR_PARTIAL fichier partiellement téléchargé • 4 - UPLOAD_ERR_NO_FILE aucun fichier téléchargé • 6 - UPLOAD_ERR_NO_TMP_DIR dossier temporaire manquant • 7 - UPLOAD_ERR_CANT_WRITE échec d’écriture sur le disque On remarque que le fichier lorsqu’il «arrive» sur le serveur est «contenu» dans un fichier temporaire, il faudra copier ce fichier pour qu’il soit effectivement enregistré ! Une fois le fichier chargé sur le serveur, il est placé dans le répertoire temporaire défini par PHP. Attention le fichier temporaire est détruit dès la fin du script, il faut donc le copier en lui donnant, soit un nom particulier, soit son nom d’origine, mais dans ce cas attention aux collisions de noms ! Pour effectuer la copie du fichier temporaire, nous avons à notre disposition des fonctions spécifiques de PHP : bool move_uploaded_file ( string filename, string destination ) Afin de vérifier la validité du tranfert, une fonction est mise à notre disposition : bool is_uploaded_file ( string filename )

L'up load par developpez.com
header par comment ça marche
Des précisions sur header par alsacréations

Cliquer ici pour retourner à la page d'accueil