我的MY_Controller位于我的核心文件夹中。
<?php
class MY_Controller extends CI_Controller {
public function __construct()
{
parent::__construct();
}
public function is_logged_in($data){
$session = $this->session->userdata();
if($session['isloggedin']['username'] == ''){
return isset($session);
}else{
return FALSE;}
}
}
?>
我非常确定我会从上面的代码中复制粘贴上面的代码,而且我还没有根据自己的需要进行编辑。
任何情况我都有疑问。
所以我有一个页面控制器,负责根据登录用户的account_type访问某些视图。
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class pages extends MY_Controller {
}?>
这是用户登录时的会话。
$new_session = array( 'username' => $this->input->post('username'),
'email' => $this->input->post('email'),
'type' => $this->input->post('type'),
'logged_in' => TRUE);
$this->session->set_userdata($new_session);
如何从页面控制器中调用MY_controller函数is_logged_in()
,或者是扩展MY_Controller&#39;自动也调用函数is_logged_in()
或者我必须基本上把它放在__construct
中,以便它自动调用函数?
另外,我如何检查用户是否已登录并查看其详细信息?
我是否将session_data从我的控制器传递给MY_Controller?如果是这样,怎么样?
或者我应该在$this->session->userdata();
函数中添加is_logged_in()
行吗?
P.S。我尝试使用身份验证库,但它们包含的内容远远超出我的需要,我只需要一个基本的身份验证。有什么建议?现在仍然保持着。
答案 0 :(得分:2)
您可以直接从您的页面控制器调用is_logged_in()函数。就像这样:
<强> Pages.php 强>
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Pages extends MY_Controller {
function __construct() {
parent::__construct(); // this will trigger the __construct() of MY_Controller
}
}
<强> MY_Controller.php 强>
<?php
class MY_Controller extends CI_Controller{
public function __construct() {
parent::__construct();
if( $this->is_logged_in() ) {
// do something if user is allowed to access.
}
else {
// do something if user is not allowed to access
}
}
}