나는 이상한 것을 알아 차리고 다른 사람이 내 코드를 테스트 할 수 있는지 궁금 해서요.크기가 최대 크기보다 클 때 파일 업로드 + 해시가 문제를 일으 킵니다.
파일 업로드 + 숨겨진 해시 + 제출 버튼 만있는 실제 간단한 양식 (전체 양식 코드 및 아래 작업 코드 참조)이 있습니다. 파일 업로드에는 최대 크기 제한이 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";
}
}
}
당신은 다시 옳았습니다. php.ini 파일의 값은 모두 64MB입니다. max (9.5)와 php max (64) 사이에 파일을 업로드 할 때'file exceeded size' 오류가 발생하지만 php max (64)를 넘으면 토큰에 이상한 오류가 발생합니다. 그래서 내 다음 질문은 : 아직도 파일 크기가 해시 요소와 관련이 있다는 것을 이해하지 못합니다. 백그라운드에서 리디렉션이 있습니까? – jblue
@jblue. Post_max_size를 초과하면 yout $ _POST 변수가 비어 있다고 생각합니다. 액션에서 확인할 수 있습니다 (var_dump ($ _ POST)). 따라서 Zend Form까지는 양식에 의해 제출 된 값이 없습니다. – Marcin