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

时间:2011-01-18 01:30:21

标签: codeigniter

我遇到了关于Get vs Post的另一篇Stackoverflow帖子,这让我想到了。使用CI,我删除记录的URL为http://domain.com/item/delete/100,从我的数据库中删除记录ID 100。 record_id是通过$this->uri->segment提取的。在我的模型中,我确实有一个where子句,用于检查用户是否确实是该记录的所有者。 user_id存储在DB内的会话中。这够好吗?

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

1 个答案:

答案 0 :(得分:4)

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

一样简单

部分理由是您不希望在get请求中更改数据。既然你说你要求这个人是所有者,那么仍然存在一个问题,即某个人将图片的来源设为http://domain.com/item/delete/100使用帖子并不是万能的,因为你可以发布来自javascript的请求所以如果您没有正确过滤输入,恶意用户仍然可以创建删除请求。

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

如果您想要删除链接为http://domain.com/item/delete/100,那么您可以显示一条确认消息,其中的表单会执行确认删除的后续操作。

我希望这有帮助, 比尔