我是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: ...");
但我在这里加载一个视图,因此重定向后无法访问它 - 不是吗?
你有什么建议吗?
答案 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。明白了吗?更改页面的内容,但不更改页面本身。