在Codeigniter中设置会话的位置?

时间:2015-03-26 21:40:42

标签: php codeigniter

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

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

  $this->load->library('session');

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

 $this->session->user_data('item'); ??

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

谢谢

4 个答案:

答案 0 :(得分:9)

基于docs,要在会话中执行任何自定义操作,您需要加载会话库。如果您打算在整个应用程序中使用会话,我会建议autoloading库。您可以在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 }

答案 1 :(得分:3)

设置用户会话

$the_session = array("key1" => "value1", "key2" => "value2");
$this -> session -> set_userdata($the_session);

阅读用户会话

$foo = $this -> session -> userdata('key1');

每次使用CI会话功能之前,您都需要$this->load->library('session');。或者您可以在autoload.php $autoload['libraries'] = array('session');

中进行设置

答案 2 :(得分:1)

  1. 加载会话库

    $this->load->library('session');
    
  2. 设置会话

    $_SESSION['email'] = $data['email'];
    
  3. 取消会话

    $this->session->unset_userdata($_SESSION['email']); // $this->session->sess_destroy();
    

答案 3 :(得分:0)

$this->load->library('session');
$this->session->userdata("email")