Créée le, 19/06/2015

 Mise à jour le, 19/05/2019

Visiteurs N°  




Accueil
Nouveau Blog Nouveautés Moteur de Recherche Votre Caddie Pour Vos Achats Votre Espace Membre Vos Signets et Vos Jeux Préférés Page de Bienvenue Statique Site en Français Site en Anglais
Sommaires
Électronique Fondamentale Technologie Fondamentale Testez vos Connaissances Électronique Théorique Digitale Électronique Pratique Digitale Lexique Électronique Numérique Data book TTL Data book CMOS Dépannage TVC Mathématique
Micro-ordinateurs
Théorique des Micro-ordinateurs Testez vos Connaissances Pratique des Micro-ordinateurs Glossaires sur les Ordinateurs
Physique
La lumière Champ d'action Rayonnement Électromagnétique
Technologies
Classification des Résistances Identification des Résistances Classification des Condensateurs Identification des Condensateurs
Formulaires Mathématiques
Géométrie Physique 1. - Électronique 1. 2. - Électronique 1. 3. - Électrotechnique 1. 4. - Électromagnétisme
Accès à tous nos Produits
E. T. F. - Tome I - 257 Pages E. T. F. - Tome II - 451 Pages E. T. F. - Tome III - 611 Pages E. T. D. - Tome I - 610 Pages N. B. M. - Tome I - 201 Pages E. T. M. - Tome I - 554 Pages Business à Domicile Ouvrages 34 pages gratuits Nos E-books Logiciel Géométrie Logiciel Composants Électroniques
Aperçu de tous nos Produits
E. T. F. - Tome I - 257 Pages E. T. F. - Tome II - 451 Pages E. T. F. - Tome III - 611 Pages E. T. D. - Tome I - 610 Pages E. T. M. - Tome I - 554 Pages Logiciel Géométrie Logiciel Composants Électroniques
Nos Leçons aux Formats PDF
Électronique Fondamentale Technologie Fondamentale Électronique Théorique Digitale Électronique Pratique Digitale Théorique des Micro-ordinateurs Mathématiques
Informatique
Dépannage Win98 et WinXP et autres Dépannage PC Glossaire HTML et Programmes PHP et Programmes JavaScript (en cours de travaux) Création de plusieurs Sites
Forums
Forum Électronique et Infos Forum Électronique et Poésie
Divers et autres
Formulaire des pages perso News XML Statistiques CountUs Éditeur JavaScript Nos Partenaires et nos Liens Utiles Gestionnaire de Partenariat Nos Partenaires MyCircle Sondages 1er Livre d'Or 2ème livre d'Or

Signets :
  Leçons suivantes        Leçons précédentes     Bas de page
  Cliquez ici pour la leçon suivante ou dans le sommaire prévu à cet effet


Interaction avec le système de fichiers et le serveur (1ère partie) :



Téléchargement de fichiers vers le serveur avec PHP :


Dans la deuxième leçon, en cliquant ici, "Stockage et récupération des commandes de chez Jean-Pierre", nous avons examiné la manière de lire et d'écrire des données dans des fichiers stockés sur le serveur Web. Dans cette leçon, nous étudierons d'autres fonctions PHP permettant d'interagir avec le système de fichiers du serveur Web.

Nous illustrerons l'étude de ces fonctions par des exemples. Considérons la situation où un site doit être implémenté de sorte que ses visiteurs puissent mettre à jour son contenu (par exemple pour actualiser les informations concernant leur entreprise, ou pour disposer par vous-même d'une interface plus conviviale que FTP) : FTP signifie Fichier Transfert Protocole. Pour une telle implémentation, nous pouvons adopter l'approche consistant à laisser le client télécharger les fichiers vers le serveur sous forme de plein texte ou images selon vos besoins. Le contenu de ces fichiers pourra ensuite être consulté via un modèle conçu et élaboré en PHP, à la manière du modèle de page Web décrit à la sixième leçon, en cliquant ici, "Programmation orientée objets" (1ère et 2ème partie).

Avant de nous lancer dans l'étude des fonctions de manipulation du système de fichiers, nous allons brièvement nous arrêter sur le processus de téléchargement de fichier vers un serveur.

Introduction au téléchargement de fichiers vers un serveur :

Le support du téléchargement HTTP vers un serveur est une fonctionnalité de PHP très utile. Dans ce processus de téléchargement, les fichiers sont transmis du navigateur au serveur via HTTP, c'est-à-dire dans le sens opposé d'un téléchargement de fichier classique. Le téléchargement vers un serveur est généralement implémenté avec une interface de formulaire HTML. Dans l'exemple considéré ici, nous utiliserons l'interface montrée à la figure 1.


Uploader_Image.png

Comme vous pouvez le constater sur la figure 1, le formulaire comprend une zone d'envoi dans laquelle l'utilisateur peut chosir le nom du fichier à télécharger vers le serveur, ainsi qu'un bouton Browse (Parcourir) permettant de parcourir les fichiers disponibles localement. Vous découvrez peut-être ce type de formulaire de téléchargement. Nous verrons d'ici peu comment l'implémenter.

