php
  • validation
  • file-upload
  • 2011-08-01 8 views 2 likes 
    2

    코드가 잘못되었습니다. 파일 형식이 .doc 형식이고 크기가 0kb 인 경우에도 항상 '파일 형식 .doc, .docx, .odt 및 최대 파일 크기 2MB 지원'을 표시합니다. .파일 유형 PHP 유효성 검사

    if(($_FILES["file"]["type"] != 'application/octet-stream') || 
          ($_FILES["file"]["type"] != 'application/vnd.oasis.opendocument.text')|| 
          ($_FILES["file"]["type"] != 'application/msword')|| 
          ($_FILES["file"]["size"] > 200000)) 
         { 
          //echo $_FILES["file"]["size"]; 
          //echo $_FILES["file"]["type"]; 
          $this->assign_values('msg',"File types .doc,.docx,.odt and max file size 2mb supported"); 
          //echo "Error: " . $_FILES["file"]["error"] . "<br />"; 
         } 
    
    +0

    이의 구성 요소를 제거해보십시오 실행되는 당신의 당신이 변화를 볼 때까지 절합니다. – calumbrodie

    답변

    4

    당신은 파일 형식 사이의 ||&&에 변경해야합니다. 또는 더 나은 허용 유형의 목록에 대해 유형을 확인 : 당신은 당신이 준 매개 변수의 1을 의미 사실로이 OR를 사용하는

    $allowedTypes = array('application/octet-stream', 'application/vnd.oasis.opendocument.text', 'application/msword'); 
    
    if(!in_array($_FILES["file"]["type"], $allowedTypes) || $_FILES["file"]["size"] > 200000) 
         { 
          //echo $_FILES["file"]["size"]; 
          //echo $_FILES["file"]["type"]; 
          $this->assign_values('msg',"File types .doc,.docx,.odt and max file size 2mb supported"); 
          //echo "Error: " . $_FILES["file"]["error"] . "<br />"; 
         } 
    
    +0

    오 감사합니다. 그 지금 일하고있어. 누구든지 내 코드에서 whts가 틀리다고 말할 수 있습니까? –

    +0

    글자로 된 if 문은 "유형이 A가 아니거나 유형이 B가 아니거나 유형이 C가 아니거나 크기가 20000보다 큽니다"와 같은 것입니다. 그러나 유형에는 하나의 값만있을 수 있습니다. 따라서 "A"인 경우 "유형이 B가 아님"이 true를 반환하고 "일치"하는 경우 허용 된 유형이 "A"가됩니다. – Peter

    0

    .

    다른 값으로 유형 3을 확인 중이므로 항상 true를 리턴하고 이에 따라 if가 트리거됩니다.

    0

    사용되거나 하나 개의 문장 중 하나에 해당하는 경우 (||) 코드가

    관련 문제