Dam*_*dup 1 session codeigniter
我很新,刚刚开始使用Codeigniter,并且遇到了一些关于会话的混乱.
我想要实现的是,像常规的PHP一样,我想通过使用检查会话数据的头包含文件来检查用户是否登录.我不希望在将数据传递给视图文件时检查/写入每个控制器中的检查代码.
有人可以告诉我如何做到这一点?
防爆.我不想在每个控制器中执行以下操作:
//Controller:
if($this->session->userdata('loggedin'){
$data['loggedin'] = $this->session->userdata('loggedin');
}
//I dont want to check the above on every function in every controller
$this->load->view('some_view_file', $data);
//some_view_file
if(isset($loggedin)){
echo "You are logged in!";
}
else
{
echo "Please log in!";
}
Run Code Online (Sandbox Code Playgroud)
相反,我希望有类似的东西:
//some view file
if(isset($loggedin))
{
echo "your logged in";
}
else
{
echo "please log in";
}
Run Code Online (Sandbox Code Playgroud)
而且,我如何使用本机php会话而不是CI会话.任何帮助都感激不尽.谢谢.
首先,没有理由你不能在你的视图中写这样的东西:
<? echo ($this->session->userdata('loggedin')) ? "Logged In": "Not Logged In"; ?>
Run Code Online (Sandbox Code Playgroud)
然后你的控制器不需要任何代码.
但是,如果检查更复杂或某些事情,那么您可以在几个地方进行检查.
1)在自定义控制器的构造函数中:创建一个新文件application/core/MY_Controller.php,并使用以下内容覆盖构造函数:
class MY_Controller extends CI_Controller
{
public function __construct()
{
parent::__construct();
if($this->session->userdata("loggedin")) {
// do something
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后让所有控制器扩展MY_Controller.
2)或post_controller_constructor挂钩.http://codeigniter.com/user_guide/general/hooks.html(这是更透明的,如果你已经拥有大量的控制器,可能会更容易)
您可以使用本机会话:http: //codeigniter.com/wiki/Native_session/
| 归档时间: |
|
| 查看次数: |
4577 次 |
| 最近记录: |