【问题标题】: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

标签: php forms codeigniter


【解决方案1】:

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

【讨论】:

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

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

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

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

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2014-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-02
      • 2019-06-17
      • 2018-01-05
      • 2014-09-08
      • 2016-06-12
      相关资源
      最近更新 更多