PHP Sprawdzanie poprawności przesłanego pliku [duplikat]
To pytanie ma już odpowiedź tutaj:
Jak sprawdzić, czy przesłany plik jest obrazem bez typu MIME? 7 odpowiedziJestem początkującym w PHP i obecnie uczę się części „Sprawdzanie poprawności przesyłania pliku”.
Zrobiłem stronę test.php zawierającą następujący kod:
var_dump(@$_FILES['file']['type']);
Po pierwsze, przesłałem obraz „img.gif” i zwrócił:
string 'image/gif' (length=9)
Następnie zmieniłem rozszerzenie obrazu na „.jpg” i wróciło:
string 'image/jpeg' (length=10)
Więc zdałem sobie sprawę, że $ _FILES [„plik”] [„typ”] zwraca tylko przesłane rozszerzenie pliku, ale tak naprawdę nie sprawdziłem, jaki to plik.
Na tej stronie,http: //www.w3schools.com/php/php_file_upload.as, jest kod:
$allowedExts = array("gif", "jpeg", "jpg", "png");
$extension = end(explode(".", $_FILES["file"]["name"]));
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 20000)
&& in_array($extension, $allowedExts))
Zastanawiam się, dlaczego powyższe kody dwukrotnie sprawdzają rozszerzenie pliku? Usunąłem niektóre z powyższych kodów i to jest mój nowy kod:
$allowedExts = array("gif", "jpeg", "jpg", "png");
$extension = end(explode(".", $_FILES["file"]["name"]));
if (($_FILES["file"]["size"] < 20000) && in_array($extension, $allowedExts))
Czy mój kod jest poprawny? Czy masz jakieś lepsze sposoby na sprawdzenie poprawności przesłanego pliku to obraz?
Dzięki