在Codeigniter中设置会话的位置?

Veg*_* Sv 4 php codeigniter

我正在阅读Codeigniter 2.2教程,我不清楚如何使用会话登录.

假设我有一个login.php,它用数据库检查用户数据.然后,如果它确定,那么我应该在控制器中设置会话?

  $this->load->library('session');
Run Code Online (Sandbox Code Playgroud)

然后在admin.php页面中我应该检查会话是否存在?:

 $this->session->user_data('item'); ??
Run Code Online (Sandbox Code Playgroud)

或者我该如何检查此人是否已登录?

谢谢

jus*_*mer 10

根据文档,要在会话中执行任何自定义操作,您需要加载会话库.如果您打算在整个应用程序中使用会话,我建议您自动加载库.您可以在config/autoload.php中执行此操作.

$autoload['libraries'] = array('session');

然后你不必$this->load->library('session');在每一页上使用.

加载库后,可以根据数据库中的某些信息设置自定义信息.所以在你的情况下,这将在login.php中:

$this->session->set_userdata('userId', 'myId');其中userId是会话变量的名称,并且myId是值.

然后,在后续页面(admin.php)上,您可以检查该值是否存在.

if($this->session->userdata('userId') == '') { //take them back to signin }

  • 我可能会在核心目录中创建一个基本控制器 MY_Controller.php(可能是管理部分的基本控制器和普通站点的基本控制器)该控制器可以检查您是否已登录。那样你就不会'不需要在每个管理控制器上都有你的逻辑。另外我认为在模型或控制器中包含会话设置逻辑很好。由你决定。很多人喜欢瘦控制器和胖模型,反之亦然。 (2认同)