0

当您登录我的网站时,您将直接被定向到您的个人资料页面。这样您就可以看到您的姓名、电话、电子邮件等。但是当我登录我的网站时,我会被定向到我的个人资料页面,但我会获取数据库中每个用户的所有数据。所以我得到了每个用户的名字,每个用户的电话等。我只想获取登录人的数据。我该如何实现呢?我做了一些思考,并想出了一个where userID = ID of the user HERE 但是我不知道在哪里可以得到这个用户的 ID。登录时我正在启动一个会话,那么我需要将登录的用户 ID 存储在会话中吗?还是不安全?

我正在学习和使用 CodeIgniter,所以我以 MVC 模式进行操作。

我登录并设置会话的控制器

if($query){
    $data = array(
             'username' => $this->input->post('loginEmail'),
             'is_logged_in' => true
            );
    $this->session->set_userdata($data);

控制器

if($logged_in){
    //if the user is logged in 
    $this->load->model('profile_model');

    if($query = $this->profile_model->userInfo()){
        $data['records'] = $query;
            $data['content'] = 'profile_view';
            $this->load->view('templates/template', $data);
    }
}

模型

class Profile_model extends CI_Model{

    function userInfo(){
        $query = $this->db->get('tbl_users');
        return $query->result();
    }
}

查看我想在哪里显示我的数据

if(isset($records)){
    foreach($records as $row){
        echo $row->username;
        echo $row->cellphone;
    }
}
4

1 回答 1

1

您所缺少的只是模型中的 WHERE 语句。作为 WHERE 语句的参数,您可以使用包含您的电子邮件地址的会话变量(假设您的数据库表将电子邮件存储在名为“用户名”的字段中:

class Profile_model extends CI_Model{

    function userInfo(){

        $this->db->where('username', $this->session->userdata('username'));

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

    return $query->result();

    }

}

或者您可以将电子邮件/用户名从控制器传递给模型:

if($logged_in){
    //if the user is logged in 
    $this->load->model('profile_model');
    $username = $this->session->userdata('username');

    if($query = $this->profile_model->userInfo($username)){
        $data['records'] = $query;
            $data['content'] = 'profile_view';
        $this->load->view('templates/template', $data);
    }
}

然后在你的模型中:

class Profile_model extends CI_Model{

    function userInfo($username){

        $this->db->where('username', $username);

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

    return $query->result();

    }

}

我不知道您的列在您的数据库中的名称,或者我可以更准确。

如果数据库中的用户名与电子邮件地址不同,请将模型中的行更改为:

$this->db->where('email', $username);

希望这可以帮助!

于 2013-07-21T15:44:49.457 回答