Modérateur PHPfrance |
8758 Messages
07 août 2013, 18:30
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";
}
}
@+
Il en faut peu pour être heureux ......