2012-09-27 3 views
0

파일 형식 및 파일 크기가 첨부 된 파일 형식 인 파일 형식이 이지만 인 PHP 문의 양식이 있습니다. 사용자가 이미지를 첨부하는 것을 잊었는지 확인해야합니다 (예 : , 사진 부착은 "필수 입력란"이어야하며 '사진 첨부하십시오.'라는 메시지가 표시됩니다. 문제PHP 양식 - 파일이 첨부되어 있는지 확인하십시오.

양식 :

http://www.cucinadellanonna.com/nominate-form.php

이 첨부 파일을 확인하는 코드의 일부이다 ... 나는 아무 소용, 몇 가지를 추가하려고했습니다, 그래서 난 그냥 찔러 해요 어두운 데에서. 어떤 파일이 업로드되지 않은 경우

//file upload validation 


    if(!empty($this->fileupload_fields)) 
    { 
    if(!$this->ValidateFileUploads()) 
    { 
     $ret = false; 
    } 
    } 
    return $ret; 
} 

function ValidateFileType($field_name,$valid_filetypes) 
{ 
    $ret=true; 
    $info = pathinfo($_FILES[$field_name]['name']); 
    $extn = $info['extension']; 
    $extn = strtolower($extn); 

    $arr_valid_filetypes= explode(',',$valid_filetypes); 
    if(!in_array($extn,$arr_valid_filetypes)) 
    { 
     $this->add_error("Valid file types are: $valid_filetypes"); 
     $ret=false; 
    } 
    return $ret; 
} 

function ValidateFileSize($field_name,$max_size) 
{ 
    $size_of_uploaded_file = 
      $_FILES[$field_name]["size"]/1024;//size in KBs 
    if($size_of_uploaded_file > $max_size) 
    { 
     $this->add_error("The file is too big. File size should be less than $max_size KB"); 
     return false; 
    } 
    return true; 
} 

function IsFileUploaded($field_name) 
{ 
    if(empty($_FILES[$field_name]['name'])) 
    { 
     return false; 
    } 
    if(!is_uploaded_file($_FILES[$field_name]['tmp_name'])) 
    { 
     return false; 
    } 
    return true; 
} 
function ValidateFileUploads() 
{ 
    $ret=true; 
    foreach($this->fileupload_fields as $upld_field) 
    { 
     $field_name = $upld_field["name"]; 

     $valid_filetypes = $upld_field["file_types"]; 

     if(!$this->IsFileUploaded($field_name)) 
     { 
      continue; 
     } 

     if($_FILES[$field_name]["error"] != 0) 
     { 
      $this->add_error("Error in file upload; Error code:".$_FILES[$field_name]["error"]); 
      $ret=false; 
     } 

     if(!empty($valid_filetypes) && 
     !$this->ValidateFileType($field_name,$valid_filetypes)) 
     { 
      $ret=false; 
     } 

     if(!empty($upld_field["maxsize"]) && 
     $upld_field["maxsize"]>0) 
     { 
      if(!$this->ValidateFileSize($field_name,$upld_field["maxsize"])) 
      { 
       $ret=false; 
      } 
     } 

    } 
    return $ret; 
} 

답변

1

다음 문은 0을 반환합니다 : 이동 및 이름 변경에 대비하여 개최되는 파일이있는 경우 문이 결정하는 경우

count($_FILES); 

당신은에 그것을 사용할 수 있습니다.

function IsFileUploaded($field_name) 
{ 
    if(count($_FILES) > 0) 
    { 
     if(empty($_FILES[$field_name]['name'])) 
     { 
      return false; 
     } 
     if(!is_uploaded_file($_FILES[$field_name]['tmp_name'])) 
     { 
      return false; 
     } 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
} 
+0

는 내가 다른 문장의 무리를 리버스 엔지니어링 시도했지만 난 그냥 어둠 속에서 찌르는거야 ... 내가 문을 형성하기에 충분한 PHP는 턱이없는 인정 당황입니다. –

+0

답변을 업데이트했습니다. 기능에 대한 수정이 포함되어 있습니다. – Flosculus

+0

이 문장에서'$ this-> add_error' 오류 메시지를 어디에 넣을까요? –

관련 문제