파일을 업로드하기 위해 다음 php 함수를 작성했지만 허용 된 파일 유형 배열에 어려움을 겪고 있습니다. 하나의 파일 유형, 즉 이미지/PNG 만 지정하면 정상적으로 작동합니다. 하나 이상을 지정하면 작동하지 않습니다. 허용 된 파일 형식을 결정하기 위해 in_array() 함수를 사용하지만 올바르게 사용하는 방법을 알아낼 수 없습니다.PHP 파일 유형 유효성 검사
감사합니다.
function mcSingleFileUpload($mcUpFileName, $mcAllowedFileTypes, $mcFileSizeMax){
if(!empty($mcUpFileName)){
$mcIsValidUpload = true;
// upload directory
$mcUploadDir = UPLOAD_DIRECTORY;
// current file properties
$mcFileName = $_FILES[$mcUpFileName]['name'];
$mcFileType = $_FILES[$mcUpFileName]['type'];
$mcFileSize = $_FILES[$mcUpFileName]['size'];
$mcTempFileName = $_FILES[$mcUpFileName]['tmp_name'];
$mcFileError = $_FILES[$mcUpFileName]['error'];
// file size limit
$mcFileSizeLimit = $mcFileSizeMax;
// convert bytes to kilobytes
$mcBytesInKb = 1024;
$mcFileSizeKb = round($mcFileSize/$mcBytesInKb, 2);
// create array for allowed file types
$mcAllowedFTypes = array($mcAllowedFileTypes);
// create unique file name
$mcUniqueFileName = date('m-d-Y').'-'.time().'-'.$mcFileName;
// if file error
if($mcFileError > 0)
{
$mcIsValidUpload = false;
mcResponseMessage(true, 'File error!');
}
// if no file error
if($mcFileError == 0)
{
// check file type
if(!in_array($mcFileType, $mcAllowedFTypes)){
$mcIsValidUpload = false;
mcResponseMessage(true, 'Invalid file type!');
}
// check file size
if($mcFileSize > $mcFileSizeLimit){
$mcIsValidUpload = false;
mcResponseMessage(true, 'File exceeds maximum limit of '.$mcFileSizeKb.'kB');
}
// move uploaded file to assigned directory
if($mcIsValidUpload == true){
if(move_uploaded_file($mcTempFileName, $mcUploadDir.$mcUniqueFileName)){
mcResponseMessage(false, 'File uploaded successfully!');
}
else{
mcResponseMessage(true, 'File could not be uploaded!');
}
}
}
}
}
//mcRequiredFile('mcFileUpSingle','please select a file to upload!');
mcSingleFileUpload('mcFileUpSingle', 'image/png,image/jpg', 2097152);
, 파일 종류와 크기가 수 있기 때문에 쉽게 스푸핑 된 클라이언트 측 일 수 있습니다. tmp_file을 사용하여 파일 크기와 유형을 직접 얻고 자 할 것입니다. 당신은 또한 파일 확장자의 유효성 검사를 원할 것입니다. 기본적으로 위 코드를 사용하면 대부분의 서버를 인계받을 수있는 파일을 매우 쉽게 업로드 할 수 있습니다. – dqhendricks