如何在php中显示exit()之前的内容?

如何在php中显示exit()之前的内容?,php,codeigniter,exit,Php,Codeigniter,Exit,我用的是codeigniter。在我的一个管理员控制器中,在管理员登录后,我想创建一个开关来检查他的管理员级别。如果他的级别低于某个数字,他将无法查看某个页面。相反,将加载一个限制通知页面,然后该页面将停止加载 function add_user() { $this->set_admin_level(9); // stuffs } private function set_admin_level($level){ if ($this->session-&

我用的是codeigniter。在我的一个管理员控制器中,在管理员登录后,我想创建一个开关来检查他的管理员级别。如果他的级别低于某个数字,他将无法查看某个页面。相反,将加载一个限制通知页面,然后该页面将停止加载

function add_user() {

    $this->set_admin_level(9);
    // stuffs
}

private function set_admin_level($level){

    if ($this->session->userdata('admin_level') < $level ) {

        $this->load->view("admin/restriction");

        exit();
    }

}
我尝试退出并死掉,但他们两人都只是杀死了整个页面,没有显示任何内容。我知道我可以用if-then-redirect方法来实现这一点,但我想知道我是否可以用前面的方法来实现这一点。

试试这个:

private function set_admin_level($level){

   if ($this->session->userdata('admin_level') < $level ) {

       return $this->load->view("admin/restriction");

   }
}

死亡或退出将停止所有PHP处理

如果不希望在空白页上显示错误消息,则需要一个页面/视图来显示错误消息。然后将用户重定向到该页面,或者在退出之前用PHP运行该页面,例如使用$this->load->view

无论哪种方式,您都需要首先创建页面或视图,因为您不能通过不做任何操作来显示某些内容


在显示实际错误页面之前,请设置HTTP 403标题,以向浏览器和搜索引擎表明这是一个拒绝访问的错误页面,而不是正常页面。

在这种情况下,异常非常有用。在set_admin_级别而不是exit中引发异常,然后使用try{}catch{}在add_user中查找异常。未捕获的异常将退出。如果您将一条消息放在die中会怎么样?例如,“未经授权查看本节”;应该显示该文本。在这种情况下,问题是exit或die语句发生在模板呈现之前。我不希望在空白页上仅显示错误消息。我想同时加载页眉和页脚模板。更新,我在这里找到了解决方案,用die$this->output->get_output替换exit;