Un nouveau venu pose une question à laquelle il faut répondre par des solutions simples.
J'ai essayé un tas de codes. Il semble que je puisse obtenir le flux de fichiers pour getimagesize et faire fonctionner d'autres choses sans planter.
Je suis en train de dépoussiérer un vieux projet qui a besoin de limiter les fichiers téléchargés afin qu'ils ne soient que des fichiers images et rien de méchant.
Ce code me donne toujours un message d'erreur, peu importe ce que je fais.
$imageinfo = getimagesize($_FILES['bf_file'][$key]['tmp_name']);
if($imageinfo['mime'] != 'image/gif' && $imageinfo['mime'] != 'image/jpeg') {
alert ("Sorry, we only accept GIF and JPEG images");
exit;
}
Voici l'effort de la liste noire
$blacklist = array(".php", ".phtml", ".php3", ".php4", ".js", ".shtml", ".pl" ,".py"
,".txt", ".doc");
foreach ($blacklist as $file)
{
if(preg_match("/$file\$/i", $_FILES['bf_file'][$key]['tmp_name']))
{
alert "ERROR: Uploading executable files Not Allowed\n";
exit();
}
}
Voici un autre getimagesize
$size = getimagesize($_FILES[bf_file][$key][tmp_name]);
$fp = fopen($_FILES[bf_file][$key][tmp_name], "rb");
if ($size && $fp) {
header("Content-type: {$size['mime']}");
fpassthru($fp);
continue;
} else
// error
alert("Inappropriate file type");
Sur chacun d'eux, je reçois le message d'erreur, qu'un fichier soit téléchargé ou non.
J'ai juste besoin de placer ces contrôles quelque part dans mon fichier de sorte que si le fichier téléchargé passe les contrôles, alors tout passe simplement par l'uploader et tout le reste fonctionne comme il se doit mais sans le bénéfice de ces limiteurs et contrôles.
De plus, l'utilisateur ne doit pas être obligé de télécharger un fichier. Il y a 3 champs, le sujet, le corps et le téléchargement de fichier. Seuls le sujet et le corps doivent contenir des données et cela fonctionne actuellement.
Toute aide sera grandement appréciée.
Merci,
James