Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 未定义的属性:CI::$session_Php_Codeigniter_Session - Fatal编程技术网

Php 未定义的属性:CI::$session

Php 未定义的属性:CI::$session,php,codeigniter,session,Php,Codeigniter,Session,在登录页面上加载模型时遇到问题。这里的会话有问题。我有一个安全类助手,$key是它的一部分。但我认为这与错误所说的会话有关 我想我已经正确设置了num行,不确定这是否也是原因 A PHP Error was encountered Severity: Notice Message: Undefined property: CI::$session Filename: core/Model.php Line Number: 51 型号 <?php if ( ! defined('BASE

在登录页面上加载模型时遇到问题。这里的会话有问题。我有一个安全类助手,$key是它的一部分。但我认为这与错误所说的会话有关

我想我已经正确设置了num行,不确定这是否也是原因

A PHP Error was encountered
Severity: Notice
Message: Undefined property: CI::$session
Filename: core/Model.php
Line Number: 51
型号

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Users_model extends CI_Model {

    private $user_id;
    private $username;
    private $permission = array();

    public function __construct() {

        if (isset($this->session->userdata['user_id'])) {
            $user_query = $this->db->query("SELECT * FROM " . $this->input->post('dbprefix') . "user WHERE user_id = '" . (int)$this->session->userdata['user_id'] . "' AND status = '1'");

            if ($user_query->num_rows) {
                $this->user_id = $user_query->row['user_id'];
                $this->username = $user_query->row['username'];

                $this->db->query("UPDATE " . $this->input->post('dbprefix') . "user SET ip = '" . $this->db->escape($this->input->server['REMOTE_ADDR']) . "' WHERE user_id = '" . (int)$this->session->userdata['user_id'] . "'");

                $user_group_query = $this->db->query("SELECT permission FROM " . $this->input->post('dbprefix'). "user_group WHERE user_group_id = '" . (int)$user_query->row['user_group_id'] . "'");

                $permissions = unserialize($user_group_query->row['permission']);

                if (is_array($permissions)) {
                    foreach ($permissions as $key => $value) {
                        $this->permission[$key] = $value;
                    }
                }
            } else {
                $this->logout();
            }
        }
    }

    public function login($username, $password) {
        $user_query = $this->db->query("SELECT * FROM " . $this->input->post('dbprefix') . "user WHERE username = '" . $this->db->escape($username) . "' AND (password = SHA1(CONCAT(salt, SHA1(CONCAT(salt, SHA1('" . $this->db->escape($password) . "'))))) OR password = '" . $this->db->escape(md5($password)) . "') AND status = '1'");

        if ($user_query->num_rows) {
            $this->session->userdata['user_id'] = $user_query->row['user_id'];

            $this->user_id = $user_query->row['user_id'];
            $this->username = $user_query->row['username'];         

            $user_group_query = $this->db->query("SELECT permission FROM " . $this->input->post('dbprefix') . "user_group WHERE user_group_id = '" . (int)$user_query->row['user_group_id'] . "'");

            $permissions = unserialize($user_group_query->row['permission']);

            if (is_array($permissions)) {
                foreach ($permissions as $key => $value) {
                    $this->permission[$key] = $value;
                }
            }

            return true;
        } else {
            return false;
        }
    }

如果在代码中使用会话,请确保通过设置加密密钥在config.php文件中自动加载。如果不自动加载,则可以使用
$this->load->library('session')
加载它。 但必须设置加密密钥才能在控制器功能中自动加载或加载会话


这里有详细信息

加上已启动的会话,您需要在构造函数中检查父函数或在构造函数中编写此代码:
**parent::u construct()**

这很重要。(但没有
*
字符)这正是我想要的:)我想授权用户是否可以在当前控制器中访问这些方法,或者是否可以在我的构造函数中访问这些方法。你的回答解决了这个问题。