Aller au menu - Aller au contenu

Upload de fichiers par formulaire


Pour accéder à cette section
Connectez-vous !
connexion_rpx
Page Précédente  1  2  3  4  5  6  7  Suivante
Pseudo Commentaire
Page Précédente  1  2  3  4  5  6  7  Suivante
Hors ligne DHKold # Posté le 27/08/2008 à 14:05:33
Ex-Admin
Avatar

Ville : Leuze-en-hainaut
Pays : Belgique

Le seul moyen de vérifier de quel type est le fichier, c'est de le lire. EN effet rien ne m'empêche d'enregistrer un fichier PHP sous le nom "bouh.png".

Mieux, on peut même placer le code PHP après la code de l'image, ce qui fera que des fonctions comme getimagesize() ne poseront pas de problème (elle renverra les bonnes dimensions) mais il y a aurra toujours du code PHP dans le fichier. Ce genre de 'faille' devient dangereuse lorsqu'on peut amener l'execution du fichier en question (faille include par exemple).

Image utilisateur
Ouverture quand j'aurrai le temps :-°
----------
Pack DHemoticons (Utilisation Libre) : Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur
 
Hors ligne tologue # Posté le 27/08/2008 à 20:58:47
Avatar

études : Helmo Saint Laurent Sup'

Merci pour ta réponse. Qu'entends tu par "le lire"?

Sega Master System :D - Liège à découvrir - Champagne Gilles Menu
Buveur belge confirmé. Passez vos commandes de frites...
 
Hors ligne tologue # Posté le 31/08/2008 à 18:05:35
Avatar

études : Helmo Saint Laurent Sup'

Je tombe des nues! Il est extrêmement facile de contourner le getimagesize et la vérif d'extension! Après maints test (en local et sur mon site) l'image corrompue s'upload ni vu ni connu je t'embrouille. Néanmoins, le hasard fait plutot bien les choses car j'ai trouvé une parade légère et efficace: Créer une nouvelle image à partir de l'image uploadée puis effacer l'image temporaire. Pour l'instant Ca marche top!
Donc pas besoin de lire l'image, ce qui demanderait trop de ressource au serveur...

Edit: Ok, comme je le pensais, il faut utiliser les fonctions de la librairie GD pour une vérification fiable. Ex:imageCreateFromPNG(); retourne une chaine vide en cas d'échec. D'après mes tests, c'est imparrable (mais bon, je suis qu'un newbie, pas un hackeur chevroné).

