根据登录用户过滤数据库值

时间:2015-08-21 07:22:49

标签: php mysql codeigniter session

在我的应用程序中我想根据用户(而不是用户级别)过滤数据。例如我有一个用户,当他们登录系统时我想查看他们自己的数据。我可以使用codeigniter.i也在登录控制器中创建了一个会话。并且hesder。现在我想从另一个控制器过滤数据。这可能吗?

这里是我在Login controller中的会话代码

 public function user_login_process() {

$this->form_validation->set_rules('email', 'Email', 'trim|required|xss_clean');
$this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean');

if ($this->form_validation->run() == FALSE) {
if(isset($this->session->userdata['logged_in'])){
//$this->load->view('admin_page');
    $this->home();
}else{
$this->load->view('user_site/login_form');
}
} else {
$data = array(
'email' => $this->input->post('email'),
'password' => $this->input->post('password')
);
$result = $this->login_database->login($data);
if ($result == TRUE) {

$email = $this->input->post('email');
$result = $this->login_database->read_user_information($email);
if ($result != false) {
$session_data = array(
'firstname' => $result[0]->firstname,
'email' => $result[0]->email,
    'id' => $result[0]->id,
);
// Add user data in session
$this->session->set_userdata('logged_in', $session_data);
//$this->load->view('index');
//                    $this->home();
                    $this->load->view("user_include/header");
                    $this->load->view('user_site/index');
}
} else {
$data = array(
'error_message' => 'Invalid Username or Password'
);
$this->load->view('user_site/login_form', $data);
}
}
}

这是标题

    <?php
if (isset($this->session->userdata['logged_in'])) {
$firstname = ($this->session->userdata['logged_in']['firstname']);
$email = ($this->session->userdata['logged_in']['email']);
$id = ($this->session->userdata['logged_in']['id']);
} else {
header("location: login");
}

现在我想过滤另一个控制器中的数据

function get_book(){
  $this->db->select("book.id,book.title");
  $this->db->where("user_id = $id");
  $this->db->from('book');
  $query = $this->db->get();
  return $query->result();
}

当我使用上面的代码过滤数据时,它显示了

  

错误未定义的变量:id

这是我的视图代码。

<?php foreach($post as $post){?>
 <tr>

     <td><?php echo $post->id ; echo '&nbsp; &nbsp;';?></td>
     <td><?php echo $post->title ; echo '&nbsp; &nbsp;';?></td>
 </tr>  
 <?php }

 ?>  

这是我的控制器

    public function index(){ 
$data['post'] = $this->floor_model->get_book(); 
 $this->load->view('user_include/header');
 $this->load->view('plan/floor',$data); }

1 个答案:

答案 0 :(得分:0)

您将id存储在会话变量中。为了得到这个你使用

  $id = $this->session->userdata['logged_in']['id'];

模型

function get_book(){
  $id = $this->session->userdata['logged_in']['id'];// getting id
  $this->db->select('id,title');
  $this->db->where('user_id', $id);//
  $this->db->from('book');
  $query = $this->db->get();
  return $query->result();
}