php - 如何在 Controller 的 __construct() 函数中没有 die() 的情况下退出 codeigniter?

标签 php codeigniter

我有一个 Controller ,在构造函数中,我想检查用户是否登录。如果没有,我希望显示一条错误消息,并让脚本退出而不在 Controller 中运行任何其他功能。此 Controller 将仅由 ajax 调用,因此错误将通过 JSON 显示,然后客户端上的 javascript 将其显示给用户。

我该怎么做?如果我这样做:

function __construct()
{
   if (! $this->loggedIn() )
   {
      echo json_encode( array('error'=> true) );
      die;
   }    
}

我认为不会显示该消息,因为 codeigniter 使用输出缓冲。有什么想法吗?

最佳答案

我了解到您的问题是客户希望得到 json 类型的响应,因此可以使用两个选项:

public function __construct(){

    $_bad_login_msg = 'please try again' ;
    parent::__construct();

    if(!userLoggedIn()){

        $this->output
        ->set_content_type('application/json')
        ->set_output(json_encode($_bad_login_msg));

        //or just use 
        //     echo json_encode($_bad_login_msg);
        die;
    }
}

http://codeigniter.com/user_guide/libraries/output.html

你不会有任何缓冲问题,缓冲区内容将被发送到客户端之后死...

关于php - 如何在 Controller 的 __construct() 函数中没有 die() 的情况下退出 codeigniter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11176880/

相关文章:

php - 我如何在 laravel 的 Controller 中包含 Blade View ?

php - 如何在 yii2 中添加哈希密码

php - 语法错误,codeigniter 中出现意外的 'protected' (T_PROTECTED)

php - 如何将数据从记录表传递到 Modal 以进行编辑

php - 显示 Jquery 从数据库中选择的数据以更新 [Codeigniter]

php - 制作一个 ScrollView ,当用户向下滚动时更新

php - CakePHP 清理实用程序

php - jQuery 和 PHP : Resizing, 刷新和裁剪

mysql - codeigniter - 如何重置填充表上的自动增量?

php - 下拉列表未在另一个下拉列表中发布相应的值