Tu devrais vraiment insisté sur la sécu dans ton tuto et ne pas te contenté du getimagesize (vu que même moi, j'ai su me le faire :lol: ).

Sega Master System :D - Liège à découvrir - Champagne Gilles Menu
Buveur belge confirmé. Passez vos commandes de frites...
 
Hors ligne msz # Posté le 02/11/2008 à 00:52:07
Avatar

études : Université Paul Sabatier Toulouse

Très bon tuto, bien expliqué...

(juste une petite fauteCitation : DHKold
Par exemple, si on indique filename="PD6StdFR6011.rxr", voilà quoi pourrait ressembler la fenêtre de téléchargement:
ce n'est pas plutôt PD6StdFR6011.exe?)

Notepac design1 - design2
Image utilisateur
Image utilisateur
Image utilisateur
 
Hors ligne gefida # Posté le 05/11/2008 à 20:44:34
Avatar

Super tutoriel, il m'a vraiment permit de faire ce que je souhaitais, et j'ai très bien compris ce que j'ai fais, je pourrai donc le modifier, l'améliorer, l'adapter à loisir... Le fait de ne pas donner de script complet, et de détailler chaque point en fournissant des explication est vraiment très bien... Merci encore!
Hors ligne marc98 # Posté le 19/11/2008 à 17:34:16

Bonjour,

Merci pour ce tuto, il m'a bien aidé pour faire ce que je souhaitais.
Il ne me manque plus qu'à paufiner les derniers details pour avoir ce que je veus! (création de miniatures et modification du nom du fichier).
Hors ligne dan4 # Posté le 05/12/2008 à 05:26:55

Afficher le url de l'image ajouté?
quoi ajouter comme code?
Hors ligne mlb1 # Posté le 06/12/2008 à 21:57:48
Avatar

Merci pour ce superbe tuto, tout est très bien expliqué, rédigé et ficellé :)
Hors ligne mynfs # Posté le 07/12/2008 à 20:48:54
Addicté aux DIV
Avatar

Pour moi ça ne fonctionne pas. J'ai copié le code puis j'y ai apporté quelques modifications. Dites-moi si j'ai une erreur :
Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php

$index = 'fichier';
$destination = './uploaded/';
$maxsize = 524288;
$extensions = array('png','gif','jpg','jpeg');

$results = 'Réussi';

   // Test 1 : fichier correctement uploadé
     if (!isset($_FILES[$index]) OR empty($_FILES[$index]) OR $_FILES[$index]['error'] > 0)
		$results = 'Erreur au test 1';
   // Test 2 : taille limite
     if ($maxsize !== false AND $_FILES[$index]['size'] > $maxsize)
		$results = 'Erreur au test 2';
   // Test 3 : extension
     $ext = substr(strrchr($_FILES[$index]['name'],'.'),1);
     if ($extensions !== false AND !in_array($ext,$extensions))
		$results = 'Erreur au test 3';
   // Déplacement
     $nom = md5(uniqid(rand(), true));
     if (!move_uploaded_file($nom, $destination))
		$results = 'Erreur au déplacement';

echo $results;

?>


$results me retourne 'Erreur au déplacement'. Pourtant, le répertoire spécifié existe et mon CHMOD est à 733.
 
Hors ligne Matx # Posté le 18/12/2008 à 20:57:02
Demain il fera jour.
Avatar

Ville : Paris
Pays : France métropolitaine

Franchement : bravo ! Super tuto qui qui fait vivre un site ! Il manque juste une annexe sur les erreurs frequemment rencontrées, ce qui pourrait être très, très, très utile (j'ai galéré pour le faire marché moi :p ). Sinon un tuto (presque) parfait (j'ai eu du mal a suivre de temps en temps... )

18.5 -> 19

"En ce lieu, à cette époque, je t'ai désirée et tu n'étais pas là."
Albert Camus, La Peste.


"La vie semble plus légère quand on la prend du bon côté."
Mathieu Havard, Reflexions Personelles.
 
Hors ligne Stolos # Posté le 12/01/2009 à 18:33:47
Tous sur Espaces Infinis !
Avatar

J'ai suivi la démarche de ton tuto attentivement et le script que j'ai créé a fonctionné tout de suite. Je te félicite pour la clarté et la simplicité, c'est vraiment ce qu'on attends d'un tuto du SdZ : pas compliqué à comprendre, et beaucoup de choses utiles à retenir.

Encore félicitations ;)

Secret (cliquez pour afficher)
20/20

Image utilisateur


Espaces Infinis, nouveau jeu en ligne par navigateur avec création de vaisseaux et batailles au tour par tour.
 
Hors ligne lkaiman # Posté le 13/01/2009 à 10:28:14
Ais-je ce caractére ?!
Avatar

études : IUP GEII d'Amiens

Bon tuto, nous donen plein d'outil et nous force à nous débrouiller

cependant j'ai lutter longtemps sur un point que je ne comprenais pas, du moins pourquoi çà ne marchait pas, la fin de la partie 3 pour le move_upload_file

il faut indiquer en 3ieme argument le nom du fichier
Le premier étant le nom temporaire, et le 2ieme le nom du dossier

Un probléme -> Une solution -> Ctrl + Shift + Echapt
Image utilisateur Image utilisateur
 
Hors ligne Firnac # Posté le 25/01/2009 à 16:17:27

Merci beaucoup, sans toi j'aurai galèré ^^
Hors ligne SoupeurStar # Posté le 20/02/2009 à 20:49:13
Avatar

:euh: heuuuu chuis pas convaincu pour la partie sur le download, je sais pas comment faire meme apres avoir lu le tuto, c'est surment clair pour certain mais moi je suis larguer o_O
 
Hors ligne Mister-Flow # Posté le 21/02/2009 à 21:07:22
Avatar

Étant un immense paresseux, il serait souhaitable que tu nous passes la requête SQL pour les tables du "mini-espace membres". Ca serait vraiment cool !

Vive le SiteDuZero ! ;)
 
Hors ligne lukekraft # Posté le 25/02/2009 à 17:32:27

bonjour a tous ^^

dans un premier temps je voulai remercier HKold pour son tuto ...

j'ai suivi la demarche du tuto pour uploader des photos sur le serveur pour un site internet , sauf que les photos ne sont pas lisible apres avoir ete charger ...

