【问题标题】:Add user id to session data (codeigniter)将用户 ID 添加到会话数据(codeigniter)
【发布时间】:2012-01-23 02:36:34
【问题描述】:

使用 CodeIgniter 我正在尝试将数据库中的用户 ID 添加到会话数据中。

我看过这个question,但它对我不起作用

控制器代码:

function validate_credentials()
{       
    $this->load->model('users_model');
    $query = $this->users_model->validate();

    // if the users credentials validated...

    if($query) 
    {
        $user_id = $this->users_model->get_userID($this->input->post('email'));

        /* 

        I dont need to worry about insecure code because all incoming data 
        is filtered (set in config.php)

        */

        $data = array(
            'username' => $this->input->post('username'), 
            'is_logged_in' => true,
            'user_id' => $user_id
        );

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

        redirect('site/members');
    }

    else 

    {
        // incorrect username or password
        $this->index(); 
    }
}   

型号代码:(该列在db的users表中称为'userID')

function get_userID($email){

    $this->db->where('email',$email);
    $query = $this->db->get('users');       

    foreach ($query->result() as $row)
    {
        $user_id = $row->userID;
    }

    return $user_id;

}

当我在视图中调用数组时,用户 ID 不会出现。

<?php $this->session->userdata('user_id');?>

【问题讨论】:

  • 具体的问题是什么?您在下一页的会话中没有看到 $data 数组吗?
  • 道歉;我已经更新了原帖。当我从视图中调用数组时,我什么也得不到。 session->userdata('user_id');?>
  • 其他变量出现了吗?
  • 您需要回显会话:&lt;?php echo $this-&gt;session-&gt;userdata('user_id'); ?&gt;

标签: mysql codeigniter


【解决方案1】:

如果你只是想查看用户ID试试..

<?php echo $this->session->userdata('user_id');?>

【讨论】:

    【解决方案2】:

    $this 变量在视图中与在控制器中不同。如果您想以这种方式引用会话,则必须像这样获取 $CI 实例:

    $CI = &get_instance();
    $CI->session->userdata('user_id');
    

    【讨论】:

    • 我认为这是不正确的,您可以从视图访问实例,因为它是一个包含文件,它本质上是控制器方法的一部分。您的说法对于库或助手是正确的,因为它们与 CI 超类是分开的。
    • 我原则上同意,但在实践中我总是不得不在 CI 中这样做。
    • 嗯,这行不通。无论我以谁的身份登录,它都会返回 6。
    • 如果您在站点控制器中提取会话数据并将值放入视图的 $data 变量中会发生什么?因此,在加载您的成员视图之前,您需要执行 $data['user_id'] = $this->session->userdata('user_id');。这行得通吗?
    • 如果将 session_write_close() 放在重定向之前会发生什么?
    【解决方案3】:

    尝试回显您的查询,它总是有助于理解您的问题,例如尝试回显 $user_id$data 有时由于小错误,您在查询中没有得到值,回显会显示结果

    【讨论】:

      猜你喜欢
      • 2015-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多