【问题标题】:Creating a session with CodeIgniter (3.1.0)使用 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 没有错误或输出

标签: php codeigniter session


【解决方案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控制器的索引
猜你喜欢
  • 2021-12-25
  • 2016-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
  • 2018-08-08
  • 2014-05-19
相关资源
最近更新 更多