probleme avec les slashes en upload

probleme avec les slashes en upload - PHP - Programmation

Marsh Posté le 07-11-2003 à 19:32:15    

bonjour,
 
j'ai un probleme avec les fichiers dont le nom comporte une apostrophe en upload :  
 
je fais un champ "file" dans un formulaire pour permettre aux utilisateurs d'envoyer des fichiers > je rentre au passage le nom du fichier dans une base de donnee en ajoutant un "addslashes($file_name)".  
 
Mais le probleme c'est que le fichier est entré sur le serveur avec le \ devant les apostrophes ... => indelettable du serveur puisque c'est un caractere interdit !
j'ai mis tous les stripslashes($filename) voulu apres entree dans la base, mais rien a faire.  
 
Si quelqu'un peut me dire a quoi c'est dû ? Et ce qu'il faut faire ???
 
Pour info, voila mon code minimal:
 
 
en bas de la page de code, (elle se recharge apres le submit)le formulaire :
 

Citation :


<FORM METHOD="POST" ENCTYPE="multipart/form-data">
<INPUT TYPE=HIDDEN NAME=MAX_FILE_SIZE VALUE=<? echo $MFS;?>>
<INPUT NAME="userfile" TYPE=FILE size="70">
<INPUT type="submit" name="Submit" value="Envoyer">
</FORM>


 
 
et en haut,  :
 

Citation :


 
//insertion dans la base
if ($userfile!="" )
       {
        include ("declBD.php" );
 $taille=filesize($userfile);
 $userfile_name=addslashes($userfile_name);
 $requete="INSERT INTO support (taille,userfile_name) VALUES('$taille','$file_name')";
 if (!($result=mysql_query ($requete)))
  {
  echo mysql_errno().":".mysql_error();
  exit;
  }
        }
 
 
// Répertoire de stockage
$rep="../supports/";
 
//deplacement du fichier uploadé
if($userfile_size>0)  
 {
 $file_name=stripslashes($userfile_name);
        $savefile= $rep.$userfile_name;
    if (move_uploaded_file($userfile, $savefile))  
     {  
?>
       Votre fichier a bien été enregistré  <BR>
       Nom : <? echo($userfile_name); ?> <BR>
       Taille : <? echo($userfile_size); ?> octets <BR>
     }  
    else  
     {  
?>  
          <b>Erreur d'enregistrement</b>  
<?  
  }
 
 }  
?>


 
 
 
 

Reply

Marsh Posté le 07-11-2003 à 19:32:15   

Reply

Marsh Posté le 07-11-2003 à 19:40:10    

Citation :

if ($userfile!="" )
       {
        include ("declBD.php" );
 $taille=filesize($userfile);
 $userfile_name=addslashes($userfile_name);
 $requete="INSERT INTO support (taille,userfile_name) VALUES('$taille','$file_name')";
 if (!($result=mysql_query ($requete)))
  {
  echo mysql_errno().":".mysql_error();
  exit;
  }
        }


 
normal ca ?


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 07-11-2003 à 20:14:14    

oui, dsl, j'ai essaye de simplifier le code, il aurait fallu mettre  $userfile_name dans la requete... mais mon pb n'est pas dans l'insertion dans la BdD, mais sur le serveur...  
 
Je crois que le fichier est stocké ds un fichier temporaire avant d'etre placé dans le rep de destination, c'est peut etre la qu'il part avec un mauvais nom ? Mais je ne sais pas comment le recuperer et changer le nom en enlevant les slashes :(

Reply

Marsh Posté le 07-11-2003 à 20:24:58    

la solution c'est de renommer les fichiers ......
 
j'ai deja mis en place une solution equivalente.... je stockais le nom du fichier et l'extension dans la base, je recuperais l'id et je nommais le fichier par l'id. ainsi tu es sur que le nom est unique et que son nom est conforme [:spamafote]


Message édité par simogeo le 07-11-2003 à 20:25:06

---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 07-11-2003 à 20:45:51    

ok, je teste, je n'avais pas pense a renommer le fichier par le stripslashes($nomdelabase) !
 
merci de ton aide :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed