codeigniter MVC在mysql表中插入敏感数据

时间:2017-08-03 18:43:48

标签: php mysql codeigniter

我正在使用codeigniter构建一个页面,用户可以like另一个用户的帖子。

此示例中有三个页面,view_page.phpmodel_page.phpcontroller_page.php

我的view_page.php看起来像这样

<?php foreach($members as $value): ?>
    <tr>
        <td><?php echo $value['post_id']; ?></td>
        <td><?php echo $value['post_title']; ?></td>
        <td><a href="like/<?php echo $value['post_id']; ?>">Like</a></td>
    </tr>
<?php endforeach; ?>

Controller_page.php

function like($post_id) {
    $this->load->model('model_page');
    $this->model_page->like_user($post_id);
    redirect('controller_page/viewdata');
}

我的问题是, 如果使用user_id = 1的用户在view_page.php上发布内容(如下图所示),则会显示他的post_idpost_title等按钮。

如果其他用户User_id = 22喜欢发帖,如何在user_id=22表中添加mysql,以了解哪位用户喜欢该帖子?

我在考虑将user_id=22传递到相似按钮的url,但人们可以操纵喜欢但只更改地址栏中的user_id

我该如何正确地做到这一点?

提前致谢

enter image description here

2 个答案:

答案 0 :(得分:2)

您可以创建一个存储所有喜欢的表格 例如。

id post_id user_id
1  1       22 
2  1       44

答案 1 :(得分:0)

您的问题的整个代码会涉及很多方面,截至目前,Tanseer UL Hassan提供的解决方案是最好的数据库设计,现在您的问题是如何实现它,您可以按以下方式编写代码:

1)创建要传递给控制器​​的变量:

<input type="hidden" name="hidUserIdFromSession" id="hidUserIdFromSession" value="<?php echo $someUserIdFromSession;?>">

2)使用ajax在上述表格中插入数据,如下所示:

$('#yourButton').click(function() {
//Modify this according to your button name
var postId = "Get your post id here";
var userId = $("#hidUserIdFromSession").val();
     $.ajax({
     type: 'POST',
     url: '<?php echo base_url("your/url/comes/here")?>',
     data: "postId="+postId+"&userId="+userId,
     success:function(response){
         //Your succes functions code comes here(Alert or any other processing).
     }
  });
});

3)获取控制器函数内的值,如下所示:

public function functionName(){
  //This is the same function which is called inside ajax call
  $arrReturn = array();
  $postId = $this->input->post('postId');
  $userId = $this->input->post('userId');
  $inserted = $this->model->insertLikeData($postId,$userId);
  //this is a call to model function in which you will actually make the Query to insert the data.
  if($inserted){
   $arrReturn['status'] = "Success";
   $arrReturn['data'] = array();//In case if you want to send some data.
  }else{
   $arrReturn['status'] = "Error";
   $arrReturn['data'] = array();//In case if you want to send some data.
  }
  $arrReturn = json_encode($arrReturn);
  echo $arrReturn;
}