quelqu'un peu me dire d'ou sa vien ?

je vous laisse mon code :
<?php
$_FILES['mon_fichier']['name']; //Le nom original du fichier, comme sur le disque du visiteur, (exemple: mon_icone.png).
$nom_fichier =$_FILES['mon_fichier']['name'];
$_FILES['mon_fichier']['type'] ; //Le type du fichier. Par exemple, cela peut être "image/png"
$_FILES['mon_fichier']['size'] ; //La taille du fichier en octets
$_FILES['mon_fichier']['tmp_name']; //L'adresse vers le fichier uploadé dans le répertoire temporaire
$fichier_tmp=$_FILES['mon_fichier']['tmp_name'];
$_FILES['mon_fichier']['error']; //Le code d'erreur, qui permet de savoir si le fichier a bien été uploadé
$taille_max = 5000000; // taille de limage max
$dest_fichier =$_POST['dossier']; //nom du dossier dans lequel sera intergrer la photo
//echo $dest_fichier;
?>
<?php
// pour le dossier dans lequel sera integerer la photo
if ($dest_fichier == "Mode")
{
$dest_fichier = './uploads/mode/';
}
else
{
$dest_fichier = './uploads/artistique/';
}
//echo $dest_fichier;
?>

<?php
if ($_FILES['mon_fichier']['error'] > 0) $erreur = "Erreur lors du tranfsert";
?>
<?php
if ($_FILES['mon_fichier']['size'] > $taille_max) $erreur = "Le fichier est trop gros";
?>
<?php
$extensions_valides = array( 'jpg' , 'jpeg' , 'gif' , 'png' );

$extension_upload = strtolower( substr( strrchr($_FILES['mon_fichier']['name'], '.') ,1) );
if ( in_array($extension_upload,$extensions_valides) ) echo "Extension correcte";
?>

<!-- la verife est faite on passe au deplacement du fichier -->

<?php

move_uploaded_file($fichier_tmp, $dest_fichier.$nom_fichier);

?>


merci a tous
Hors ligne Jakmaster # Posté le 02/05/2009 à 09:22:44
www.heuzef.com
Avatar

Ville : Bordeaux
Pays : France métropolitaine
études : Lignes & Formations

Beau tuto, cependant je n'est toujours pas eu satisfaction de mon coté après tant de recherche ...

A quand un bon tuto pour ajouter une barre de progression ? Cela ce révéle d'une difficulté assez violente, et je n'est pas tellement envie de refaire tous mon système d'upload en flash :euh:
Hors ligne angeredil # Posté le 18/05/2009 à 11:48:07
Patience est l'écho du temps
Avatar

Bjr,

Tuto sympa !

J'ai quand même une erreur :

Extension correcte
Warning: mkdir() [function.mkdir]: File exists in /home/www/reine/www/reine/form.php on line 109
Transfert réussi


Si quelqu'un à une idée.

Merci d'avance ! :)
Hors ligne DHKold # Posté le 28/05/2009 à 17:59:24
Ex-Admin
Avatar

Ville : Leuze-en-hainaut
Pays : Belgique

Jakmaster > Ca dépasse largement le cadre d'un tutoriel de PHP. Ca requiert du javascript et pour avoir réellement un système solide, il faut aussi régler le problème du 'nom temporaire', mais je ne m'éterniserez pas ici sur ce sujet. Si j'ai du temps (ce qui est loin d'être le cas pour l'instant), je ferai peut-être une annexe sur ce sujet.

angeredil > mkdir crée un dossier. L'erreur que tu recois indique qu'il existe déjà un dossier du même nom.

Image utilisateur
Ouverture quand j'aurrai le temps :-°
----------
Pack DHemoticons (Utilisation Libre) : Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur
 
Hors ligne said06000 # Posté le 04/06/2009 à 11:19:41

SAlut a tous j'ai suivi le tuto a la lettre et sa ne marche pas voila les erreurs afficher:
Warning: mkdir() [function.mkdir]: File exists in C:\wamp\www\isa\reception.php on line 130

Notice: Undefined variable: id_membre in C:\wamp\www\isa\reception.php on line 136

Warning: move_uploaded_file(avatars/.png) [function.move-uploaded-file]: failed to open stream: No such file or directory in C:\wamp\www\isa\reception.php on line 137

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\wamp\tmp\phpBA9.tmp' to 'avatars/.png' in C:\wamp\www\isa\reception.php on line 137

