var_dump(@$_FILES['file']['type'])
アップロードしたファイルの種類をテストするために使用します
まず、exe file
「uninstall.exe
」という名前をアップロードして、戻ってきました
"string 'application/octet-stream' (length=24)"
次に、このファイルの名前をに変更しましたuninstall.png
。
string 'image/png' (length=9)
私の結論は次のとおりです。 $_FILES ['file'] ['type']はファイル拡張子のみをチェックし、元のファイルタイプはチェックしません。
次のコードは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))
上記のコードでは不要だと思います$_FILES["file"]["type"]
が、ファイル拡張子を確認するだけexplode()
でin_array
私はPHPの初心者ですが、誰かが私の考えを確認できますか?ありがとう!