Php 会话赢得的CodeIgniter用户数据';行不通

Php 会话赢得的CodeIgniter用户数据';行不通,php,codeigniter,session,Php,Codeigniter,Session,我正在尝试创建一个博客网站,我有一个名为ci_test的数据库,它有两个表用户和一篇文章。我有一个无法修复的会话问题。我设定- $config['encryption_key'] = '1234'; 另外,设置属性 $autoload['libraries'] = array('database','session'); 但它给出了一个错误: 严重性:通知 消息:未定义的属性:Admin::$session 文件名:controllers/admin.php 电话号码:18 我的登录码是:

我正在尝试创建一个博客网站,我有一个名为ci_test的数据库,它有两个表用户和一篇文章。我有一个无法修复的会话问题。我设定-

$config['encryption_key'] = '1234';
另外,设置属性

$autoload['libraries'] = array('database','session');
但它给出了一个错误:

严重性:通知

消息:未定义的属性:Admin::$session

文件名:controllers/admin.php

电话号码:18

我的登录码是:

<?php

class Login extends MY_Controller{
    
    public function index()
    {
        $this->load->helper('form');
        $this->load->view('public/admin_login');
    }

        public function admin_login()
    {
        $this->load->library('form_validation');

        $this->form_validation->set_rules('username','user name','required|alpha|trim');
        $this->form_validation->set_rules('password','password','required');

        $this->form_validation->set_error_delimiters('<p class="text-danger">','</p>');

        if($this->form_validation->run())
        {

            $username = $this->input->post('username');
            $password = $this->input->post('password');

            $this->load->model('loginmodel');
            $login_id = $this->loginmodel->login_valid($username, $password);
            if($login_id)
            {
                //$this->load->library('session');
                $this->session->set_userdata('user_id', $login_id);

                redirect('admin/dashboard');
            }
            else{
                echo 'password dont'; 
            }

        }
        else
        {
            $this->load->view('public/admin_login');
        }


    }
}
管理员控制器:

<?php

class Admin extends CI_Controller{
    
    public function dashboard()
    {


        $this->load->model('articlesmodel','article');

        $articles = $this->article->articles_list();

        $this->load->view('admin/dashboard',['articles'=> $articles]);
    }

    public function __construct()
    {
        if(! $this->session->userdata('user_id'))
        {
            redirect('login');
        }       
    }


}

1.
编辑
删除
未找到记录

确保您的文件名是
controllers/Admin.php
而不是
controllers/Admin.php
第一个字母总是大写,只有相同的名称适用于类

而且您的construct()应该始终低于类,并且您缺少父项::\uu construct()

访问数据

$id = $this->session->userdata('user_id');

$id['id'];
或尝试

确保您在使用Ci3中的文件时已设置路径

$config['sess_cookie_name'] = 'ci_sessions';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = FCPATH . 'application/cache/session/';
Codeigniter加密密钥

更新 如果登录正确,则单击控制器上的

$login = $this->some_model->login($this->input->post('username'), $this->input->post('password'));

if ($login) {
    $this->session->set_userdata(array('user_id' => $login->column_name));
    redirect('successcontroller');
} else {
     // Error
}

确保您的文件名是
controllers/Admin.php
而不是
controllers/Admin.php
第一个字母总是大写,仅类是相同的

而且您的construct()应该始终低于类,并且您缺少父项::\uu construct()

访问数据

$id = $this->session->userdata('user_id');

$id['id'];
或尝试

确保您在使用Ci3中的文件时已设置路径

$config['sess_cookie_name'] = 'ci_sessions';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = FCPATH . 'application/cache/session/';
Codeigniter加密密钥

更新 如果登录正确,则单击控制器上的

$login = $this->some_model->login($this->input->post('username'), $this->input->post('password'));

if ($login) {
    $this->session->set_userdata(array('user_id' => $login->column_name));
    redirect('successcontroller');
} else {
     // Error
}
这是行不通的,因为CodeIgniter需要加密密钥。请看这里的文档

试试这个

$key = $this->encryption->create_key(16);
然后使用下面的键

$config['encryption_key'] = 'YOUR KEY';
或者,更好的是,这里有两个网站将为您生成CodeIgniter加密密钥

这是行不通的,因为CodeIgniter需要加密密钥。请看这里的文档

试试这个

$key = $this->encryption->create_key(16);
然后使用下面的键

$config['encryption_key'] = 'YOUR KEY';
或者,更好的是,这里有两个网站将为您生成CodeIgniter加密密钥


添加了我的答案希望有帮助。添加了我的答案希望有帮助。认为是更多的原因导致了他的问题。认为是更多的原因导致了他的问题。错误已被移动,但仍然存在问题。主席先生,会话在用户id中没有值。生成一个空数组,因此在视图中找不到任何记录。如何解决它。您是否像我的回答中的第二个示例那样设置了会话值
$this->session->set_userdata(数组('user_id'=>$login_id))并确保您在回答顶部正确命名了文件是的,先生,我照您说的做,但它不起作用。登录检查也不起作用,因为会话没有值,请在尝试获取结果
$this->session->set_userdata(数组('user_id'=>$login_id->您的_列名称)时尝试类似的操作我已经更新了答案。但是需要查看您的登录模型。\u有效错误已移动,但仍然存在问题,先生,会话在用户id中没有值,因此无法生成空数组,因此在视图中找不到记录。如何解决它。您是否像我的回答中的第二个示例那样设置了会话值
$this->session->set_userdata(数组('user_id'=>$login_id))并确保您在回答顶部正确命名了文件是的,先生,我照您说的做,但它不起作用。登录检查也不起作用,因为会话没有值,请在尝试获取结果
$this->session->set_userdata(数组('user_id'=>$login_id->您的_列名称)时尝试类似的操作我已经更新了答案。但是需要查看您的登录模型。\u有效
$login = $this->some_model->login($this->input->post('username'), $this->input->post('password'));

if ($login) {
    $this->session->set_userdata(array('user_id' => $login->column_name));
    redirect('successcontroller');
} else {
     // Error
}
$config['encryption_key'] = '1234';
$key = $this->encryption->create_key(16);
$config['encryption_key'] = 'YOUR KEY';