Voici le code de la page reception.php le meme que dans le tuto:

<?php
if ($_FILES['icone']['error'] > 0) $erreur = "Erreur lors du tranfsert";
$maxsize = 1048576;

if ($_FILES['icone']['size'] > $maxsize) $erreur = "Le fichier est trop gros";
$extensions_valides = array( 'jpg' , 'jpeg' , 'gif' , 'png' );
//1. strrchr renvoie l'extension avec le .
//2. substr(chaine,1) ignore le premier caractère de chaine
//3. strtolower met l'extension en minuscule
$extension_upload = strtolower( substr( strrchr($_FILES['icone']['name'], '.') ,1) );
if ( in_array($extension_upload,$extensions_valides) ) echo "Extension correcte";
$image_sizes = getimagesize($_FILES['icone']['tmp_name']);
if ($image_sizes[0] > $maxwidth OR $image_sizes[1] > $maxheight) $erreur = "Image trop grande";

//Créer un dossier 'fichiers/1/'
mkdir('fichier/1/', 0777, true);

//Créer un identifiant difficile à deviner
$nom = md5(uniqid(rand(), true));


$nom = "avatars/{$id_membre}.{$extension_upload}";
$resultat = move_uploaded_file($_FILES['icone']['tmp_name'],$nom);
if ($resultat) echo "Transfert réussi";
?>
Merci d'avance j'attends votre aide!
Hors ligne Minipipo1 # Posté le 12/07/2009 à 15:47:51
Le seul petit mensonge
Avatar

Ville : Malakoff
Pays : France métropolitaine

Voilà, j'ai utilisé la fonction upload() mais ça m'affiche cette erreur:
Parse error: syntax error, unexpected ',' in /homepages/23/d290251108/htdocs/liste_news.php on line 57

Voilà mon code:
Code : PHP
1
2
3
4
5
6
7
<?php
if (isset($_FILES['video']))
		{
			upload('video','video/' . $_POST['id_news'] . '/' . $_FILES['video']['name'] . ,15360, array ('wmv','wma','avi','mp3', 'mp4', 'mpg') ); // Confirmation de l'upload avec la fonction du tuto sur l'envoi de fichier par formulaire: http://www.siteduzero.com/tutoriel-3-37674-upload-de-fichiers-par-formulaire.html#ss_part_5
			mysql_query("INSERT INTO famille (id, titre, contenu, date, auteur, groupe) VALUES('', '" . $titre . "', '" . $texte . "', '" . date('d/m/Y') . "', '" . $auteur . "', '" . $famille . "', 'video/" . $_POST['id_news'] . "/" . $_FILES['video']['name'] . "')");
		}
?>


La ligne 57 est la ligne de l'appel de la fonction mais je ne trouve pas l'erreur, help please! :)

Image utilisateur
Super programme pour lire les codes web offline: LdZ codes offline
Connaître et monter son PC par AlBiNoSS, minipipo1, OujA et quentinb04
Le travail c'est super, ne sois pas égoïste, laisse le aux autres :)
 
Hors ligne Minipipo1 # Posté le 15/07/2009 à 14:41:36
Le seul petit mensonge
Avatar

Ville : Malakoff
Pays : France métropolitaine

Personne ?

Image utilisateur
Super programme pour lire les codes web offline: LdZ codes offline
Connaître et monter son PC par AlBiNoSS, minipipo1, OujA et quentinb04
Le travail c'est super, ne sois pas égoïste, laisse le aux autres :)
 
Hors ligne tishaton # Posté le 20/07/2009 à 09:54:06
Little Geek Sunshine ?!
Avatar

études : ESIGELEC

Yop,

Je pense que ça vient du '.' derrière le '$_FILES['video']['name']' si je ne me trompe pas... Essayes sans et donne le feedback.

++

Il n'y a pas d'évolution sans liberté d'essayer. [François Dalle]
Image utilisateur
 
Hors ligne tishaton # Posté le 20/07/2009 à 10:07:17
Little Geek Sunshine ?!
Avatar

études : ESIGELEC

Pour répondre à said06000:


Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
if ($_FILES['icone']['error'] > 0) $erreur = "Erreur lors du tranfsert";
$maxsize = 1048576;

