我想允许用户将文件上传到我的服务器,我真的不知道这个语法的错误
// EDITED
$temp = "file.pdf";
$fileInfo = new finfo;
$getType = $fileInfo->file($temp, FILEINFO_MIME);
$fileExt = array( 'jpg' , 'jpeg' , 'gif' , 'png' , 'zip' , 'rar' , 'pdf' , 'doc' , 'rtf' , 'xls' , 'ppt' , 'odt' , 'ods' );
$ext = strtolower( substr( strrchr($temp, '.') ,1) );
if(!in_array($ext, $fileExt)) {
echo "Ext not allowed"
}else {
if ($getType == "application/pdf" || $getType == "image/png") {
echo "Ok " .$getType;
}else {
echo "No " .$getType;
}
}
输出:无申请/ pdf;
有什么想法吗?
答案 0 :(得分:1)
使用mime类型是不安全的。可以手动编码具有不合适扩展名的伪造类型的MIME邮件(例如“.php”)。
请检查扩展程序。
$parts = explode('.',$filename);
$ext = array_pop($parts);
if( $ext !='pdf' && $ext !='png')
return false;
答案 1 :(得分:1)
我找到了解决方案,可以帮助别人。
使用:
$fileInfo = finfo_open(FILEINFO_MIME_TYPE);
$getType = finfo_file($fileInfo, $temp);
而不是:
$fileInfo = new finfo;
$getType = $fileInfo->file($temp, FILEINFO_MIME);