Problème upload fichier, erreur

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème upload fichier, erreur

par Stef » 18 janv. 2009, 08:56

voui voui je l'ai recréé, c'est parce qu'il avait été supprimé que ça ne marchait plus...

par Aureusms » 18 janv. 2009, 08:48

J'ai eu un problème similaire le dossier upload existe déjà ?

Problème upload fichier, erreur

par Stef » 18 janv. 2009, 06:50

hello tout l'monde,

là j'apprécierais grandement votre aide car hier encore ce code fonctionnait, et aujourd'hui makach:

ça me retourne:
Warning: move_uploaded_file(upload/02-Roller-Skates.mp3) [function.move-uploaded-file]: failed to open stream: No such file or directory in /homez.48/stephanzx/www/musicbox-v3/tunes_valid.php on line 96

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/php3Uepd3' to 'upload/02-Roller-Skates.mp3' in /homez.48/stephanzx/www/musicbox-v3/tunes_valid.php on line 96
Voici mon code:
<?php
$titre_erreur = NULL;
$descr_erreur = NULL;
$descr_erreur2 = NULL;
$descr_erreur3 = NULL;
$rights_erreur = NULL;
$tune_erreur = NULL;
$tune_erreur2 = NULL;
$tune_erreur3 = NULL;
$tune_erreur4 = NULL;
$right_erreur = NULL;

//On récupère les variables
$i = 0;
$temps = time();
$descriptif = mysql_real_escape_string(htmlspecialchars($_POST['descriptif'], ENT_QUOTES));
$titre = mysql_real_escape_string(htmlspecialchars($_POST['titre']));
$titre = stripslashes(nl2br($titre));
$dl = $_POST['dl'];
$cat = $_POST['style'];
$refid_user = $_POST['refid_user'];
$licence = $_POST['licence'];
$dossier = 'upload/';
$fichier = basename($_FILES['tune']['name']);
$taille_maxi = 6000000;
$taille = filesize($_FILES['tune']['tmp_name']);
$extensions = array('.mp3', '.wma');
$extension = strrchr($_FILES['tune']['name'], '.');

//Vérification du titre
if (empty($_POST['titre']))
{
        $titre_erreur = 'Le champ "Titre de l\'annonce" est vide.<br />';
        $i++;
}

if (strlen($_POST['descriptif']) < 200)
{
        $descr_erreur2 = 'Description trop courte (moins de 200 caractères).<br />';
		$i++;
}

if (strlen($_POST['descriptif']) > 2000)
{
        $descr_erreur3 = 'Description trop longue (plus de 2000 caractères).<br />';
		$i++;
}

if ($_POST['right'] == '')
{
      $right_erreur = 'Tu dois cocher la case "Droits et propriétés" pour attester que tu possèdes 
les droits sur l\'oeuvre proposée! Si ce n\'est pas le cas tu ne dois pas envoyer ce son...<br />';
	  $i++;
}

if (empty($_FILES['tune']))
{
$tune_erreur4 = 'Tu n\'as pas sélectionné de fichier à envoyer!<br />';
$i++;
}
else {
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
     $tune_erreur = 'Le fichier sélectionné n\'est ni un mp3 ni un wma...<br />';
	 $i++;
}
if($taille>$taille_maxi)
{
     $tune_erreur2 = 'Le fichier est trop volumineux...<br />';
	 $i++;
}

$fichier = strtr($fichier, 
          'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
          'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
     $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
     if(move_uploaded_file($_FILES['tune']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
     {
          echo '';
     }
     else //Sinon (la fonction renvoie FALSE).
     {
          $tune_erreur3 = 'Upload impossible... échec du transfert.<br />';
		  $i++;
     }
}
if ($i == 0) // Si i est vide, il n'y a pas d'erreur
{
        echo'<h4>Succès '; echo stripslashes(htmlspecialchars($_SESSION['nom'])); echo'</h4><p>Ton son, <b>'.$_POST['titre'].'</b>, est publié, 
merci pour ta participation!</p>';


        //On balance le tout dans notre table
        mysql_query('
        INSERT INTO mb_tunes (titre, tune, cat, date, descriptif, licence, refid_user, dl)
        VALUES ("'.$titre.'"  , "'.$fichier.'" , "'.$cat.'" ,  "'.$temps.'" , "'.$descriptif.'" , "'.$licence.'" , "'.$refid_user.'" , "'.$dl.'") ') 
		or die(mysql_error());


        

}
else
{
        echo'<h4>Une ou plusieurs erreurs se sont produites pendant l\'ajout d\'un nouveau son...</h4>';
        echo'<br /><p>'.$i.' <b>Erreur(s):</b></p><br />';
		echo'<i>'.$titre_erreur.'</i>';
		echo'<i>'.$descr_erreur.'</i>';
		echo'<i>'.$descr_erreur2.'</i>';
		echo'<i>'.$descr_erreur3.'</i>';
        echo'<i>'.$rights_erreur.'</i>';
		echo'<i>'.$tune_erreur4.'</i>';
        echo'<i>'.$tune_erreur.'</i>';
		echo'<i>'.$tune_erreur2.'</i>';
		echo'<i>'.$tune_erreur3.'</i>';
		echo'<i>'.$right_erreur.'</i>';
		echo'<br /><br />';
}
mysql_close();

?>
Et voici la portion en particulier où se trouve la ligne 96:
$fichier = strtr($fichier, 
          'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
          'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
     $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
     if(move_uploaded_file($_FILES['tune']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
     {
          echo '';
     }
     else //Sinon (la fonction renvoie FALSE).
     {
          $tune_erreur3 = 'Upload impossible... échec du transfert.<br />';
		  $i++;
     }
Là où je suis étonné c'est que je n'ai rien modifié à ce fichier depuis mes derniers tests (qui étaient concluants (ça marchait quoi...)), et là ben erreur....
Vous voyez quelque chose?

Edit

Résolu... le dossier de destination n'existait plus (et là je me demande comment ça s'fait paske j'me souviens pas l'avoir supprimé :? )...

Au passage, pourriez vous me dire si le traitement des champs text et textarea (remplis par l'utilisateur), soit $descriptif et $titre sont suffisament sécurisés, et d'une manière plus global si les traitements sont bons sur ces champs?
Un grand merci! :)