if ($_FILES['icone']['size'] > $maxsize) $erreur = "Le fichier est trop gros";
$extensions_valides = array( 'jpg' , 'jpeg' , 'gif' , 'png' );
//1. strrchr renvoie l'extension avec le .
//2. substr(chaine,1) ignore le premier caractère de chaine
//3. strtolower met l'extension en minuscule
$extension_upload = strtolower( substr( strrchr($_FILES['icone']['name'], '.') ,1) );
if ( in_array($extension_upload,$extensions_valides) ) echo "Extension correcte";
$image_sizes = getimagesize($_FILES['icone']['tmp_name']);
if ($image_sizes[0] > $maxwidth OR $image_sizes[1] > $maxheight) $erreur = "Image trop grande";

//Créer un dossier 'fichiers/1/'
mkdir('fichier/1/', 0777, true);

//Créer un identifiant difficile à deviner
$nom = md5(uniqid(rand(), true));


$nom = "avatars/{$id_membre}.{$extension_upload}";
$resultat = move_uploaded_file($_FILES['icone']['tmp_name'],$nom);
if ($resultat) echo "Transfert réussi";
?>


Code : Console
Warning: mkdir() [function.mkdir]: File exists in C:\wamp\www\isa\reception.php on line 130

Ton fichier existe déjà ce qui n'est pas étonnant si tu as exécuté le script plus d'une fois, vu que le nom ne contient aucune variable (timestamp,id_md5...)

Code : Console
Notice: Undefined variable: id_membre in C:\wamp\www\isa\reception.php on line 136

Il semble que ta variable $id_membre n'ait pas été renseignée et puisque le nom dépend de cette variable ($nom = "avatars/{$id_membre}.{$extension_upload}";), le nom est incorrect et donc le script n'arrive pas à trouver ton fichier ce qu'il essaye de t'expliquer avec les messages d'erreurs suivants:
Code : Console
Warning: move_uploaded_file(avatars/.png) [function.move-uploaded-file]: failed to open stream: No such file or directory in C:\wamp\www\isa\reception.php on line 137

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\wamp\tmp\phpBA9.tmp' to 'avatars/.png' in C:\wamp\www\isa\reception.php on line 137


Je ne serai pas étonné que tu ais oublié de récupérer la variable $id_membre, par exemple avec un $id_membre=$_POST['id_membre'] (si la valeur est spécifiée dans le formulaire précédent)...

Il n'y a pas d'évolution sans liberté d'essayer. [François Dalle]
Image utilisateur
 
Hors ligne iMeee # Posté le 24/07/2009 à 13:13:39
It's me !
Avatar

Ville : Niort
Pays : France métropolitaine

Bien mais pas de protection, il est possible de renomer son fichier .php par exemple (avec du code malveillant) en .png. ...

Bref... Je vais bientôt distribuer le code d'un appli pour héberger des images sur SF, pour l'améliorer !

Coder est un art ...
Image utilisateur
 
Hors ligne DHKold # Posté le 24/07/2009 à 19:52:23
Ex-Admin
Avatar

Ville : Leuze-en-hainaut
Pays : Belgique

alex7995 > Ta remarque n'a aucun sens. J'explique clairement comment contrôler l'extension.

J'ignore ce qu'est "SF", mais mon tuto n'a pour objectif que d'être une introduction aux principes d'upload.

Image utilisateur
Ouverture quand j'aurrai le temps :-°
----------
Pack DHemoticons (Utilisation Libre) : Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur
 
Hors ligne Halbert # Posté le 26/07/2009 à 21:35:26

Bonjour
Est-il possible de permettre à un utilisateur qui a envoyé un fichier, de le supprimer ensuite ?
Merci
Albert
Hors ligne Minipipo1 # Posté le 19/08/2009 à 14:06:17
Le seul petit mensonge
Avatar

Ville : Malakoff
Pays : France métropolitaine

dsl pour le retard mais ça ne marche toujours pas

Image utilisateur
Super programme pour lire les codes web offline: LdZ codes offline
Connaître et monter son PC par AlBiNoSS, minipipo1, OujA et quentinb04
Le travail c'est super, ne sois pas égoïste, laisse le aux autres :)
 
Hors ligne cocode84 # Posté le 09/09/2009 à 20:48:40

Bonsoir,

Bien le tuto.

Tu peux nous dire comment copier le nom du fichier dans une base de données sans y envoyer le fichier avec ?
Hors ligne cocode84 # Posté le 14/09/2009 à 17:38:20

Problème résolu.
Pour accéder à cette section
Connectez-vous !
connexion_rpx