uploader DES fichierS en PHP

Eléphant du PHP | 76 Messages

06 nov. 2005, 18:01

Salut !

J'ai bien suivi le tuto (http://www.phpfrance.com/tutoriaux/inde ... e-fichiers).
Seulement le premier des 2 fichiers est bien uploadé mais pas le second... En effet il n'est traité nul part dans la seconde partie. Faut-il reprendre une 2e fois tout le code ?
Comment faire ?
Merci.
Modifié en dernier par Gakman le 06 nov. 2005, 18:06, modifié 1 fois.
@++
Gakman
-> http://gakman.free.fr

Eléphant du PHP | 76 Messages

06 nov. 2005, 18:01

Voilà le code de mes pages :
page de post :
<form action="index.php?lang=<?=$_GET['lang']?>&rub=post_rez&jeu=<?=$_GET['jeu']?>" method="post" enctype="multipart/form-data" id="post_script" name="post_script">
<input type="hidden" name="MAX_FILE_SIZE" value="83886080" />
<fieldset>
<p class="base_Rouge">S&eacute;lectionnez le(s) fichier(s) que vous voulez envoyer :<br />
<label for="fichier">Fichier : </label><input id="fichier" name="fichier" type="file" size="40" /><br />
<label for="fichier_2">Fichier : </label><input id="fichier_2" name="fichier_2" type="file" size="40" /><br />
</p>
</fieldset>

<p>Cliquez sur le bouton suivant pour valider et attendez le chargement complet de la page suivante qui peut prendre de nombreuses minutes suivant votre vitesse de connexion à Internet et la taille du fichier envoyé.</p>
<p><input name="post_submit" id="post_submit" type="submit" value="Valider" /></p>
</form>
page de traitement des fichiers :
if(isset($_FILES['fichier'])){
unset($erreur);
$extensions_ok = array('avi', 'mpg', 'mpeg', 'divx', 'mp3', 'wma', 'png', 'gif', 'jpg', 'jpeg', 'zip', 'rar', '7z', 'tar', 'vmi', 'vms', 'ddc');
//faille sécu ici -> voir PHPfrance pour le "denied extensions" à la place
$taille_max = 83886080;

if( !in_array( substr(strrchr($_FILES['fichier']['name'], '.'), 1), $extensions_ok ) )
 {$erreur = 'Veuillez sélectionner un fichier de type zip, rar, 7z, tar, png, gif, jp(e)g, mp3, wma, avi, mpg, mpeg, divx, vmi, vms ou ddc !';}
elseif( file_exists($_FILES['fichier']['tmp_name']) and filesize($_FILES['fichier']['tmp_name']) > $taille_max)
 {$erreur = 'Votre fichier doit faire moins de 80Mo !';}

if(!isset($erreur))  {
$dest_dossier = $dossier_j."/".$dossier_s_new."/";
$dest_fichier = basename($_FILES['fichier']['name']);
$dest_fichier = strtr($dest_fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier);
move_uploaded_file($_FILES['fichier']['tmp_name'], $dest_dossier.$dest_fichier);
}
else {echo '<p class="titre">Attention !</p><br />'.$erreur;}
}
@++
Gakman
-> http://gakman.free.fr

el_diablo
Invité n'ayant pas de compte PHPfrance

06 nov. 2005, 18:16

Personnellement, j'ai utiliser le tuto mais j'ai supprimer le 2em envoi.
Mais je pense qu'il faut copier une 2eme fois le bout de code ou alors il y a un autre moyen mais étant debutant j ne t'aiderais pas beaucoup. :?

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

06 nov. 2005, 18:21

tu peut soit (dans ton cas précis puisque tu as donné 2 noms différents au champ file) refaire appel a ton code en remplaçant tous les
$_FILES['fichier'] par $_FILES['fichier_2']

soit renomer les champs avec []:
<input id="fichier" name="fichier" type="file[]" size="40" />
tu récupère donc :
echo $_FILES['fichier']['name'][0];//nom du 1er fichier
echo $_FILES['fichier']['name'][1];//nom du 2eme fichier
et tu inclus ton code dans une boucle foreach() ou alors tu compte le nombre d'éléments du tableau count($_FILES['fichier']['name'])(dépend si tous les champs file sont remplis ou pas).

