【问题标题】:CodeIgniter: View doesn't load if I use die() functionCodeIgniter:如果我使用 die() 函数,视图不会加载
【发布时间】:2011-03-30 04:19:06
【问题描述】:

我有以下代码。检查用户是否登录。 当变量 $is_logged_in 未设置或为 False 时,我加载消息视图。 不幸的是,同时系统加载了受限内容视图。 所以我使用 die() 函数,现在只显示一个空白页。

只有在用户未登录时才加载消息视图,我该怎么做? 谢谢。

if(!isset($is_logged_in) OR $is_logged_in == FALSE)
{
     $data['main_content'] = 'not_logged_in';

     $data['data'] = '';

     $this->load->view('includes/template',$data);

     die();
}

【问题讨论】:

  • 从不想在 CodeIgniter 中使用die(),这是错误的做法。

标签: php codeigniter views die


【解决方案1】:

实际上,我找到了维护 URL 而不是重定向的答案:

$data['main_content'] = 'unauthorized_access';
$this->load->view('includes/template', $data);

// Force the CI engine to render the content generated until now    
$this->CI =& get_instance(); 
$this->CI->output->_display();

die();

【讨论】:

  • 只需在我正在编写的 AJAX 控制器中点击它,同时在构造函数中进行大量标头检查。 +1 用于挖掘输出类,所以我不必:)
【解决方案2】:

无论如何。我使用了一个重定向到登录页面和一个 flashdata 变量

if(!isset($is_logged_in) OR $is_logged_in == FALSE)
   {
       $this->session->set_flashdata('error_msg','You must be logged in to access restricted area');
       redirect('login/');
   }

谢谢

【讨论】:

    【解决方案3】:

    我已经搞砸了一段时间。如果您在尝试加载视图后使用dieexit,CI 会显示一个空白页。

    解决方案是使用return,它会停止执行当前函数,并且在此之后不执行任何操作。

    一个简单的例子:

    public function validate(){
     //validation code
    
     if(!$valid){
      $this->load->view('error');
      return;
     }
    
     //This code won't run
    }
    

    【讨论】:

      【解决方案4】:

      CI 可能正在使用输出缓冲(请参阅http://www.php.net/manual/en/ref.outcontrol.php)。如果要加载视图并终止脚本,则需要刷新缓冲区。这通常会在脚本的最后完成,但 die()ing 会阻止它到达那里。

      if(!isset($is_logged_in) OR $is_logged_in == FALSE)
      {
          $data['main_content'] = 'not_logged_in';
          $data['data'] = '';
          $this->load->view('includes/template',$data);
      
          ob_flush();
          die();
      }
      

      【讨论】:

      • 当我放 ob_flush() 时抛出:遇到 PHP 错误 严重性:通知消息:ob_flush() [ref.outcontrol]:刷新缓冲区失败。没有要刷新的缓冲区。谢谢
      猜你喜欢
      • 1970-01-01
      • 2016-10-27
      • 1970-01-01
      • 2015-03-13
      • 1970-01-01
      • 1970-01-01
      • 2014-08-10
      • 1970-01-01
      相关资源
      最近更新 更多