Ha nem korlátozzuk a feltölthető fájltípusokat, akkor a felhasználók véletlenül vagy szándékosan oda nem illő fájlokkal árasztják el szerverünket. Képek helyett dokumentumokat vagy futtatható fájlokat is kaphatunk, ami sok szempontból veszélyes.
Fontos!
- A fájl típusának és kiterjesztésének vizsgálatát célszerű együtt használni.
A fájl típusát a $_FILES globális PHP tömbben találjuk: $_FILES["file"]["type"] . Ezt hasonlítjuk össze az engedélyezni kívánt fájltípusokkal.
1. példa:
Képek feltöltése
<?php
//csak képek
if (($_FILES["file"]["type"]=="image/gif")
|| ($_FILES["file"]["type"]=="image/jpeg")
|| ($_FILES["file"]["type"]=="image/jpg")
|| ($_FILES["file"]["type"]=="image/pjpeg")
|| ($_FILES["file"]["type"]=="image/x-png")
|| ($_FILES["file"]["type"]=="image/png")) {
if ($_FILES["file"]["error"] > 0) {
echo "Hiba: ".$_FILES["file"]["error"];
} else {
...
//Feltöltött fájl elmentése
...
}
} else {
echo "Nem megfelelő fájl.";
}
?>
2. példa:
Dokumentumok feltöltése
<?php
//csak dokumentumok
if (($_FILES["file"]["type"]=="application/msword")
|| ($_FILES["file"]["type"]=="application/excel")
|| ($_FILES["file"]["type"]=="application/vnd.ms-excel")
|| ($_FILES["file"]["type"]=="application/x-msexcel")
|| ($_FILES["file"]["type"]=="application/x-excel")
|| ($_FILES["file"]["type"]=="application/vnd.openxmlformats-officedocument.wordprocessingml.document")
|| ($_FILES["file"]["type"]=="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
|| ($_FILES["file"]["type"]=="application/pdf")
|| ($_FILES["file"]["type"]=="application/vnd.ms-powerpoint")
|| ($_FILES["file"]["type"]=="application/vnd.openxmlformats-officedocument.presentationml.presentation")
|| ($_FILES["file"]["type"]=="application/vnd.openxmlformats-officedocument.presentationml.slideshow")
|| ($_FILES["file"]["type"]=="application/zip")) {
if ($_FILES["file"]["error"] > 0) {
echo "Hiba: ".$_FILES["file"]["error"];
} else {
...
//Feltöltött fájl elmentése
...
}
} else {
echo "Nem megfelelő fájl.";
}
?>