Controleer met php op file extension
Wat is de handigste manier om te controleren of een file "jpg, png, gif of tiff" bestand is met php?
Code (php)
1
2
3
4
5
2
3
4
5
<html>
<form method="POST" action="">
<input type="file" name="attachment">
</form>
</html>
<form method="POST" action="">
<input type="file" name="attachment">
</form>
</html>
Wat kan je dan doen om te zorgen dat de afbeelding per e-mail word verzonden, moet je hem dan toch ergens opslaan?
Code (php)
Zorg ook voor een controle met mime-types, en controleer ook met get_imagesize of het een afbeelding is.
Kan ik dan niet in keer
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
$size = getimagesize($filename);
$fp = fopen($filename, "rb");
if ($size && $fp) {
header("Content-type: {$size['mime']}"); //kun je hier niet dan ook jpg png gif en tiff bij zetten zodat het één validatie word?
fpassthru($fp);
exit;
echo "afbeelding is geldig";
} else {
echo "alleen jpg, png, gig of tiff is toegestaan";
}
?>
$size = getimagesize($filename);
$fp = fopen($filename, "rb");
if ($size && $fp) {
header("Content-type: {$size['mime']}"); //kun je hier niet dan ook jpg png gif en tiff bij zetten zodat het één validatie word?
fpassthru($fp);
exit;
echo "afbeelding is geldig";
} else {
echo "alleen jpg, png, gig of tiff is toegestaan";
}
?>
Voor het gemak gebruik ik zelf de uploadclass van verot.net, die erg makkelijk werkt.
Gewijzigd op 28/06/2016 23:07:11 door - Ariën -
Om een juiste test uit te voeren moet je de afbeelding altijd eerst opslaan?
Je kunt die benaderen met $_FILES['attachment']['tmp_name']. Op dat bestand kun je de mimetype al checken.
Toevoeging op 29/06/2016 00:06:11:
En bestanden die niet op je webserver thuis horen wil je natuurlijk niet opslaan dus eerst checken en dan move_uploaded_file() pas gebruiken.
Leesvoer:
http://php.net/manual/en/features.file-upload.php