Une fois qu'il a choisi un nom du fichier dans la fenêtre d'envoi du fichier, l'utilisateur peut cliquer sur le bouton Send File (Envoi du fichier) pour lancer le téléchargement du fichier vers le serveur, où l'attend un script PHP.

Codage HTML pour un téléchargement de fichier vers un serveur :

L'implémentation d'un téléchargement de fichier vers un serveur implique une syntaxe HTML spécialement conçue à cette fin. Le code HTML du formulaire montré à la figure 1 est donné dans le Listing 1.

Listing 1. - Upload.html - Formulaire HTML pour le téléchargement de fichiers vers un serveur :

Notez que c'est la méthode POST qui est employée dans ce formulaire. Par contre, la méthode GET ne convient pas à l'implémentation de ce processus.

Ce formulaire présente les particularités suivantes :

Petite_Main.gif  Dans la balise <FORM>, l'attribut ENCTYPE = "MULTIPART/FORM-DATA" doit être ajusté de la sorte pour que le serveur soit prévenu qu'un fichier lui est envoyé en sus des informations normales relatives au formulaire.

Petite_Main.gif  Un champ de formulaire doit être utilisé pour définir la taille maximale de fichier qui peut être téléchargée. Ce champ est caché et est défini de la manière suivante :

    <INPUT TYPE = "HIDDEN" NAME = "MAX_FILE_SIZE" VALUE = "307200">

Ce champ de formulaire doit impérativement porter le nom MAX_FILE_SIZE. L'attribut VALUE fixe une limite à la taille (en octets) des fichiers que les Internautes seront autorisés à télécharger vers le serveur. La valeur est fixée à 307 200 octets ce qui correspond à 300 Ko.

Petite_Main.gif  Un INPUT de TYPE FILE doit être spécifié comme suit :

    <INPUT TYPE = "FILE" NAME = "fichier">

Vous êtes libre de choisir la valeur de l'attribut NAME (le nom du fichier) qui vous convient. Gardez toutefois à l'esprit que vous devez mémoriser cette valeur, puisque vous l'utiliserez ultérieurement pour accéder au fichier à partir du script PHP de réception.

Écriture du code PHP pour le traitement d'un fichier téléchargé :

L'écriture du code PHP permettant de récupérer et de traiter le fichier télécharger par l'utilisateur est assez facile.

Lorsqu'un fichier est téléchargé vers un serveur, il est stocké dans un emplacement temporaire du serveur Web, et plus précisément dans le dossier temporaire par défaut du serveur. Si vous ne déplacez pas ou ne renommez pas le fichier avant la fin de l'exécution de votre script, le fichier sera supprimé de cet emplacement temporaire.

En partant du principe que le formulaire HTML comprend un champ appelé fichier, quatre variables sont finalement passées à l'interpréteur PHP :

Petite_Main.gif  La valeur contenue dans $_FILES ['fichier'] ['tmp_name'] indique l'emplacement temporaire de stockage du fichier sur le serveur Web.

Petite_Main.gif  La valeur contenue dans $_FILES ['fichier'] ['name'] est le nom du fichier dans le système de l'utilisateur.

Petite_Main.gif  La valeur contenue dans $_FILES ['fichier'] ['size'] est la taille du fichier en octets.

Petite_Main.gif  La valeur contenue dans $_FILES ['fichier'] ['type'] est le type MIME du fichier, par exemple TEXT/PLAIN ou image/gif, ou image/jpg ou image/jpeg et ainsi de suite.

Vous pouvez accéder à ces variables par le biais du tableau $HTTP_POST_FILES, mais ce dernier est obsolète et nous allons plutôt nous servir de la variable $_FILES de la manière suivante :

Notez : Ceci est une 'superglobale', ou variable globale automatique. Cela signifie simplement que cette variable est disponible dans tous les contextes du script. Il n'est pas nécessaire de faire ou de notifier global $variable pour y accéder soit dans les fonctions ou soit dans les méthodes.

Introduction de $_FILES, rendant obsolète $HTTP_POST_FILES.

    $_FILES['fichier']['tmp_name'] ;

    $_FILES['fichier']['name'] ;

    $_FILES['fichier']['size'] ;

    $_FILES['fichier']['type'] ;

Puisque nous connaissons l'emplacement de stockage et le nom du fichier, nous pouvons le copier, en un emplacement plus utile. A la fin de l'exécution du script, le fichier temporaire sera supprimé. Par conséquent, pour conserver le fichier, il est impératif de le déplacer ou de le renommer.

Dans l'exemple considéré ici, les fichiers téléchargés seront utilisés comme articles récents dans un forum de discussion. Par conséquent, nous éliminerons toute balise éventuellement contenue dans les fichiers téléchargés, et nous placerons ceux-ci dans un dossier plus approprié. Le script accomplissant ce traitement est donné au Listing 2.

