[英]PHP CodeIgniter session information lost
Here is the code where session array is being set: 这是设置会话数组的代码:
function login($username,$password)
{
$this->db->select('user_id', 'username', 'password', 'email', 'register_date', 'permissions');
$this->db->from('users');
$this->db->where("username",$username);
$this->db->where("password",sha1(md5($password)));
$query=$this->db->get();
if($query->num_rows() == 1)
{
foreach($query->result() as $rows)
{
$newdata = array(
'user_name' => $rows->username,
'user_id' => $rows->user_id,
'user_email' => $rows->email,
'user_date' => $rows->register_date,
'user_perm' => $rows->permissions,
'logged_in' => TRUE,
);
}
$this->session->set_userdata($newdata);
return true;
}
return false;
}
And here is the result of 这是结果
<?php print_r ( $this->session->all_userdata()); ?>
Array
(
[session_id] => d18899b96fd0cd31c8e2f64cac152133
[ip_address] => ::1
[user_agent] => Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36
[last_activity] => 1399503084
[user_data] =>
[user_name] =>
[user_id] => 24
[user_email] =>
[user_date] =>
[user_perm] =>
[logged_in] => 1
)
As you can see, only user_id session is good, everything else has null value, do you know what the problem is? 如您所见,只有user_id会话良好,其他所有内容都为空值,您知道问题出在哪里吗?
Database: http://prntscr.com/3h6fc9 数据库: http : //prntscr.com/3h6fc9
EDIT: SOLVED! 编辑:解决了! The issue was in login function, i use this instead:
问题出在登录功能中,我改用它:
function login($username,$password)
{
$password = sha1(md5($password));
$query = $this->db->get_where('users', array('username' => $username, 'password' => $password));
if($query->num_rows() == 1)
{
foreach($query->result() as $rows)
{
$newdata = array(
'user_name' => $rows->username,
'user_id' => $rows->user_id,
'user_email' => $rows->email,
'user_date' => $rows->register_date,
'user_perm' => $rows->permissions,
'logged_in' => TRUE
);
}
$this->session->set_userdata($newdata);
return true;
}
return false;
}
in your model you just return $newdata
instead of true AND in your controller get the return data in variabl $aaa. 在模型中,您只返回
$newdata
而不是true,并且在控制器中以variabl $ aaa获取返回数据。 then in next line set session 然后在下一行设置会话中
$this->session->set_userdata('logged_info', $aaa);
now your session is set. 现在您的会话已设置。 You can get that any where like it
你可以在任何地方得到它
$data = $this->session->userdata('logged_info')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.