2013-05-26 1 views
0

에 메시지를 전달하고, 당신이 볼 수있는 나는 완전히 구현되지 않은이 기본 클래스를 썼다 :내가 가지 PHP 등의 파일을 실험하고있는 프론트 엔드

class AisisCore_FileHandling_Upload_Upload{ 

    private $_file; 

    static private $_errors; 

    public function __construct() { 
     $this->init(); 
    } 

    public function init(){} 

    public function check_file(array $file, string $size){ 
     $this->_file = $file; 

     if ($this->_file['size'] > $size) { 
      $this->_error('size', 'The size of your zip exceeds that of the set size: ' . $size); 
     } 

     if ($this->_file['type'] != 'application/zip') { 
      $this->_error('type', 'File type must be a .zip'); 
     } 

     if (!strops($this->_file['name'], 'package') || !strops($this->_file['name'] == 'theme')) { 
      $this->_error('name', 'File uploaded does not contain the words "package" or "theme." Unreconized.'); 
     }elseif(strops($this->_file['name'], 'package')){ 
      $this->package($this->_file); 
     }elseif(strops($this->_file['name'], 'theme')){ 
      $this->theme($this->_file); 
     } 

     wp_safe_redirect(admin_url('admin.php?page=aisis-core-upload')); 
    } 

    public function theme(array $file){ 
    } 

    public function package(array $file){ 
    } 

    protected function _error(string $code, string $message){ 
     self::$_errors[$code] = $message; 
    } 

    public function get_all_errors(){ 
     foreach($this->_errors as $code=>$message){ 
      echo '<div class="alert alert-error"><strong>'.$code.'</strong>: '.$message.'</div>'; 
     } 
    } 
} 

이 클래스를 형태와 상호 작용 :

형태가 "확인"그것은 (해야 (당신이 wp_safe_redirect(admin_url('admin.php?page=aisis-core-upload'));에서 보는 바와 같이) 다시이했다 페이지로 리디렉션이 리디렉션의 규칙을 나누기 파일로 제출
$upload = new AisisCore_FileHandling_Upload_Upload(); 

if($_POST['aisis_upload']){ 
    $upload->check_file($_FILES['aisis_file'], $_POST['MAX']); 
} 

$upload->get_all_errors(); 

<form action="" method="POST"> 
    <fieldset> 
     <div class="control-group"> 
      <input type="file" class="input-xlarge" name="aisis_file" placeholder="Your file."> 
      <input type="hidden" name="MAX" value="1024"> 
     </div> 
     <div class="control-group"> 
      <input type="submit" class="btn btn-primary" value="Upload Zip" name="aisis_upload"> 
     </div> 
    </fieldset> 
</form> 

모든 것이 완료되고 완료되면 날씨가 파일을 전달했거나 실패한 경우에도 발생합니다.

문제는 내가 페이지에 다시 돌아올 때 저장해야하는 정적 변수에 오류를 저장하고 있다는 것입니다. 거기에서 오류를 가져올 수 있어야합니다. 대신에 아무것도 얻지 못합니다. . 그냥 빈 페이지, 아무 침을 뱉어도, xdebug는 침묵합니다 ...

어떻게 디버깅합니까? 나는 var를 제출하기 전후에 덤프를 시도했지만, null이되기 전에 제출해야하고 제출 한 후에 .... 페이지가 비어있다.

생각?

답변

0

디버깅에 대한 가장 쉬운 방법은 리디렉션을 주석 처리하는 것입니다. 원한다면 세션 변수를 사용하여 다음 페이지로 정보를 전달할 수도 있습니다. 즉, 오류를 찾고 있다면 strpos (및 strpos strops가 아닌) 사용법을 확인하십시오.

(!strops($this->_file['name'], 'package') || !strops($this->_file['name'] == 'theme')) 

첫 번째 조건에서는! == false (문자열에 needle 포함) 또는 === false (문자열에 needle이 없음)를 확인해야합니다. 이름이 'package'이면 strpos는 0을 반환합니다. == false, 아마도 당신이하려고하지 않은 것입니다. strpos처럼 보이는 두 번째 조건은 불필요하거나 적어도 잘못 사용되었습니다. strpos와 거짓 값이 추가 정보를 strpos

을이

if(strpos($this->_file['name'] , 'theme') === false) 

를 좋아합니까