FORUM Syndrome-OC - Jacky-PC


  Programmation


  Langage interprété(Php, Perl...)


  reglementer un upload par formulaire

 




ced-2k, 1 utilisateur anonyme et 7 utilisateurs inconnus

 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

reglementer un upload par formulaire

n°1461
fscalda
Posté le 27-01-2004 à 13:34:33  profilanswer
 

Bonjour,
 
je cherche à bloquer les uploads autre que gif ou jpeg dans mon formulaire, mais je ne sais pas comment faire.
 
Je vous mets mon code :
 

Code :
  1. mysql_connect($dbhost,$dblogin,$dbpassword);
  2. mysql_selectdb($dbname);
  3. //variable nom email telephone portable lieu pays titre message file
  4. $date = date ("Y-m-d" );
  5. $query = "INSERT INTO test(date,nom, email, telephone, portable, lieu, pays, titre, message, aFile)
  6. VALUES(NOW(),'".$nom = addslashes($_POST['nom'])."','".$email = addslashes($_POST['email'])."','".$telephone = addslashes($_POST['telephone'])."','".$portable = addslashes($_POST['portable'])."','".$lieu = addslashes($_POST['lieu'])."','".$pays = addslashes($_POST['pays'])."','".$titre = addslashes($_POST['titre'])."' ,'".$message = addslashes($_POST['message'])."', '".$aFile = addslashes($_FILES['aFile']['name'])."' )";
  7. //
  8. //
  9. //
  10. //
  11. $nouveau_chemin = 'stockage/';
  12. move_uploaded_file($_FILES['aFile']['tmp_name'], $nouveau_chemin.$_FILES['aFile']['name']);
  13. //
  14. $res=mysql_query($query) or die(mysql_error());
  15. echo 'merci beaucoup, vos infos ont été enregistrées.';
  16. mysql_close();
  17. }
  18. ?>


Message édité par fscalda le 27-01-2004 à 13:35:09
mood
Google
Posté le 27-01-2004 à 13:34:33  profilanswer
 

n°1465
fscalda
Posté le 27-01-2004 à 13:47:48  profilanswer
 

désolé, le code qui marche c'est celui, l'autre n'upload rien
 

Code :
  1. mysql_connect($dbhost,$dblogin,$dbpassword);
  2. mysql_selectdb($dbname);
  3. //  
  4. //variable nom email telephone portable lieu pays titre message
  5. $date = date ("Y-m-d" );
  6. $query = "INSERT INTO test(date,nom, email, telephone, portable, lieu, pays, titre, message, aFile)
  7. VALUES(NOW(),'".$nom = addslashes($_POST['nom'])."','".$email = addslashes($_POST['email'])."','".$telephone = addslashes($_POST['telephone'])."','".$portable = addslashes($_POST['portable'])."','".$lieu = addslashes($_POST['lieu'])."','".$pays = addslashes($_POST['pays'])."','".$titre = addslashes($_POST['titre'])."' ,'".$message = addslashes($_POST['message'])."', '".$aFile = addslashes($_FILES['aFile']['name'])."' )";
  8. //
  9. //
  10. //
  11. $nouveau_chemin = 'stockage/';
  12. move_uploaded_file($_FILES['aFile']['tmp_name'], $nouveau_chemin.$_FILES['aFile']['name']);
  13. //
  14. //
  15. $res=mysql_query($query) or die(mysql_error());
  16. //texte de fin  
  17. //rajouter plutot un lien vers une page
  18. echo 'merci beaucoup, vos infos ont été enregistrées.';
  19. mysql_close();
  20. }

n°1470
xstephx
Sarah!
Posté le 27-01-2004 à 14:23:03  profilanswer
 

Code :
  1. $extension = end(explode(".", $aFile));
  2.   if(eregi("gif|jpeg", $extension)) {
  3.     #continuer le script
  4.     }


 
ça c'est si ta variable désignant le nom du fichier s'appelle $aFile par exemple...
 
là où il est mis #continuer le script tu insères tout ce qui doit être fait (upload, déplacement du fichier, etc).
 
La solutyion la plus élégante serait de faire une fonction de check d'extension, un peu comme ci-dessus, et d'appeler cette fonction dans le script du style  
if (check_extension($ton_fichier)) { #faire ceci, celà }
 
;)


---------------
Gagnez un iPhone en jouant sur www.findupays.be
n°1473
fscalda
Posté le 27-01-2004 à 15:12:32  profilanswer
 

je te remercie, au debut j'avais tenter un truc dans le genre :
 

