tôi sử dụng var_dump(@$_FILES['file']['type'])
để kiểm tra loại tập tin Tôi đã tải lên
Trước tiên, tôi tải lên một exe file
gọi là "uninstall.exe
", và nó trở
"string 'application/octet-stream' (length=24)"
Sau đó, tôi đổi tên tập tin này để uninstall.png
, nó trở
string 'image/png' (length=9)
kết luận của tôi là: $ _FILES [ 'file'] [ 'type'] chỉ che phần mở rộng tệp ck, không phải là loại tệp gốc.
Các mã sau đây là từ w3cschool:
$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))
Tôi nghĩ $_FILES["file"]["type"]
trong mã trên là không cần thiết, chúng tôi chỉ có thể kiểm tra phần mở rộng tập tin sử dụng explode()
và in_array
Tôi chỉ là một người mới bắt đầu php, ai đó có thể xác nhận ý tưởng của tôi? Cảm ơn!
Có, tôi tin rằng nhiều người trong chúng ta biết rằng loại tệp có thể bị giả mạo. – Class
Một bài học không sử dụng w3schools – SomeShinyObject
Cảm ơn, tôi rất vui vì tôi đã tìm thấy điều gì đó sai trong w3cschool – nut