Codeigniter重定向/加载视图

时间:2014-10-05 07:01:50

标签: php codeigniter session

我真的很想了解两种功能的最佳用途。

控制器:(经过大量处理后,我们可以直接跳到创建会话)

$isLoggedin = array( 'user_name' => $row['username'] , 'user_type' => 'user' ,  'is_loggedin' => TRUE);
$this->session->set_user($isLoggedin); 
redirect('controller/index');

在控制器中,

public function __construct()
{
parent::__construct();
    //should i check for the session here?
}

function index(){
 // or should i check here?
}

在登录控制器中,创建会话后,我将其传递给主控制器。在访问主页之前,我想验证表示创建的会话的session['is_loggedin'] == TRUE是否已登录。

我的困惑是,因为每次调用控制器时都会先加载构造函数。如果我错了请纠正我。所以在登录控制器的重定向中,我不应该调用索引?

我应该只调用控制器然后让构造函数处理,然后在构造函数中处理,就像这样。

public function __construct(){
parent::__construct();
if($session['is_loggedin'] == TRUE)
$this->load->view('homepage');
else
redirect('Login');
}

所以我想我不再需要索引了吗?可以这样调用控制器吗?在重定向中,我还必须将$ session从控制器传递给控制器​​吗?

2 个答案:

答案 0 :(得分:0)

使用构造函数加载该特定类中其他函数所需的公共库和帮助程序。 当没有提到其他功能时,索引功能作为默认功能。 例如,你可以这样做

public function index(){
  $this->login();
}

public function login(){
  login code

}

所以这样your base url/class name/base url/class name/ login都会有效。 如果您在application/config/autoload.php文件中自动加载会话库,则无需担心会话,只需在config.php文件中设置加密密钥

如果您不想自动加载会话,则需要在每个需要维护会话的类构造函数上手动加载会话。

答案 1 :(得分:0)

在加载任何库或帮助程序之前,您最好检查用户是否在构造函数中有登录会话。但要确保加载会话和数据库以检查用户登录状态。这可以帮助您防止任何其他未经授权的访问您网站的其他功能和资源,因为可能只是直接在URL中键入其他一些功能的名称!