Code :
  1. // vérifie l'existence du répertoire de destination  
  2.    if (!is_dir($destination_dir)) {
  3.      echo 'Veuillez indiquer un répertoire destination correct !';
  4.      die(); 
  5.    }
  6.    // vérifie que répertoire de destination a des droits en écriture  
  7.    if (!is_writeable($destination_dir)) {
  8.      echo 'Veuillez spécifier des droits en écriture pour le répertoire destination !';
  9.      die();     
  10.    }   
  11.    
  12.    // réception du formulaire  
  13.    if (isSet($_POST['submitFile'])) {
  14.      // vérifie qu'un fichier a bien été soumis  
  15.      if (isSet($_FILES) && is_array($_FILES)) {
  16.    
  17.        // pas d'erreur lors de l'upload  
  18.        if ($_FILES['aFile']['error'] == UPLOAD_ERR_OK) {
  19.          
  20.          // vérifie la taille en octets  
  21.          if ($_FILES['aFile']['size'] <= $file_max_size) {
  22.            // vérifie l'extension du fichier recu  
  23.            // il est aussi possible (et sans doute mieux) de se baser sur $_FILES['aFile']['type']  
  24.            // qui retourne le type MIME correspondant (par exemple: image/pjpeg)           
  25.            $lastPos = strRChr($_FILES['aFile']['name'], "." );
  26.            if ($lastPos !== false && in_array(strToLower(subStr($lastPos, 1)), $authorized_extensions)) {
  27.    
  28.              // définit un nom de fichier destination unique à partir du nom du fichier original formaté  
  29.              $destination_file = time().formatFileName($_FILES['aFile']['name']);


 
mais je n'ai pas compris, ça ne marchait pas.
Au cas ou, je vais quand même mettre un .htacces dans le repertoire ou sont uploader les photos.
 
Merci pour ton aide, je risque de revenir t'embeter  :hello:

n°1474
xstephx
Sarah!
Posté le 27-01-2004 à 15:31:22  profilanswer
 

lol, y'a pas de problème, j'ai de toute façon rien à faire de mes journées depuis la fin des exams ;)


---------------
Gagnez un iPhone en jouant sur www.findupays.be
n°1479
Deadog
Dain Bramaged
Posté le 27-01-2004 à 16:58:24  profilanswer
 

fais plutôt une vérification avec les fonctions de type mime

n°1480
Dr Lous
I see old password
Posté le 27-01-2004 à 17:11:55  profilanswer
 

avec getimage ou je sais plus koi, attender je vais chercher mon code....
 

Code :
  1. function check_extension($file)
  2. {
  3. global $extension;
  4. $extension=explode('.',$file);
  5. $extension=strtolower($extension[count($extension)-1]);
  6. if ($extension == "jpg" || $extension == "jpeg" )
  7.  {
  8.  return true;
  9.  }
  10. }
  11. if (!check_extension($fichier_uploader)) {die("Tss Tss pas bon format";}


 
 

Code :
  1. $img = @getimagesize($userfile);
  2. if (!isset($img) || $img == 0) {die("Tss Tss pas bon format";}


 
le premier, verifie l'extension, le deuxieme verifie les balises GIF  , JPG  , PNG  , SWF  , PSD  ou BMP, et retourne 0 si ce n'est pas correcte, sinon il retourne un tableau avec la taille (l et h) et le format, ainsi k'une chaine prete pour l'html


---------------
Oseras-tu m'affronter ?
n°1491
xstephx
Sarah!
Posté le 27-01-2004 à 21:35:46  profilanswer
 

lous ds lep remier tu px remplacer
     if ($extension == "jpg" || $extension == "jpeg" )  
par
     if(eregi("jpg|jpeg", $extension))
 
sinon c'est exactement ce que j'avais epxliqué : une fonction bien propre pour checker, puis un appel à cette fct :)


---------------
Gagnez un iPhone en jouant sur www.findupays.be
n°1493
Dr Lous
I see old password
Posté le 27-01-2004 à 21:52:08  profilanswer
 

wee faut voir nivo temps d'execution ;)


---------------
Oseras-tu m'affronter ?
n°1494
xstephx
Sarah!
Posté le 27-01-2004 à 23:10:58  profilanswer
 

le problème c que les machines actuelles sont trop puissantes pour qu'on puisse vraiment détecter une différence à un tel niveau... et à vrai dire je crois pas disposer de machines de test assez peu puissantes :lol: :lol:


---------------
Gagnez un iPhone en jouant sur www.findupays.be
n°1511
ced-2k
TODO : Insert text here.
Posté le 28-01-2004 à 02:07:30  profilanswer
 

fais une boucle qui appelle 1000x chaque fonction la tu pourra comparer ;)

n°1513
Dr Lous
I see old password
Posté le 28-01-2004 à 16:22:12  profilanswer
 

;)
j'ai un 300Mhz pour faire les test ^^ 500Bogomips [:dslam]


---------------
Oseras-tu m'affronter ?
n°1533
fscalda
Posté le 29-01-2004 à 14:43:51  profilanswer
 

vais voir ça, j'ai des morceaux de code partout qu'il faut que j'ameliore .

mood
Google
Posté le 29-01-2004 à 14:43:51  profilanswer
 


Aller à :
Ajouter une réponse

  FORUM Syndrome-OC - Jacky-PC


  Programmation


  Langage interprété(Php, Perl...)


  reglementer un upload par formulaire

 

Hit Parade