我是 Code Igniter 的新手(这是我正在学习的第一个框架)。
我在我的 Controller 中得到了这个:
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);
}
如果表单验证成功,它只会改变 View ,但仍然可以点击刷新按钮,并重新发送表单数据 - 这对我来说不是什么大问题,因为我正在检查字段是否正确独特的,但对我来说最好防止重新发送表单数据。
通常在干净的 PHP 中我会使用 header("Location: ...");
但我在这里加载一个 View ,所以在重定向后将无法访问它 -不是吗?
你对此有什么建议吗?
最佳答案
您可以重定向到同一页面,但也可以在 session 库中使用 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";
}
关于php - 防止表单数据在 Codeigniter 中发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9234255/