2011-01-25 1 views
3

나는 이상한 것을 알아 차리고 다른 사람이 내 코드를 테스트 할 수 있는지 궁금 해서요.크기가 최대 크기보다 클 때 파일 업로드 + 해시가 문제를 일으 킵니다.

파일 업로드 + 숨겨진 해시 + 제출 버튼 만있는 실제 간단한 양식 (전체 양식 코드 및 아래 작업 코드 참조)이 있습니다. 파일 업로드에는 최대 크기 제한이 10000000 (약 9.5MB)으로 설정되어 있습니다.

한계를 초과하여 파일을 업로드하려고하면 양식이 유효성을 검사하지 않지만 해시 토큰 자체에 오류가 발생합니다 Value is required and can't be empty. 누군가 확인할 수 있습니까? 토큰이 지워지고있는 것 같습니다. 나는 이것이 리다이렉트 나 뭔가의 경우에 일어날 수 있다고 생각하지만 배경에서 일어나지 않는 한 어떤 리다이렉트도하지 않는다.

여기 형태 코드와 내 행동 코드 내 컨트롤러에서

class Application_Form_TestForm extends Zend_Form 
{ 

    public function init() 
    { 

    $file = new Zend_Form_Element_File('file'); 
    $file->setDestination(APPLICATION_PATH); 
    $file->addValidator('Size', false, 10000000); 
    $file->setMaxFileSize(10000000); 
    $this->addElement($file); 

    $hash = new Zend_Form_Element_Hash('hash'); 
    $hash->setIgnore(true) 
     ->setSalt('mysalt'); 
    $this->addElement($hash); 

    $submit = new Zend_Form_Element_Submit('submit');  
    $submit->setLabel('Test') 
      ->setIgnore(true);    
    $this->addElement($submit); 

    $this->setAttrib('enctype', 'multipart/form-data'); 
    $this->setMethod('post'); 
} 
} 

, 난이 당신의 PHP에서 post_max_size을 또는이 upload_max_filesize 값과 관련이있을 것으로 보인다 일반적인 검증을

public function indexAction() 
{ 
    $form = new Application_Form_TestForm(); 
    $this->view->form = $form; 

    if($this->_request->isPost()){   
     echo "post"; 
     if($form->isValid($this->_request->getPost())){ 
      echo " valid"; 
     } 
    } 

} 

답변

3

을한다. ini. 예를 들어 post_max_size의 기본값은 최대 파일 크기보다 작은 8M입니다.

+0

당신은 다시 옳았습니다. php.ini 파일의 값은 모두 64MB입니다. max (9.5)와 php max (64) 사이에 파일을 업로드 할 때'file exceeded size' 오류가 발생하지만 php max (64)를 넘으면 토큰에 이상한 오류가 발생합니다. 그래서 내 다음 질문은 : 아직도 파일 크기가 해시 요소와 관련이 있다는 것을 이해하지 못합니다. 백그라운드에서 리디렉션이 있습니까? – jblue

+1

@jblue. Post_max_size를 초과하면 yout $ _POST 변수가 비어 있다고 생각합니다. 액션에서 확인할 수 있습니다 (var_dump ($ _ POST)). 따라서 Zend Form까지는 양식에 의해 제출 된 값이 없습니다. – Marcin