我在config / autoload.php中将会话设置为自动加载
$autoload['libraries'] = array('database', 'template', 'session');
并在config / config.php
中配置会话和加密$config['sess_driver'] = 'files';
$config['sess_cookie_name'] = 'dornika';
$config['sess_expiration'] = 86400;
$config['sess_save_path'] = NULL;
$config['sess_match_ip'] = TRUE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = TRUE;
然后我用
在一个数组中设置会话数据$this->session->set_userdata($array);
并使用
将其加载到控制器中 $this->session->userdata('login');
包含true 但在我的控制器中,它变为空而不是1(或真)
这是模型中的代码
$is_exist = $this->db->count_all_results();
if($is_exist > 0){
$data_session = array(
'username' => $_POST['username'],
'login' => true
);
$this->session->set_userdata($data_session);
redirect('dashboard/index');
}else{
redirect('login');
}
和控制器
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Dashboard extends CI_Controller
{
public function index()
{
$login = $this->session->userdata('login');
if ($login == true) {
$data['title'] = 'dashboard';
$this->template->load('panel/dashboard', $data);
}else{
redirect('login');
}
}
}
答案 0 :(得分:0)
您正在尝试访问不存在的$this->session->userdata('login')
,您没有为会话指定任何名称。您可以通过在设置会话时为其指定名称来解决此问题。
<强>代码强>
# Setting Session
$this->session->set_userdata("login", $array);
# Accessing Session
$user_data = $this->session->userdata("login");
echo $user_data['some_key']; // or var_dump($user_data);