在Codeigniter中提交表格

时间:2013-04-14 01:47:03

标签: php forms codeigniter

我有这个问题,在我提交表格后,我执行了“F5”或“刷新” 还有提交的数据,每次我按“F5”时我第一次提交表格的数据相同,然后它变成重复输入,我试着清除POST数据以及CI中的field_data,仍然有提交的值,我不知道为什么它不能被form_validation所困,我设置了一个必需的规则。

$this->load->library('form_validation');

$this->form_validation->set_rules('name', 'Name', 'required');
$this->form_validation->set_rules('email', 'Email', 'required|valid_email');
$this->form_validation->set_rules('comment','Comment','required');

if(/*form validation is false*/) //fail
{
   // some code for incorrect values
}
else //success
{
   $_POST = array();
   $this->form_validation->clear_field_data();
  //and some code for views
}

现在,在正常的过程中,它没有错误,但是当在SUCCESS上并且我按下“F5”或刷新页面时,数据再次被提交,从而再次将其插入到DB中, 我真的不知道为什么它已经清除了从现场数据到实际发布数据的所有内容,如果您有任何知识请分享

BTW只是一个单挑,我的form_validation是一个定制的,扩展了CI的原生form_validation

3 个答案:

答案 0 :(得分:0)

尝试使用redirect函数代替$this->load->view

你可以看到它here

答案 1 :(得分:0)

您可以使用重定向(preferabl)或使用服务器端标头来存储帖子数据:

header ("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header ("Pragma: no-cache"); // HTTP/1.0

答案 2 :(得分:0)

尝试这个

if ($this->form_validation->run() == FALSE) 
{
   $data['Name']['value'] = $this->input->post('name', TRUE);
   $this->load->view("someview",$data);
}
else
{
   $data['Name']['value'] = "";
   $this->load->view("someview",$data);

}