我正在阅读Codeigniter 2.2教程,我不清楚如何使用会话登录。
假设我有一个login.php,用于检查数据库中的用户数据。然后,如果它确定,那么我应该在控制器中设置会话?
$this->load->library('session');
然后在说admin.php页面我应该检查会话是否存在? :
$this->session->user_data('item'); ??
或者如何检查此人是否已登录?
谢谢
答案 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)
加载会话库
$this->load->library('session');
设置会话
$_SESSION['email'] = $data['email'];
取消会话
$this->session->unset_userdata($_SESSION['email']); // $this->session->sess_destroy();
答案 3 :(得分:0)
$this->load->library('session');
$this->session->userdata("email")