Listing 2. - Upload.php - Script permettant de récupérer les fichiers envoyés via le formulaire HTML du Listing 1 :


Important : Vous devez créer un répertoire nommé Upload à la racine de votre serveur, sinon, ce script ne peut fonctionner.

Il est intéressant de constater que l'essentiel de ce script consiste en tests d'erreur. Le téléchargement de fichiers vers un serveur présente des risques de sécurité, qui doivent être réduits au minimum. Le fichier téléchargé doit être testé le plus soigneusement possible, de sorte à s'assurer qu'il est sans danger.

Examinons les différentes sections qui composent ce script :

Tout d'abord, le contenu de la variable $Fichier_Temporaire est testé, pour déterminer si le fichier est bien chargé. Sinon, on affiche un message d'erreur ou lorsque la taille du fichier est trop importante, en déterminant dans le formulaire HTML et en insérant le code <INPUT TYPE = "HIDDEN" NAME = "MAX_FILE_SIZE" VALUE = "307200"> qui représente 300 Ko. Bien sûr, vous pouvez modifier la taille du fichier à télécharger, le cas échéant.

Ensuite, ce script détermine si le fichier qui doit être ouvert a réellement été téléchargé, et s'il ne s'agit pas d'un fichier local tel que /etc/livre/password. Nous reviendrons sur ce point un peu plus loin de cette leçon.

Si tous ces tests sont effectués avec succès, le fichier est copié dans le dossier consacré aux fichiers "include". Dans le cas présent, ce dossier est défini par le chemin d'accès Upload/, qui est situé hors de l'arborescence de document Web, et constitue par conséquent une bonne place pour stocher des fichiers à inclure par exemple..

Le fichier est ensuite ouvert, nettoyé de ses éventuelles balises HTML ou PHP au moyen de la fonction (preg_match('#[\x00-\x1F\x7F-\x9F/\\\\]#', $Nom_du_Fichier)).

Pour finir, le contenu du fichier ou plutôt le nom est affiché dans le navigateur de l'utilisateur, pour que celui-ci soit informé que le téléchargement s'est bien déroulé.

Le résultat de l'exécution de ce script est montré à la figure 2.


Uploader_Image_2.png

Pour visualiser l'aperçu, en cliquant ici. [Exemple 1].

Pour nous prémunir contre un piratage, le script donné au Listing 2 utilise la fonction is_uploaded_file() pour vérifier que le fichier en cours de traitement, a bien été téléchargé et n'est pas un fichier local tel que /etc/passwd. Cette fonction doit figurer dans la version 4.0.3 de PHP. C'est pourquoi nous avons utilisé ici le code donné en exemple pour cette fonction de cette leçon.

Si votre script de gestion du téléchargement n'a pas été écrit avec suffisamment de prudence, il risque de se trouver aux prises avec un visiteur malin, qui lui fournira son propre nom de fichier temporaire, et le convaincra de traiter ce fichier comme s'il s'agissait d'un fichier téléchargé. Étant donné que la plupart des scripts de téléchargement vers un serveur affichent en retour à l'utilisateur les données téléchargées, ou les stockent en un emplacement à partir duquel ces données pourront être chargées, cette faille peut permettre à des intrus d'accéder à tous les fichiers lisibles par le serveur. Parmi les fichiers exposés au danger peuvent figurer des fichiers très sensibles tels que /etc/passwd, et du code source PHP contenant des mots de passe vers la base de données.

Dans l'exemple précédent, il était supposé que les utilisateurs avaient subi une authentification en amont. Vous devez éviter de laisser tout un chacun télécharger des fichiers vers votre site.

Si vous autorisez malgré tout des utilisateurs non authentifiés à télécharger des fichiers vers votre serveur, vous avez tout intérêt à vous montrer plutôt paranoïaque concernant le contenu de ces fichiers. Vous devez ainsi absolument empêcher qu'un script puisse être téléchargé et exécuté sur votre serveur. Vous devez donc vous montrer prudent non seulement avec le type et le contenu du fichier, comme dans l'exemple considéré ici, mais également avec le nom du fichier. Il est conseillé de renommer les fichiers téléchargés avec des noms inoffensifs.

Nous verrons à la fin de cette leçon, comment exécuter des programmes sur le serveur à partir d'un script PHP.

Nous terminons ainsi ce premier chapitre de cette leçon et nous verrons dans le prochain, L'utilisation de fonctions de manipulation de dossiers, Création et suppression de dossiers



  Cliquez ici pour la leçon suivante ou dans le sommaire prévu à cet effet.   Haut de page
  Page précédente   Page suivante







Nombre de pages vues, à partir de cette date : le 23 MAI 2019

compteur de visite

    




Envoyez un courrier électronique à Administrateur Web Société pour toute question ou remarque concernant ce site Web. 

Version du site : 10. 5. 14 - Site optimisation 1280 x 1024 pixels - Faculté de Nanterre - Dernière modification : 19 MAI 2019.   

Ce site Web a été Créé le, 14 Mars 1999 et ayant Rénové, en MAI 2019.