使用Codeigniter删除记录的正确方法

使用Codeigniter删除记录的正确方法,codeigniter,Codeigniter,我遇到了另一个关于Get vs post的Stackoverflow帖子,它让我思考。使用CI时,我删除记录的URL为,这将从我的数据库中删除记录id 100。记录id通过$this->uri->segment提取。在我的模型中,我确实有一个where子句来检查用户是否确实是该记录的所有者。用户id存储在数据库内的会话中。这够好吗 我的理解是,POST应该用于数据的一次性修改,GET用于检索问候(例如查看项目或永久链接)。删除时,您确实应该要求POST请求。在CodeIgniter中,这可以像检

我遇到了另一个关于Get vs post的Stackoverflow帖子,它让我思考。使用CI时,我删除记录的URL为,这将从我的数据库中删除记录id 100。记录id通过
$this->uri->segment
提取。在我的模型中,我确实有一个where子句来检查用户是否确实是该记录的所有者。用户id存储在数据库内的会话中。这够好吗


我的理解是,POST应该用于数据的一次性修改,GET用于检索问候(例如查看项目或永久链接)。

删除时,您确实应该要求POST请求。在CodeIgniter中,这可以像检查$this->input->post('confirm')一样简单

部分理由是您不希望在get请求中更改数据。由于您说您要求此人是所有者,因此仍然存在一个问题,即有人将图像与正在使用post的源放在一起,这并不是万能的,因为您可以从javascript执行post请求,因此,如果您没有正确过滤输入,恶意用户仍有可能创建删除请求

我应该承认,我是一个有点纯粹的人,只是觉得要求职位是正确的方式。它是如何编写标准的(好吧,你可以说它应该是一个删除请求,但浏览器通常不支持它们),在其他情况下,你真的需要使用它们(曾经有过网络爬虫删除页面的情况)

如果您希望删除链接,则可以显示一条确认消息,其中包含一个表单,该表单在确认删除时执行post操作

我希望这有帮助,
比尔

是的,我不知道如何通过post请求删除记录。你能举些例子吗?我想所有这些都应该在模型的某个地方。在我的控制器中,我将URI和会话id传递给模型。模型会检查这两个值并删除它们是否匹配。您可以让一个表单提交到“item/delete”,其中包含$\u POST['POST\u id'],$\u POST['user\u id'](来自隐藏字段)。“item”控制器中的“delete”函数拉取“$this->input->post('post\u id')”和->post('user\u id')以验证权限并删除记录。因此,如果用户可以通过链接删除记录,我是否将“$this->uri->segment”传递给$\u post变量?不管怎样,我得到它。我必须停止依赖“$this->uri->segment”