我只想在视图中显示用户数据。在目前的情况下,所有数据都显示由登录用户1填写或由登录用户2填写。这一行控制器代码中的问题是会话问题吗?问题是任何用户都可以看到其他用户数据。
$sql="SELECT u.*,f.manu_id,m.journal_id,m.title,j.sub_title,f.created_date,f.final_status
这是我的User_controller代码:
public function FinalManuscriptSubmit()
{
if ($this->Common_model->Is_User_Logged())
{
$data=array();
$joinClause=array();
$whereClause=array();
#$session_data = $this->session->userdata('user_logged_in');
$session_data = $this->session->userdata('user_email');
$u_id = $session_data['id'];
$sql="SELECT u.*,f.manu_id,m.journal_id,m.title,j.sub_title,f.created_date,f.final_status
FROM user u
INNER JOIN final_manuscript f on f.user_id = u.user_id
INNER JOIN manuscript m on m.manu_id = f.manu_id
INNER JOIN journal j on j.sub_id = m.journal_id
";
$data['list']=$this->Common_model->get_data_by_query($sql);
//print_r($data['list']);exit;
$this->load->view('user/header');
$this->load->view('user/showmanu',$data);
$this->load->view('user/footer');
}else{
redirect('user/login');
}
}
这是我的观点
<table class="table table-hover">
<tr>
<th>Manuscript ID</th>
<th>Journal</th>
<th>Title</th>
<th>Date</th>
<th>Action</th>
</tr>
<?php
if(!empty($list)>0)
{
foreach ($list as $row)
{
?>
<tr>
<td><?php echo $row->manu_id;?></td>
<td><?php echo $row->sub_title;?></td>
<td><?php echo $row->title;?></td>
<td><?php echo $row->created_date;?></td>
<td>
<a href="<?php echo site_url('user/removemanuscript/'.base64_encode($row->manu_id)); ?>" title="Soft Delete">Remove
</a>
<?php if($row->final_status==1){ ?>
<span class="label label-primary">Approved</span>
<?php }else if($row->final_status==2){ ?>
<span class="label label-danger">Disapproved</span>
<?php }else{ ?>
<span class="label label-warning">Pending</span>
<?php } ?>
</td>
</tr>
<?php
} }
?>
</table>
问题是,您从未设置查询来获取记录的用户。您需要在查询中使用where子句来设置它。
$sql="SELECT
u.*, f.manu_id, m.journal_id,
m.title, j.sub_title, f.created_date, f.final_status
FROM user u
INNER JOIN final_manuscript f on f.user_id = u.user_id
INNER JOIN manuscript m on m.manu_id = f.manu_id
INNER JOIN journal j on j.sub_id = m.journal_id
WHERE u.user_id = :u_id";
这样,您在会话中只获得与您的用户id匹配的用户。
正如您所看到的,我使用了一个占位符:u_id
,$u_id
应该绑定到其中,使用您所拥有的任何数据库驱动程序/库。这将防止出现SQL注入漏洞。