PHP CodeIgniter会话信息丢失

时间:2014-05-07 22:57:58

标签: php codeigniter session cookies

以下是设置会话数组的代码:

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;
 }

这是

的结果
<?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
)

正如你所看到的,只有user_id会话是好的,其他一切都是null值,你知道问题是什么吗?

数据库:http://prntscr.com/3h6fc9

编辑:解决了! 问题出在登录功能中,我改为使用它:

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;
 }

1 个答案:

答案 0 :(得分:0)

在您的模型中,您只需返回$newdata而不是true AND在你的控制器中获取变量$ aaa的返回数据。 然后在下一行设置会话

 $this->session->set_userdata('logged_info',  $aaa);

现在您的会话已设置。 你可以在任何类似的地方得到它

$data = $this->session->userdata('logged_info')