Manuel PHP

Table des matières

Préface
I. Au moment de commencer
II. Installation et configuration
III. Référence du langage
IV. Sécurité
V. Caractéristiques
VI. Référence des fonctions
VII. PHP et le moteur interne Zend
VIII. FAQ : foire Aux Questions
IX. Annexes
Remerciements



Chapitre 38. Gestion des chargements de fichiers

Chargements de fichiers par méthode POST

Cette fonctionnalité permet aux personnes de télécharger à la fois du texte et des fichiers binaires. Avec les fonctions d’identification et de manipulation de fichiers de PHP, vous avez le contrôle total pour définir qui a le droit de télécharger mais aussi ce qui sera fait du fichier une fois qu’il sera téléchargé.

PHP est capable de recevoir des fichiers émis par un navigateur conforme à la norme RFC-1867 (c’est-à-dire Netscape Navigator 3 ou supérieur, Microsoft Internet Explorer 3 avec un patch de Microsoft, ou supérieur sans le patch).

PHP supporte aussi le chargement par la méthode PUT comme dans le navigateur Netscape Composer et Amaya du W3C. Reportez-vous au chapitre sur le support de la méthode PUT.

Note : Assurez-vous que votre formulaire de téléchargement de fichier contienne “enctype=”multipart/form-data”“, sinon, le fichier se sera pas téléchargé.

“$_FILES[’userfile’][’name’]”

Le nom original du fichier, tel que sur la machine du client web.

“$_FILES[’userfile’][’type’]”

Le type MIME du fichier, si le navigateur a fourni cette information. Par exemple, cela pourra être ““image/gif”“. Ce type mime n’est cependant pas vérifié du côté de PHP et, donc, ne prend pas sa valeur pour se synchroniser.

“$_FILES[’userfile’][’size’]”

La taille, en octets, du fichier téléchargé.

“$_FILES[’userfile’][’tmp_name’]”

Le nom temporaire du fichier qui sera chargé sur la machine serveur.

“$_FILES[’userfile’][’error’]”

Le code d’erreur "error code" associé au téléchargement de fichier. Cet élément a été introduit en PHP 4.2.0

Exemple 38-2. Validation de téléchargement de fichiers Voyez aussi les fonctions is_uploaded_file() et move_uploaded_file() pour plus d’informations. L’exemple suivant va télécharger un fichier venant d’un formulaire.

<?php 
// En PHP < 4.1.0, $HTTP_POST_FILES doit être utilisé 
//    à la place de $_FILES.
 
$uploaddir = '/var/www/uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
 
echo '<pre>';
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
    echo "Le fichier est valide, et a été téléchargé 
           avec succès. Voici plus d'informations :\n";
} else {
    echo "Attaque potentielle par téléchargement de fichiers. 
          Voici plus d'informations :\n";
}
 
echo 'Voici quelques informations de débogage :';
print_r($_FILES);
 
echo '</pre>';
 
?>

Le script PHP qui reçoit le fichier chargé doit pouvoir gérer le fichier de manière appropriée. Vous pouvez utiliser la variable “$_FILES[’userfile’][’size’]” pour recaler tous les fichiers qui sont trop gros ou trop petits. Vous pouvez utiliser la variable “$_FILES[’userfile’][’type’]” pour écarter les fichiers qui n’ont pas le bon type, mais l’utiliser uniquement pour une série de vérifications, car cette valeur est complètement sous le contrôle du client et n’est pas vérifiée du côté de PHP. Depuis PHP 4.2.0, vous pouvez utiliser l’information dans “$_FILES[’userfile’][’error’]” et adapter votre politique en fonction des codes d'erreur. Quelque soit votre politique, vous devriez soit effacer le fichier du dossier temporaire, soit le déplacer.

Si aucun fichier n’est sélectionné dans le formulaire, PHP retournera “0” dans “$_FILES[’userfile’][’size’]” et rien du tout dans “$_FILES[’userfile’][’tmp_name’]”.

Le fichier sera automatiquement effacé du fichier temporaire à la fin du script, s’il n’a pas été déplacé ou renommé.

Travail collaboratif

Contribuez, en ajjoutant des elements a cette page de manuel :

Merci de votre aide
L’equipe Php.fr

 


Index | Afficher le texte source | Anciennes révisions | Derniers changements | Connexion
©2007 Wiki Copyright