Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.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 CodeIgniter设置会话错误_Php_Mysql_Codeigniter_Session - Fatal编程技术网

Php CodeIgniter设置会话错误

Php CodeIgniter设置会话错误,php,mysql,codeigniter,session,Php,Mysql,Codeigniter,Session,我试图在验证用户的所有凭据后,从控制器在codeigniter中设置会话。我的登录控制器的方法中有此代码。方法“login\u check”由表单验证的set rules方法作为回调函数调用。我尝试了所有可能的方法,但由于某些原因,我无法设置会话,根据CI手册,会话应该是一项直接的任务 注意:会话在autoload.php中自动加载 $this->form_validation->set_rules('password', 'password', 'trim|required

我试图在验证用户的所有凭据后,从控制器在codeigniter中设置会话。我的登录控制器的方法中有此代码。方法“
login\u check
”由表单验证的set rules方法作为回调函数调用。我尝试了所有可能的方法,但由于某些原因,我无法设置会话,根据CI手册,会话应该是一项直接的任务

注意:会话在autoload.php中自动加载

    $this->form_validation->set_rules('password', 'password', 'trim|required|callback_login_check');


public function login_check($password) {
    $this->load->library('session');
    //Field validation succeeded.  Validate against database
    $username = $this->input->post('username');
    $this->load->model('industry_person');

    //query the database
    $query = $this->industry_person->check_login($username, $password);

    if (!$query) {
        $this->form_validation->set_message('login_check', 'Invalid username or password');
        return false;
        $this->index();
    } else {
        $data = array(
            'username' => $username,
            'is_logged_in' => true
        );
        if (!$this->session->set_userdata('logged_in', $data))
            echo "error setting session";

    }
}

当我在数据库中输入正确的凭据并且凭据是否匹配时,我将以“错误设置会话”的形式接收输出。

$data
中删除单引号。它是一个数组变量。试试这个

if (!$this->session->set_userdata('logged_in', $data))
            echo "error setting session";

$data
中删除单引号。它是一个数组变量。试试这个

if (!$this->session->set_userdata('logged_in', $data))
            echo "error setting session";

因为
$data
是一个数组。。试一试

if (!$this->session->set_userdata('logged_in', $data))
            echo "error setting session";

因为
$data
是一个数组。。试一试

if (!$this->session->set_userdata('logged_in', $data))
            echo "error setting session";

当我在config.php文件中更改加密密钥时,我成功地使它工作。之前的加密密钥包含“\u1”和新密钥,只有字母字符。

当我在config.php文件中更改加密密钥时,我成功地使其工作。之前涉及的加密密钥“\u1”和新密钥只有字母字符。

在codeigniter中使用会话是基于数组的,要在控制器构造函数中手动初始化会话类,请使用$this->load->library函数:

$this->load->library('session');
$this->session->userdata('item');
会话数组的一个有用方面是,您可以向其中添加自己的数据,并将其存储在用户的cookie中。你为什么要这么做?这里有一个例子:

假设某个特定用户登录到您的站点。一旦通过身份验证,您就可以将他们的用户名和电子邮件地址添加到会话cookie中,从而使该数据对您全局可用,而无需在需要时运行数据库查询

将数据添加到会话数组涉及将包含新数据的数组传递到此函数

$this->session->set_userdata($array);
其中,$array是包含新数据的关联数组。下面是一个例子:

$newdata = array(
                   'username'  => 'johndoe',
                   'email'     => 'johndoe@some-site.com',
                   'logged_in' => TRUE
               );

$this->session->set_userdata($newdata);
使用以下功能可以使用会话阵列中的任何信息:

$this->load->library('session');
$this->session->userdata('item');
例如:


在codeigniter中使用会话基于数组,要在控制器构造函数中手动初始化会话类,请使用$this->load->library函数:

$this->load->library('session');
$this->session->userdata('item');
会话数组的一个有用方面是,您可以向其中添加自己的数据,并将其存储在用户的cookie中。你为什么要这么做?这里有一个例子:

假设某个特定用户登录到您的站点。一旦通过身份验证,您就可以将他们的用户名和电子邮件地址添加到会话cookie中,从而使该数据对您全局可用,而无需在需要时运行数据库查询

将数据添加到会话数组涉及将包含新数据的数组传递到此函数

$this->session->set_userdata($array);
其中,$array是包含新数据的关联数组。下面是一个例子:

$newdata = array(
                   'username'  => 'johndoe',
                   'email'     => 'johndoe@some-site.com',
                   'logged_in' => TRUE
               );

$this->session->set_userdata($newdata);
使用以下功能可以使用会话阵列中的任何信息:

$this->load->library('session');
$this->session->userdata('item');
例如:


您已经设置了一个加密密钥,对吗?
如果(!$this->session->set_userdata('logged_in','$data'))
$data在它周围加了引号,但不应该加引号,它是保存数组的变量。另外,set_userdata只接受数组,而不接受您要传递的字符串“logged_in”。是的,我已经设置了加密密钥。您已经设置了加密密钥,对吗?
如果(!$this->session->set_userdata('logged_in','$data'))
$data在其周围加了引号,但不应该加引号,它是保存数组的变量。另外,set_userdata只接受数组,而不接受您传递的字符串“logged_in”。是的,我已设置加密密钥Yup,您将数据作为字符串传递,而不是数组。哦,很抱歉,它已被删除,但当我在stackoverflow上编辑它时,我忘了删除单引号。是的,您将数据作为字符串传递,不是数组。哦,很抱歉,它已经被删除了,但当我在stackoverflow上编辑它时,我忘了删除单引号。