使用 CodeIgniter (3.1.0) 创建会话

Posted

技术标签:

【中文标题】使用 CodeIgniter (3.1.0) 创建会话【英文标题】:Creating a session with CodeIgniter (3.1.0) 【发布时间】:2017-03-08 02:39:40 【问题描述】:

我目前正在学习将 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');


【问题讨论】:

-&gt; 之间没有空格。例如$this-&gt;db-&gt;get(); @AbdullaNilam 还是不行。 它的突出部分没有修复 现在有什么错误或输出?? @AbdullaNilam 没有错误或输出 【参考方案1】:

试试这个

在控制器中

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;
    

【讨论】:

返回.... 数组 ( [__ci_last_regenerate] => 1477434145 [id] => 19 [username] => cian ) 所以它的作品。删除print_r($this-&gt;session-&gt;userdata()); die; 并继续工作 在我试图访问会话数据的另一个页面上,执行 print_r 只会给我 Array ( [__ci_last_regenerate] => 1477434145) 设置会话后使用redirect()然后访问视图 只需使用redirect("dashboard"),这将转到dashboard控制器的索引

以上是关于使用 CodeIgniter (3.1.0) 创建会话的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 codeigniter 创建 seo 友好的 url?

使用codeigniter查询本月创建的记录

使用 codeigniter 创建基于级别的动态菜单

如何使用 codeigniter 动态创建列

Codeigniter 使用 dbforge 创建 ENUM 字段

使用多输入 Codeigniter 创建过滤器