si ça te parle tout ça c'est une solution :wink:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 76 Messages

06 nov. 2005, 18:44

à quel champ je dois mettre [] ? plutôt à id ou name non ?
si je le mets à file le bouton parcourir disparaît.

Le count($_FILES['fichier']['name']) je le mets où ? (je pense que c'est ce qu'il faut utiliser puisque tous les champs d'envoi de fichiers ne seront pas forcément utilisés).

Comme je souhaiterais mettre plus de 2 champs d'envoi de fichiers il me faut trouver un système de boucle plutôt que de remettre 36 fois le code php.
@++
Gakman
-> http://gakman.free.fr

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

06 nov. 2005, 19:01

je me suis planté dans l'attribution des [] #-o
<input id="fichier" name="fichier[]" type="file" size="40" />
ensuite le count() tu le place lors de la récupération, tu teste si le formulaire a été validé avec un isset comme tu l'a fait:
if(isset($_FILES['fichier']))
{
   $total=count($_FILES['fichier']['name']);

   for($i=0; $i <$total;$i++)
   {
      //ici code d'upload
      // tu travaile avec ce genre de variable
      $_FILES['fichier']['name'][$i]
   }
}

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 76 Messages

06 nov. 2005, 19:51

je reçois systématiquement que mon fichier n'est pas dans le bon format (le message d'erreur : "veuillez sélectionner...") :(
<form action="index.php?lang=<?=$_GET['lang']?>&rub=post_rez&jeu=<?=$_GET['jeu']?>" method="post" enctype="multipart/form-data" id="post_script" name="post_script">

<input type="hidden" name="MAX_FILE_SIZE" value="83886080" />
<fieldset>
<p class="base_Rouge">S&eacute;lectionnez le(s) fichier(s) que vous voulez envoyer :<br />
<? for($i=1;$i<=20;$i++){echo'
Fichier '.$i.' : <input id="fichier[]" name="fichier[]" type="file" size="40" /><br />';} ?>
</p>
</fieldset>

<p>Cliquez sur le bouton suivant ("Valider") pour valider et attendez le chargement complet de la page suivante qui peut prendre de nombreuses minutes suivant votre vitesse de connexion à Internet et la taille du fichier envoyé.<br />
<input name="post_submit" id="post_submit" type="submit" value="Valider" /></p>
</form>
et le fichier de traitement :
if(isset($_FILES['fichier'])){
unset($erreur);
$extensions_ok = array('avi', 'mpg', 'mpeg', 'divx', 'mp3', 'wma', 'png', 'gif', 'jpg', 'jpeg', 'zip', 'rar', '7z', 'tar', 'vmi', 'vms', 'ddc');
//faille sécu ici -> voir PHPfrance pour le "denied extensions" à la place
$taille_max = 83886080;

$total=count($_FILES['fichier']['name']);

for($i=0; $i <$total;$i++) { 
if( !in_array( substr(strrchr($_FILES['fichier']['name'][$i], '.'), 1), $extensions_ok ) )
 {$erreur = 'Veuillez sélectionner un fichier de type zip, rar, 7z, tar, png, gif, jp(e)g, mp3, wma, avi, mpg, mpeg, divx, vmi, vms ou ddc !';}
elseif( file_exists($_FILES['fichier']['tmp_name'][$i]) and filesize($_FILES['fichier']['tmp_name'][$i]) > $taille_max)
 {$erreur = 'Votre fichier doit faire moins de 80Mo !';}
}

if(!isset($erreur))  {

// ici je traite d'autres champs du formulaire

for($i=0; $i <$total;$i++) { 
 $dest_dossier = $dossier_j."/".$dossier_s_new."/";
 $dest_fichier = basename($_FILES['fichier']['name'][$i]);
 $dest_fichier = strtr($dest_fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
 $dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier);
 move_uploaded_file($_FILES['fichier']['tmp_name'][$i], $dest_dossier.$dest_fichier);
}
Mais où est donc mon erreur ???
:cry:
@++
Gakman
-> http://gakman.free.fr

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

06 nov. 2005, 20:03

si tu fait la manip avec des fichiers valides tu ne devrai pas avoir ce message d'erreur.

Pour tester affiche le nom du fichier avant le test d'extension
echo $_FILES['fichier']['name'][$i];
sinon décompose:
$var=substr(strrchr($_FILES['fichier']['name'][$i], '.'), 1);
echo $var

if( !in_array( $var, $extensions_ok ))

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 76 Messages

06 nov. 2005, 20:20

Je n'arrive pas :( !
J'ai décomposé comme tu m'as dit. Le script avec 1 seul envoi de fichier fonctionnait parfaitement.
J'utilise des fichiers qui existent sur mon pc comme pourrait le faire tout lecteur du site.
Voilà les 2 pages.
<p align="center" class="gdtitre">Soumettre un fichier</p>
<hr />
<p>Vous pouvez ici m'envoyer vos sauvegardes.</p>
<p>&nbsp;</p>
<form action="index.php?lang=<?=$_GET['lang']?>&rub=post_rez&jeu=<?=$_GET['jeu']?>" method="post" enctype="multipart/form-data" id="post_script" name="post_script">
<p>Pseudo : <input name="auteur" id="auteur" /> (utilisez celui du forum SVP)</p>
<p>Adresse E-mail : <input id="mail" name="mail" /></p>
<p>Site perso : <input id="site" name="site" /></p>
<? if ($_GET['jeu']=="new") {echo '<p>Nom du jeu : <input id="nom" name="nom" /></p>';} ?>
<p>Support du jeu :  
<select id="support" name="support">
<option selected>Windows</option>
<option>DreamCast</option>
<option>MegaDrive / Genesis</option>
<option>MasterSystem</option>
<option>GameGear</option>
<option>XBox</option>
<option>PlayStation 2</option>
<option>PlayStation</option>
<option>PSP</option>
<option>GameCube</option>
<option>Nintendo64</option>
<option>SuperNintendo / SNES / SuperFamicom</option>
<option>Nintendo / NES / Famicom</option>
<option>DS</option>
<option>GameBoy Advance</option>
<option>GameBoy / GameBoy Color</option>
<option>NGage</option>
<option>arcade</option>
<option>Linux</option>
<option>MacOS</option>
<option>Amiga</option>
</select></p>
<p>Titre de la sauvegarde  : <input id="titre" name="titre" /></p>
<p>Note (en %) donnée à l'avancement de la sauvegarde :
<select id="note" name="note">
<option selected>Non notée</option>
<? for($i=1;$i<=100;$i++){echo'<option>'.$i.'</option>';} ?>
</select></p>
<p>Vos commentaires et d&eacute;tails sur cette sauvegarde :<br /><textarea id="commentaire" name="commentaire" rows="6" cols="75"></textarea></p>

<input type="hidden" name="MAX_FILE_SIZE" value="83886080" />
<fieldset>
<p class="base_Rouge">S&eacute;lectionnez le(s) fichier(s) que vous voulez envoyer :<br />
<? for($i=1;$i<=20;$i++){echo'
Fichier '.$i.' : <input id="fichier[]" name="fichier[]" type="file" size="40" /><br />';} ?>
</p>
</fieldset>

<p>Cliquez sur le bouton suivant ("Valider") pour valider et attendez le chargement complet de la page suivante qui peut prendre de nombreuses minutes suivant votre vitesse de connexion à Internet et la taille du fichier envoyé.<br />
<input name="post_submit" id="post_submit" type="submit" value="Valider" /></p>
</form>

<p>&nbsp;</p>
<p>&nbsp;</p>
<? include("m_retour.php"); include("m_stats.php");?>
<?
$jeu_=$_GET['jeu'];
$lang_=$_GET['lang'];

if(isset($_FILES['fichier'])){
unset($erreur);
$extensions_ok = array('avi', 'mpg', 'mpeg', 'divx', 'mp3', 'wma', 'png', 'gif', 'jpg', 'jpeg', 'zip', 'rar', '7z', 'tar', 'vmi', 'vms', 'ddc');
//faille sécu ici -> voir PHPfrance pour le "denied extensions" à la place
$taille_max = 83886080;

$total=count($_FILES['fichier']['name']);

for($i=0; $i <$total;$i++) {
$var_fich0=$_FILES['fichier']['name'][$i];
$var_fich=substr(strrchr($var_fich0, '.'), 1); 
$var_fich2=$_FILES['fichier']['tmp_name'][$i];
if( !in_array( $var_fich, $extensions_ok )) 
 {$erreur = 'Veuillez sélectionner un fichier de type zip, rar, 7z, tar, png, gif, jp(e)g, mp3, wma, avi, mpg, mpeg, divx, vmi, vms ou ddc !';}
elseif( file_exists($var_fich2) and filesize($var_fich2) > $taille_max)
 {$erreur = 'Votre fichier doit faire moins de 80Mo !';}
}

if(!isset($erreur))  {
echo '<p class="titre">Merci !</p>';

if ($_GET['jeu']=="new"){
 $liste6=array();
 $handle6=opendir(".");
  while($file6=readdir($handle6)){
   $pt6=strrpos($file6,".");
   $folder_name=$file6;
   $fich6=$file6."/nom.php";
   if (@file_exists($fich6)){
    array_push($liste6,$file6);}}
 closedir($handle6);
 $num_new2=count($liste6);
 $num_new2++;
 $dossier_j="j_".$num_new2;
 mkdir ($dossier_j,0700);
 copy("./images/index.htm",$dossier_j."/index.htm");

 $dossier_s_new="s_1";

 if (empty($_POST["nom"])){$nom_jeu="-> Jeu non spécifié";}
 else {$nom_jeu=$_POST["nom"];}
 
 $Fnm3=$dossier_j."/nom.php";
 $inF3=fopen($Fnm3,"w");
  fwrite($inF3,$nom_jeu);
 fclose($inF3);
}
else {
 $dossier_j="j_".$_GET['jeu'];
 
 $fich_nom="./".$dossier_j."/nom.php";
 if (@file_exists($fich_nom) && filesize($fich_nom)>0){
 $fd=fopen($fich_nom,"r");
 $nom_jeu=fread($fd,filesize($fich_nom));
 fclose($fd);}
 
 $liste5=array();
 $handle5=opendir($dossier_j);
  while($file5=readdir($handle5)){
   $pt5=strrpos($file5,".");
   $folder_name=$file5;
   $fich5=$dossier_j."/".$file5."/details.php";
   if (@file_exists($fich5)){
    array_push($liste5,$file5);}}
 closedir($handle5);
 $num_new=count($liste5);
 $num_new++;
 $dossier_s_new="s_".$num_new;
}

mkdir ($dossier_j."/".$dossier_s_new,0700);
copy("./images/index.htm",$dossier_j."/".$dossier_s_new."/index.htm");

$Fnm=$dossier_j."/".$dossier_s_new."/details.php";
$ouvre_w = '<'.'?';
$ferme_w = '?'.'>';
$auteur_w = '$auteur="'.$_POST["auteur"].'";';
$mail_w = '$mail="'.$_POST["mail"].'";';
$site_w = '$site="'.$_POST["site"].'";';
$titre_w = '$titre="'.$_POST["titre"].'";';
$note_w = '$note="'.$_POST["note"].'";';
$date_w = '$date="'.date("d/m/Y").'";';

$inF=fopen($Fnm,"w");
 fwrite($inF,$ouvre_w."\n".$auteur_w."\n".$mail_w."\n".$site_w."\n".$titre_w."\n".$date_w."\n".$note_w."\n".$ferme_w);
fclose($inF);

$commentaire_w=$_POST["commentaire"];
$Fnm2=$dossier_j."/".$dossier_s_new."/commentaire.php";
$inF2=fopen($Fnm2,"w");
 fwrite($inF2,$commentaire_w);
fclose($inF2);

for($i=0; $i <$total;$i++) {
 $var_fich0=$_FILES['fichier']['name'][$i];
 $var_fich2=$_FILES['fichier']['tmp_name'][$i];
 $dest_dossier = $dossier_j."/".$dossier_s_new."/";
 $dest_fichier = basename($var_fich0);
 $dest_fichier = strtr($dest_fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
 $dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier);
 move_uploaded_file($var_fich2, $dest_dossier.$dest_fichier);
}

$sujet="Ajout d'une sauvegarde sur S.O.S. Sauvegardes !";
$corps=
 $auteur_w." \n".
 $mail_w." \n".
 $site_w." \n".
 $date_w." \n
 jeu : ".$_GET['jeu']." \n
 nom du jeu : ".$nom_jeu." \n".
 $titre_w." \n".
 $note_w." \n \n
 commentaire : \n".$commentaire_w;
$entete="From:".$email2."\r\nReply-To:".$email2;
mail ($email1,$sujet,$corps,$entete);

if($jeu_=="new"){echo '<p>&nbsp;</p><p><a href="index.php?lang='.$_GET['lang'].'&rub=liste&jeu='.$num_new2.'">Accès à la page du jeu.</a></p><p>&nbsp;</p>';}
else{echo '<p>&nbsp;</p><p><a href="index.php?lang='.$_GET['lang'].'&rub=liste&jeu='.$_GET['jeu'].'">Retour à la page du jeu.</a></p><p>&nbsp;</p>';}

}

else {echo '<p class="titre">Attention !</p><br />'.$erreur.'<p><a href="index.php?lang='.$_GET['lang'].'&rub=post&jeu='.$jeu.'">Retour au formulaire.</a></p>';}

}



include("m_retour.php"); include("m_stats.php");
?>
J'obtiens toujours le même message, le premier : celui d'erreur d'extention ('Veuillez sélectionner un fichier de type zip, rar, 7z, tar, png, gif, jp(e)g, mp3, wma, avi, mpg, mpeg, divx, vmi, vms ou ddc !).
@++
Gakman
-> http://gakman.free.fr

Eléphant du PHP | 76 Messages

06 nov. 2005, 21:57

Voilà juste les points importants du code pour plus de facilité :
page de post :
<form action="index.php?lang=<?=$_GET['lang']?>&rub=post_rez&jeu=<?=$_GET['jeu']?>" method="post" enctype="multipart/form-data" id="post_script" name="post_script"> 
<input type="hidden" name="MAX_FILE_SIZE" value="83886080" /> 
<fieldset> 
<p class="base_Rouge">S&eacute;lectionnez le(s) fichier(s) que vous voulez envoyer :<br /> 
<? for($i=1;$i<=20;$i++){echo' 
Fichier '.$i.' : <input id="fichier[]" name="fichier[]" type="file" size="40" /><br />';} ?> 
</p> 
</fieldset> 

<p>Cliquez sur le bouton suivant ("Valider") pour valider et attendez le chargement complet de la page suivante qui peut prendre de nombreuses minutes suivant votre vitesse de connexion à Internet et la taille du fichier envoyé.<br /> 
<input name="post_submit" id="post_submit" type="submit" value="Valider" /></p> 
</form>
Page de traitement :
<?
if(isset($_FILES['fichier'])){ 
unset($erreur); 
$extensions_ok = array('avi', 'mpg', 'mpeg', 'divx', 'mp3', 'wma', 'png', 'gif', 'jpg', 'jpeg', 'zip', 'rar', '7z', 'tar', 'vmi', 'vms', 'ddc'); 

$taille_max = 83886080; 

$total=count($_FILES['fichier']['name']); 

for($i=0; $i <$total;$i++) { 
$var_fich0=$_FILES['fichier']['name'][$i]; 
$var_fich=substr(strrchr($var_fich0, '.'), 1); 
$var_fich2=$_FILES['fichier']['tmp_name'][$i]; 
if( !in_array( $var_fich, $extensions_ok )) 
{$erreur = 'Veuillez sélectionner un fichier de type zip, rar, 7z, tar, png, gif, jp(e)g, mp3, wma, avi, mpg, mpeg, divx, vmi, vms ou ddc !';} 
elseif( file_exists($var_fich2) and filesize($var_fich2) > $taille_max) 
{$erreur = 'Votre fichier doit faire moins de 80Mo !';} 
} 

if(!isset($erreur))  { 


for($i=0; $i <$total;$i++) { 
$var_fich0=$_FILES['fichier']['name'][$i]; 
$var_fich2=$_FILES['fichier']['tmp_name'][$i]; 
$dest_dossier = $dossier_j."/".$dossier_s_new."/"; 
$dest_fichier = basename($var_fich0); 
$dest_fichier = strtr($dest_fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy'); 
$dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier); 
move_uploaded_file($var_fich2, $dest_dossier.$dest_fichier); 
} 
} ?>
Et donc j'ai toujours la même erreur : le message que mon ou mes fichiers n'ont pas la bonne extention (1er type d'erreur de mon script).
@++
Gakman
-> http://gakman.free.fr

Eléphant du PHP | 76 Messages

06 nov. 2005, 23:24

en virant le test sur l'extention (les 2 lignes qui suivent) ça marche... je ne sais aps où est l'erreur dans ces lignes
$extensions_ok = array('avi', 'mpg', 'mpeg', 'divx', 'mp3', 'wma', 'png', 'gif', 'jpg', 'jpeg', 'zip', 'rar', '7z', 'tar', 'vmi', 'vms', 'ddc');
for($i=0; $i <$total;$i++) {
$var_fich0=$_FILES['fichier']['name'][$i];
$var_fich=substr(strrchr($var_fich0, '.'), 1); 
if( !in_array( $var_fich, $extensions_ok )) 
 {$erreur = 'Veuillez sélectionner un fichier de type zip, rar, 7z, tar, png, gif, jp(e)g, mp3, wma, avi, mpg, mpeg, divx, vmi, vms ou ddc !';}
}
@++
Gakman
-> http://gakman.free.fr

Eléphant du PHP | 76 Messages

07 nov. 2005, 00:32

Bon je continue à causer tout seul :
j'ai réussi à passer dans le mode "refuser certaines extentions" à la place d'accepter certaines, c'est moins contraignant.
ALors le script marche bien, sauf qu'en cas d'erreur de type d'extention j'ai une page d'erreur (page non trouvée) à la place du message d'allerte.

Voilà mon code :
if(isset($_FILES['fichier'])){
unset($erreur);
$DeniedExtensions = array('.php','.php3','.php5', '.phtml','.asp','.aspx','.ascx', '.jsp','.cfm','.cfc','.pl','.bat','.exe','.dll','.reg', '.cgi','.vbs','.htm','.html','.shtml','.js');

$taille_max = 83886080;

$total=count($_FILES['fichier']['name']);

for($i=0; $i <$total;$i++) {
$var_fich0=$_FILES['fichier']['name'][$i];
$var_fich2=$_FILES['fichier']['tmp_name'][$i];

for($a=0; $a<count($DeniedExtensions); $a++)
{
$findit = strpos($var_fich0, $DeniedExtensions[$a]);
if ($findit !== false)
{$erreur = 'Veuillez sélectionner un fichier de type différent de php, html, exe !';}
}

if( file_exists($var_fich2) and filesize($var_fich2) > $taille_max)
 {$erreur = 'Votre fichier doit faire moins de 80Mo !';}
}

if(!isset($erreur))  {
et après comme tout à l'heure.

Alors si quelqu'un voit mon erreur... aidez moi SVP !!!! :cry:
@++
Gakman
-> http://gakman.free.fr

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

07 nov. 2005, 00:41

eh bien je ne vois pas d'erreur :?

assure toi ce que retourne chaque variable, par exemple $var_fich

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Mammouth du PHP | 19672 Messages

07 nov. 2005, 00:49

S'il y a une erreur, elle est ailleurs. En revanche, ton code est illisible : aère donc, ça simplifie la relecture et les possibilités de trouver des bugs:
if(isset($_FILES['fichier']))
{
    unset($erreur);
    $DeniedExtensions = array('.php', '.php3', '.php5', '.phtml', '.asp', '.aspx', '.ascx', '.jsp', '.cfm', '.cfc', '.pl', '.bat', '.exe', '.dll', '.reg', '.cgi', '.vbs', '.htm', '.html', '.shtml', '.js');

    $taille_max = 83886080;

    $total = count($_FILES['fichier']['name']);

    for($i = 0; $i < $total; $i++)
    {
        $var_fich0 = $_FILES['fichier']['name'][$i];
        $var_fich2 = $_FILES['fichier']['tmp_name'][$i];

        for($a = 0; $a < count($DeniedExtensions); $a++)
        {
            $findit = strpos($var_fich0, $DeniedExtensions[$a]);
            if ($findit !== false)
            {
                $erreur = 'Veuillez sélectionner un fichier de type différent de php, html, exe !';
            }
        }

        if( file_exists($var_fich2) and filesize($var_fich2) > $taille_max)
        {
            $erreur = 'Votre fichier doit faire moins de 80Mo !';
        }
    }
}

if(!isset($erreur))
{
Tu trouves pas ça plus clair comme ça ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 76 Messages

07 nov. 2005, 01:03

si si mais ça marche pas mieux :wink:
@++
Gakman
-> http://gakman.free.fr