Eerst kritisch commentaar:
>>>>
Let op! Deze manier van het controleren is véél veiliger dan het normaal controleren.
<<<<
Is niet zo, getimagesize controleert namelijk zelf ook al met wat voor plaatjes deze te doen heeft. De mime-types die hierop gebaseerd zijn, zijn minimaal even veilig als de exif_imagetype output.
>>>>
public $allowedExif = array('IMAGETYPE_GIF', 'IMAGETYPE_JPEG', 'IMAGETYPE_PNG');
<<<<
Snap niet waarom dit met strings moet? Kan dat niet gewoon zonder de quotes? Is namelijk geheugentechnisch een stuk beter.
>>>>
if (in_array(exif_imagetype($this->file['tmp_name']), $this->allowedExif)) {
<<<<
Daarnaast klopt dit niet met het bovenstaande. De functie exif_imagetype returnt een integer. Geen string, en je gaat controleren met een array met strings... :confusing:
>>>>
public $allowedExt = array('.JPG', '.JPEG', '.GIF', '.PNG', '.jpg', '.jpeg', '.gif', '.png');
<<<<
Waarom moet je hier de punt overal toevoegen? Kun je bet in het script zorgen dat de punt gestript wordt. Bijv. met substr($extension, 1). Daarnaast zijn extensies per definitie niet case-sensitive. Dus kun je beter gewoon even alle extensies lower- of uppercase maken en dan in het commentaar er bij zetten dat deze allemaal lower- of uppercase dienen te zijn.
Want wat als ik nu het plaatje dag.jPg upload? Is volledig legaal, maar volgens jouw script niet... :)
>>>>
public $resizeImage = TRUE;
<<<<
>>>>
$upload = new ImageUpload();
$upload->resizeImage = FALSE;
$upload->allowedExt = array('.DOC');
$upload->allowedTypes = array('text/plain');
$upload->file = $_FILES['file'];
$upload->moveFile();
<<<<
Je gaat dus van een ImageUpload-class een uploadClass maken. Aardig... Maar vind het niet echt logisch... Daarnaast is een .doc standaard geen text/plain-bestand.
Verder moet je zelf het resizen van images uitschakelen => dat kan het script toch ook zelf doen? Eerst detecteren of iets een plaatje is en alleen wanneer iets een plaatje is deze ook werkelijk resizen.
Wanneer je bij het aanroepen van getimagesize geen array terug krijgt, kun je er van uitgaan dat het geen plaatje is. In dat geval hoeft deze ook niet geresized te worden. Wanneer het wel een plaatje is kun je controleren aan de hand van de array die je terug hebt gekregen of het een plaatje van het goede type is.
Daarnaast zou je kunnen overwegen om bij de functie moveFile alleen de index mee te geven onder welke naam het bestand wat geüpload moet worden is te vinden in de superglobal $_FILES.
De hoeveelheid commentaar is een beetje heel erg verwarrend. Teveel gewoon :)
Voor de rest een leuke class. Goed voor een `goed` :D
Ga zo door, succes met je volgende scripts :)
>>>
Eerste script is de klasse zelf, de tweede, derde en vierde zijn simpele voorbeelden. HTML mag je er zelf bij verzinnen.
<<<
Helemaal mee eens. HTML is niet voor in de SL, SL is enkel voor functionaliteit niet voor kant-en-klaar scripts (omdat dat de kwaliteit van scripts over het algemeen niet bevordert). Maar daar denken anderen anders over :D
| 1 2 3 | Post hier de source-code van je script. Alle informatie tussen <? ... ?> en <?php ... ?> zal automatisch worden getoond in color-coding.
Let op! Het is niet de bedoeling om hier een link naar je website te plaatsen. Post hier gewoon de code, veel simpeler, sneller en meer kans dat het blijft staan. |


