当您登录我的网站时,您将直接转到您的个人资料页面。因此,您可以看到您的姓名,电话,电子邮件等。但是当我登录我的网站时,我会被定向到我的个人资料页面,但我获得了我的数据库中每个用户的所有数据。所以我得到了每个用户的名字,每个用户的电话等等。我只想获取登录用户的数据。我怎样才能做到这一点?
我做了一些思考,想出了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;
}
}
答案 0 :(得分:1)
您缺少的只是模型中的WHERE语句。作为WHERE语句的参数,您可以使用包含电子邮件地址的会话变量(假设您的数据库表将电子邮件存储在名为“username”的字段中:
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);
希望这有帮助!