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!

hello tout l'monde,
là j'apprécierais grandement votre aide car hier encore ce code fonctionnait, et aujourd'hui makach:
ça me retourne:
[quote]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[/quote]
Voici mon code:
[php]<?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();
?>[/php]
Et voici la portion en particulier où se trouve la ligne 96:
[php]$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++;
}[/php]
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?
[b]Edit[/b]
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! :)