Controleer met php op file extension

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Bryan De Baar

Bryan De Baar

28/06/2016 22:32:07
Quote Anchor link
Hallo,


Wat is de handigste manier om te controleren of een file "jpg, png, gif of tiff" bestand is met php?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<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?
 
PHP hulp

PHP hulp

21/11/2024 19:28:33
 
- Ariën  -
Beheerder

- Ariën -

28/06/2016 22:51:02
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$filename
= $_FILES['attachment']['name'];
$ext = pathinfo($filename, PATHINFO_EXTENSION);
$allowed = array('jpg','png','gif','tiff');
if(!in_array( $ext, $allowed ) ) {
    echo 'Niet geldig';
}

?>


Zorg ook voor een controle met mime-types, en controleer ook met get_imagesize of het een afbeelding is.
 
Bryan De Baar

Bryan De Baar

28/06/2016 23:04:30
Quote Anchor link
Hallo Arien,

Kan ik dan niet in keer
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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";
}

?>
 
- Ariën  -
Beheerder

- Ariën -

28/06/2016 23:06:43
Quote Anchor link
Ik herinner me dat getimagesize() altijd een true geeft. Je moet dus de bestandsinfo ervan uitlezen om te kijken of het om een afbeelding gaat.

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 -
 
Frank Nietbelangrijk

Frank Nietbelangrijk

28/06/2016 23:43:58
Quote Anchor link
Het is beter om te controleren op de mimetype: http://php.net/manual/en/function.mime-content-type.php
 
Bryan De Baar

Bryan De Baar

28/06/2016 23:57:06
Quote Anchor link
Om een juiste test uit te voeren moet je de afbeelding altijd eerst opslaan?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

29/06/2016 00:02:47
Quote Anchor link
Als de file ge-upload is dan staat deze al onder een tijdelijke bestandsnaam op je webserver.
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
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.