Php 如何防止在成员列表中显示登录用户?

Php 如何防止在成员列表中显示登录用户?,php,mysql,codeigniter,Php,Mysql,Codeigniter,我有管理员名单和会员名单,我按“a”和“m”分类。现在我在不同的选项卡中显示管理员列表和成员列表。现在的问题是,若一个用户在成员列表中并且已经登录,那个么他的名字不应该显示在成员列表中 这是控制器: public function view_customer(){ $data = json_decode(file_get_contents('php://input')); $customers=$this->um->view_customers(); heade

我有管理员名单和会员名单,我按“a”和“m”分类。现在我在不同的选项卡中显示管理员列表和成员列表。现在的问题是,若一个用户在成员列表中并且已经登录,那个么他的名字不应该显示在成员列表中

这是控制器:

public function view_customer(){
 $data = json_decode(file_get_contents('php://input'));

    $customers=$this->um->view_customers();
     header("Content-Type: application/json; charset=UTF-8");
     echo json_encode($customers);
}
模型如下:

    public function view_customers(){
    $this->db->select('reg_id,reg_name,email,user_type,pic_url,id,name,cover_image,restaurant_id');
    $this->db->from('registration');
    $this->db->where('user_type','m');
$this->db->join('rest_restaurant_master','registration.restaurant_id=rest_restaurant_master.id','inner');
    $query=$this->db->get()->result_array();
    return $query;
}

基本上,您需要一个既包含在表中又与用户相关的变量。我假设您有一个名为
id
的变量,它与名为
user\u id
的会话变量相关

添加到
查看客户

$this->db->where_not_in('id', $this->session->user_id);
或(更简单):

这样,您的阵列将包含仅在
m
中且不是活动用户的用户。

当您设置会话时(在登录中)

然后在所有可以调用的方法中

$loggedUser = $this->session->id; # or $this->session->userdata('id');

$this->db->where_not_in('id', $loggedUser);

您的意思是,如果某个成员已登录,并且其
用户类型为
'm'
,则他们不应显示在成员列表中?@commanderZiltoid是。您是否希望登录的成员看不到他们的姓名,但可以查看列表的任何其他人都可以看到他们的姓名?如果这是您所追求的,那么在视图中呈现结果时,我将检查成员记录的id是否不等于经过身份验证的用户的id。如果这不是你想要的,你能提供更多的细节吗?是的,我想我看不到我的名字,但其他人可以在会员名单下看到我的名字。这并不奇怪。我的意思是一个用户通常有一个单独的页面,他们可以编辑自己的东西;如果他们知道自己的想法,没有必要把他们列在名单上。你的回答似乎解决了我的问题。但我以前从未使用过会话。因此,我将尝试在用户表中实现会话,并在view\u customers方法中获取id。如果您不使用会话,如何知道用户是否已登录?如果您正在使用其他东西(不知道是什么),只需将代码中的会话替换为您拥有的任何用户可识别变量。如果您只是在实现登录,我建议使用Ion Auth library for ci。它非常健壮和简单,只需要一些gui就可以了。好的,我将尝试在登录api中实现会话。如果我需要帮助,我会再打电话给你。你好。我在登录控制器中写了这个东西:$sess\u array=array('id'=>$row->id,'reg\u name'=>$row->reg\u name,'email'=>$row->email)$此->会话->设置用户数据('logged_in',$sess_数组);现在我应该调用view_customer controller中的会话还是直接使用where条件下的“view_customers”模型中的“$this->db->where_not_in('id',$this->session->user_id);”呢?
$newdata = array(
    'id'        => 3, # id is database user recorded id
    'username'  => 'johndoe',
    'email'     => 'johndoe@some-site.com',
    'logged_in' => TRUE
);

$this->session->set_userdata($newdata);
$loggedUser = $this->session->id; # or $this->session->userdata('id');

$this->db->where_not_in('id', $loggedUser);