Page 1 sur 1

Probleme De Telechargement de fichier

Posté : 07 août 2013, 17:45
par youssefouxx
Bonjour les gars jé un probleme a mon script
<form style="position:absolute; top:300px; left:240px; "method="post" enctype="multipart/form-data">

<p style="color:white;">Veuillez Choisir Une Music De Format vlc mp3 taille Max (8 mo)

<input type="hidden" name="MAX_FILE_SIZE"
value="16000000000"><br>
<input name="userfile" type="file" id="userfile"> <br>
<input name="upload"
type="submit" style="width:150px; background:white; color:black;"class="box" id="upload" value=" Upload "></td>

</form>

<?php
include('db.php');
if(isset($_POST['upload'])&&$_FILES['userfile']['size']>0)
{
$fileName = $_FILES['userfile']['name'];
$tmpName  = $_FILES['userfile']['tmp_name'];
$fileSize = $_FILES['userfile']['size'];
$fileType = $_FILES['userfile']['type'];
$uploader=$_SESSION['login'];
$code=$fileName+$fileSize+$fileType+$tmpName+$uploader;
$code=md5($code);
$fileType=(get_magic_quotes_gpc()==0 ? mysql_real_escape_string(
$_FILES['userfile']['type']) : mysql_real_escape_string(
stripslashes ($_FILES['userfile'])));
$fp      = fopen($tmpName, 'r');
$content = fread($fp, filesize($tmpName));
$content = addslashes($content);
fclose($fp);
if(!get_magic_quotes_gpc())
{
    $fileName = addslashes($fileName);
}
include('db.php');
if($db){
$query = "INSERT INTO upload (name, size, type, content, uploader, code, date ) ".
"VALUES ('$fileName', '$fileSize', '$fileType', '$content','$uploader','$code',NOW())";
mysql_query($query) or die('Error, query failed'); 
mysql_close();
echo "<p style='position:absolute; left:420px; top:420px; '><br>File $fileName uploaded<br></p>";
}else { echo "file upload failed"; }
} 
?>
ils m'ecrivent Warning: stripslashes() expects parameter 1 to be string, array given in /data/multiserv/users/1159184/projects/2552968/www/upload.php on line 98

Re: Probleme De Telechargement de fichier

Posté : 07 août 2013, 18:30
par moogli
Modération :
Afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé).

Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.

Des indications sont disponibles sur la manière de mettre en forme vos messages dans la FAQ


sinon le problème est indiqué par le message d'erreur, la fonction stripslashes prend en paramètre une chaîne de caractère et non un tableau.
Or tu passe un tableau à cette fonction => stripslashes ($_FILES['userfile']).


Tu devrais éviter de mélanger les différents code trouvé sur le net, la tu mélange l'utilisation de add / strip slashes et de myslq_real_escape_string.

perso je corrigerais ton code comme ça (rapidement)
<?php
include('db.php');
if (!empty($_POST['upload']) && !empty($_FILES['userfile']['size']) && $_FILES['userfile']['size'] > 0) {
    // les 5 lignes qui suivent ne servent à rien utilise les 
    $fileName = $_FILES['userfile']['name'];
    $tmpName = $_FILES['userfile']['tmp_name'];
    $fileSize = $_FILES['userfile']['size'];
    $fileType = $_FILES['userfile']['type'];
    $uploader = $_SESSION['login'];
    $code = $_FILES['userfile']['name'] . $_FILES['userfile']['size'] . $_FILES['userfile']['type'] .
        $_FILES['userfile']['tmp_name'] . $_SESSION['login'];
    $code = md5($code);
    $content = file_get_contents($_FILES['userfile']['tmp_name']);
    
    // vérification des données 
    if (get_magic_quotes_gpc() == true) {
        $_FILES['userfile']['type'] = stripslashes($_FILES['userfile']['type']);
        $_FILES['userfile']['name'] = stripslashes($_FILES['userfile']['name']);
        $_FILES['userfile']['size'] = stripslashes($_FILES['userfile']['size']);
        $content = stripslashes($content);

    }

    $_FILES['userfile']['type'] = mysql_real_escape_string($_FILES['userfile']['type']);
    $_FILES['userfile']['name'] = mysql_real_escape_string($_FILES['userfile']['name']);
    $_FILES['userfile']['size'] = mysql_real_escape_string($_FILES['userfile']['size']);
    $content = mysql_real_escape_string($content);
    
    if ($db) { // non utilise isset ou empty, ou autre chose mais $db n'est surement pas un booleen ?
        $query = 'INSERT INTO upload (name, size, type, content, uploader, code, 
            date ) VALUES (\'' . $_FILES['userfile']['name'] . '\', \'' . $_FILES['userfile']['size'] . '\', 
            \'' . $_FILES['userfile']['type'] . '\', \'' . $content . '\',\'' . $_SESSION['login'] . '\',\'' .
            $code . '\',NOW())';
        mysql_query($query) or die('Error, query failed');
        mysql_close();
        echo '<p style="position:absolute; left:420px; top:420px;"><br/>File ' . $_FILES['userfile']['name'] .
            ' uploaded<br/></p>';
    }
    else {
        echo "file upload failed";
    }
}

@+