繁体   English   中英

使用CodeIgniter创建会话(3.1.0)

[英]Creating a session with CodeIgniter (3.1.0)

我目前正在学习将CodeIgniter用于大学项目,并且已经由我的小组分配任务来创建用户登录并为该用户生成会话。 我有登录工作和检查数据库中的凭据,但我遇到了设置会话的麻烦。

获取用户详细信息的登录模型

 <?php
 Class Login_Model extends CI_Model
 {
 function loginUser($username, $password)
 {
 $this -> db -> select('id, userName, password');
 $this -> db -> from('user_tbl');
 $this -> db -> where('userName', $username);
 $this -> db -> where('password', $password);
 $this -> db -> limit(1);

  $query = $this -> db -> get();

  if($query -> num_rows() == 1)
  {
  return $query->result();
 }
 else
 {
  return false;
}
}
}

登录控制器类,尝试设置会话的功能

function checkDatabase($password){
  $this->load->model('login_model');

  $username = $this->input->post('username');

  $result = $this->login_model->loginUser($username, $password);

  if($result)
  {
    $sess_array = array();
     foreach($result as $row)
     {
       $sess_array = array(
         'id' => $row->id,
         'username' => $row->username
       );

    $this->session->set_userdata($sess_array);
  }
     return TRUE;
  }
  else
  {
    return false;
  }
}
}

最后尝试检索会话数据

  <?php
   defined('BASEPATH') OR exit('No direct script access allowed');

   class Dashboard extends CI_Controller {


 public function index()
 {

    $data['title'] = 'Dashboard';

    $data['username'] = $this->session->userdata('username');


    $this->load->view('template/header', $data);
    $this->load->view('template/navigation');
    $this->load->view('dashboard_view',$data);
    $this->load->view('template/footer');
}
}

我在autoload.php文件中加载会话库,这就是为什么我不在每个函数中。 在dashboard_view中,我回显$ username,但没有显示任何内容。

有任何想法吗?

编辑

仪表板控制器

  <?php
  defined('BASEPATH') OR exit('No direct script access allowed');

  class Dashboard extends CI_Controller {


public function index()
{

    $data['title'] = 'Dashboard';

    $session_data = $this->session->userdata();

    print_r($session_data);
    die;

   $user = $session_data['username'];


    $this->load->view('template/header', $data);
    $this->load->view('template/navigation');
    $this->load->view('dashboard_view',$data);
    $this->load->view('template/footer');
}
}

尝试这个

在控制器中

function checkDatabase($password)
{
    $this->load->model('login_model');

    $username = $this->input->post('username');

    $result = $this->login_model->loginUser($username, $password);

    if($result != false)
    {
        $sess_array = array(
            'id' => $result[0]['id'],
            'username' => $result[0]['userName']
        );

        $this->session->set_userdata($sess_array);

        print_r($this->session->userdata());
        die;
    }
    else
    {
        return false;
    }
}

在模型中

function loginUser($username, $password)
{
    $this->db->select('id, userName, password');
    $this->db->from('user_tbl');
    $this->db->where('userName', $username);
    $this->db->where('password', $password);
    $this->db->limit(1);

    $query = $this->db->get();

    if($query -> num_rows() == 1)
    {
        return $query->result_array();
    }
    else
    {
        return false;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM