Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在Codeigniter中将用户id从数据库添加到会话数据?_Php_Codeigniter_Session - Fatal编程技术网

Php 在Codeigniter中将用户id从数据库添加到会话数据?

Php 在Codeigniter中将用户id从数据库添加到会话数据?,php,codeigniter,session,Php,Codeigniter,Session,我是CodeIgniter的新手,在将用户id(用户登录后)从数据库添加到会话数据时遇到了问题这里是我的代码问题可能会在SOF上被问到,在我付出了所有努力之后,我问这个问题 //登录模型 <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Login_model extends CI_Model { function __construct() {

我是CodeIgniter的新手,在将用户id(用户登录后)从数据库添加到会话数据时遇到了问题这里是我的代码问题可能会在SOF上被问到,在我付出了所有努力之后,我问这个问题

//登录模型

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

class Login_model extends CI_Model
{
     function __construct()
     {
          // Call the Model constructor
          parent::__construct();

     }

     //get the username & password from tbl_usrs
     public function get_user($usr, $pwd)
     {    
          $sql = "select * from tbl_usrs where username = '" . $usr . "' and password = '" .$pwd . "' ";
          $query = $this->db->query($sql);
          return $query->num_rows();
     }

/*           public function set_session($username) {
                $sql="SELECT * FROM tbl_usrs WHERE username='".$username."' LIMIT 1 ";
                $result=$this->db->query($sql);
                $row=$result->row();


                $sess_data=array (

                    'id'=>$row->id,
                    'username'=>$username,
                    'is_login'=>TRUE
                    );

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




            } //set_seesion function ends
*/   
    }

?>


当我尝试在视图中打印会话数据时,我得到的用户\u id=>为空

这些变量都不可用于分配:

'user_id' => $user_id,
'username' => $username,
'password'=>$password,
原因是您使用了:

$usr_result = $this->login_model->get_user($username, $password);
但是,这只是返回的行数的结果:

public function get_user($usr, $pwd)
...
    return $query->num_rows();
所以现在,
$usr\u result
将是返回的行数,而不是相关用户的数据

因此,您应该做的是在上面的登录函数
return$query->num_rows()中设置会话数据和下面的
$query=

public function get_user($usr, $pwd){
    ....
    $query = $this->db->query($sql);
    $this->session->set_userdata('sessiondata', $query->row_array());
}
请注意,由于我们只从查询中检索到一个用户,所以我们也只希望返回一行。此外,您希望存储一个关联数组,而不是对象,因此我们使用
$query->row_array()
返回格式化为
数组的
1行
,其中
键是列名,值是列结果

现在,做一个
echo',打印($this->session->userdata('sessiondata'),true),“”
获取包含数组的对象的格式化列表。然后可以相应地映射名称

旁注,我不会在会话中存储密码

public function get_user($usr, $pwd){
    ....
    $query = $this->db->query($sql);
    $this->session->set_userdata('sessiondata', $query->row_array());
}