防止在Code Igniter中重新发送表单数据

时间:2012-02-10 20:15:26

标签: php forms codeigniter

我是Code Igniter的新手(我正在学习它的第一个框架)。

我在控制器中得到了这个:

   if ($this->form_validation->run() === FALSE)
    {
        $this->load->view('account/register', $data);
    }
    else
    {
        $data['message'] = $this->lang->line('account_created');
        $this->register->insert_account();
        $this->load->view('account/register_success', $data);
    }

如果表单成功验证,它只会更改视图,但仍然可以点击刷新按钮,并重新发送表单数据 - 这对我来说不是一个大问题,因为我正在检查字段是否是独一无二,但我会更好地防止重新发送表单数据。

通常在干净的PHP中我会使用header("Location: ...");但我在这里加载一个视图,因此重定向后无法访问它 - 不是吗?

你有什么建议吗?

2 个答案:

答案 0 :(得分:8)

您可以重定向到同一页面,但也可以在会话库中使用codeigniters flashdata。 在表单提交上设置flashdata并显示成功消息。 使用表单重定向到同一页面并显示flashdata成功消息。 通过重定向重新加载页面并阻止刷新。

<强>控制器

在表单成功上执行此操作

$this->session->set_flashdata("success", $strMessage);
redirect("account/register");

查看

这将在表单页面上显示成功消息

if($this->session->flashdata("success") !== FALSE)
{
    echo "<div class=\"formSuccess\">" . $this->session->flashdata("success") . "</div>\n";
}

答案 1 :(得分:-1)

将您需要的视图转换为div。明白了吗?更改页面的内容,但不更改页面本身。