【问题标题】:how to display the content before exit() in php?如何在 php 中显示 exit() 之前的内容?
【发布时间】:2014-06-08 01:10:08
【问题描述】:

我正在使用 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();
    }

}

我尝试了 exit() 和 die(),但它们都只是杀死了整个页面而没有显示任何内容。我知道我可以用 if 然后重定向方法来做到这一点,但我想知道我是否可以用以前的方式做到这一点。

【问题讨论】:

  • 例外情况在这种情况下很有用。在 set_admin_level() 而不是 exit() 中抛出异常,然后使用 try { } catch() { } 在 add_user 中查找异常。未捕获的异常将退出。
  • 如果你在 die 里面放一条消息呢?例如die('Not authorized to see this section'); 应该显示该文本。在这种情况下,问题在于 exit 或 die 语句发生在模板渲染之前。
  • 我不想在空白页上只显示错误消息。我还想同时加载页眉和页脚模板。
  • 更新,我在这里找到了解决方案,将 exit() 替换为 die($this->output->get_output()); stackoverflow.com/questions/2618993/…

标签: php codeigniter exit


【解决方案1】:

试试这个:

private function set_admin_level($level){

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

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

   }
}

【讨论】:

    【解决方案2】:

    die 或 exit 将停止所有 PHP 处理。

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

    无论哪种方式,您都需要先创建页面或视图,因为您无法无所事事地显示某些内容。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-18
      • 1970-01-01
      • 2011-02-27
      • 1970-01-01
      • 2022-11-29
      • 1970-01-01
      相关资源
      最近更新 更多