Controleren of file afbeelding is
Ik maak een upload script voor afbeeldingen. Nu is mijn vraag hoe je het beste kunt controleren of een bestand van het juiste type (png, jpg/jpeg, bmp of gif) is?
mimetype en extentie
is dat een veilige manier?
Nee, niet als je die van $_FILES gebruikt.
Gewijzigd op 19/09/2010 20:48:43 door Crude Oil
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
//De extensie van het geuploade bestand.
$tmp = explode ( '.', $_FILES['uploadedfile']['name']);
$fileext = $tmp[count($tmp)-1];
//Extencies die zijn toegestaan.
$allowedext = array("png","jpg","jpeg");
//Kijken of het bestand een toegestane extensie heeft
if (in_array($fileext,$allowedext)) {
}
else {
echo "Bestand niet toegestaan.<br/>";
}
$tmp = explode ( '.', $_FILES['uploadedfile']['name']);
$fileext = $tmp[count($tmp)-1];
//Extencies die zijn toegestaan.
$allowedext = array("png","jpg","jpeg");
//Kijken of het bestand een toegestane extensie heeft
if (in_array($fileext,$allowedext)) {
}
else {
echo "Bestand niet toegestaan.<br/>";
}
Gewijzigd op 19/09/2010 20:55:22 door Hendrik de Jager
Dat stuk wat jij plaatst kan toch onveilig zijn?
Inderdaad kan je een file info functie gebruiken.
betekent dat dat finfo bij mij niet werkt?
Het checken van de achterste extensie is toch voldoende? Die bepaald immers hoe het op de server behandeld wordt en .png e.d. zullen nooit door de interpreter gaan (tenzij je instelt van wel, maar ja...)
finfo_open
finfo->__construct
(PHP >= 5.3.0, PECL fileinfo >= 0.1.0)
Daar ligt het dus aan, wat kan ik dan het beste gebruiken, SanThe?
Als je die functie wilt gebruiken zal je php moeten updaten.
Php updaten kan ik niet, dat kunnen alleen die mensen van de hosting ofzo. Is er geen andere veilige manier?
Gewijzigd op 19/09/2010 23:40:59 door Arjan -
Ik probeer nu met getimagesize, maar hoe kun je de imagesize uit de $_FILES halen?
Gewoon die functie erover halen?
ik bedoel hoe moet ik het precies neerzetten: getimagesize($_FILES["file"][wat moethier?])
Gewijzigd op 20/09/2010 19:43:48 door Crude Oil
Zie eens php.net.
Zie deze tutorial / snippet, beantwoord al je vragen.
nee want dat is lang niet altijd veilig. Overigens lukt het hele uplaodscript niet emer aangezien hij beweert dat $_FILES leeg is terwijl dat niet zo is :S