将消息传递到前端

时间:2013-05-26 16:30:33

标签: php static-variables custom-errors

我正在试验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>';
        }
    }
}

此课程与表格互动:

$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>

当提交表单时,如果文件违反了“检查”的规则,它应该(正如您从wp_safe_redirect(admin_url('admin.php?page=aisis-core-upload'));看到的那样)重定向回到它所在的页面(当所有的都是说完了,确保文件通过或失败。

我得到的问题是我将错误存储在一个静态变量中,当我返回页面时应该保存该静态变量,从那里我应该可以将错误输出, 相反,我得到的是什么。只是一个空白页面,没有错误吐出来,xdebug是沉默的......

我该如何调试?我尝试var在提交之前和之后但在它之前的错误之前转储错误,就像它应该是在提交它之后......好吧页面是空白的。

想法?

1 个答案:

答案 0 :(得分:0)

调试的最简单方法是注释掉重定向,但如果你想要的话,可以使用会话变量将信息传递到下一页。话虽这么说,如果你正在寻找错误,请查看你的strpos(以及它的strpos而不是strops)用法。

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

在第一个条件中你应该检查!== false(字符串包含针)或=== false(字符串不包含针)。如果名称是'package',strpos将返回0 = = false,可能不是你想要的。它似乎strpos的第二个条件是不必要的或至少使用错误。对于使用strpos的错误值,请执行此操作

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

了解更多信息strpos