Php CodeIgniter设置会话错误
我试图在验证用户的所有凭据后,从控制器在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
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上编辑它时,我忘了删除单引号。