在 Codeigniter 中处理发布数据的好方法是啥?

Posted

技术标签:

【中文标题】在 Codeigniter 中处理发布数据的好方法是啥?【英文标题】:What's a good way to handle post data in Codeigniter?在 Codeigniter 中处理发布数据的好方法是什么? 【发布时间】:2011-03-20 04:42:23 【问题描述】:

即你会推荐我使用这样的一种控制器方法吗:

function save()

    if(!is_bool($this->input->post('')))
    
        $post_data = $this->input->post('');
        $this->mymodel->save($post_data);
    
    $this->load->view('myview');

或者你会推荐使用两种方法来编写它吗?

function save()

    if(!is_bool($this->input->post('')))
    
        $post_data = $this->input->post('');
        $this->mymodel->save($post_data);
    
    redirect('controller/method2')

重定向是这里的关键区别。例如,它禁止重新提交更新。

你是怎么做到的?还有其他更好的方法吗?

【问题讨论】:

虽然概念链接已经发布在答案中,但为了节省一些时间,请查看Post/Redirect/Get。 【参考方案1】:

您应该始终在成功的表单帖子上重定向。

【讨论】:

+1000 互联网积分给你 Aren。每个人都应该知道一个简单的规则。【参考方案2】:

您应该始终在成功的表单帖子上重定向。

当然。对于任何想知道为什么会出现这种情况的人,这里有几个原因:

避免“重复提交”。当你无意中点击刷新或点击返回按钮并wham时,是否有过这样的情况? 对书签友好。如果您的用户为页面添加了书签,大概您希望他们返回创建页面的位置,而不是空白表单(重定向使他们为确认/登录页面添加书签。

进一步阅读: http://en.wikipedia.org/wiki/Post/Redirect/Get

【讨论】:

【参考方案3】:

正如 Aren B 所说,重定向是一个好主意,但我要在您的代码中更改的是,应该使用表单验证功能来验证发布数据。它不仅更可重用,而且代码会变得更短。

如果您想处理 AJAX 请求,则需要返回除通过或重定向之外的其他内容。

【讨论】:

以上是关于在 Codeigniter 中处理发布数据的好方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

在Android中处理非常大量数据的好方法是啥?

处理 XML 更改的好方法

什么是处理维度表中层次结构的好方法

在 Python 3 中确定 max_workers 用于多处理的最佳值的好方法是啥?

在 oracle 中处理逗号分隔值的好方法

CodeIgniter 中处理数据库错误的最佳实践