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

Cyc*_*one 4 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);
    }
Run Code Online (Sandbox Code Playgroud)

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

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

你有什么建议吗?

Hen*_*fel 8

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

调节器

在形式上取得成功

$this->session->set_flashdata("success", $strMessage);
redirect("account/register");
Run Code Online (Sandbox Code Playgroud)

视图

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

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