2013-04-14 96 views
0

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

$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 
} 

,在一个正常的过程,它有没有错误,但在成功的时候,我按下“F5”或刷新页面,得到的数据又如此再确实提交其插入到数据库, 我不知道为什么,这一点从现场数据与实际岗位的数据已经清除一切,如果您有任何知识,请你分享

BTW只是一个平视,我form_validation是做一个自定义,扩展了CI的本地form_validation

+1

它可能是浏览器缓存吗? –

+0

hmmm也许,但我不知道如何查看缓存..不能通过CI分析器查看它?任何想法如何查看或更好地清除它?在CI – lemoncodes

+0

您可以从浏览器中清除浏览器缓存。如果暂时解决了这个问题,这意味着浏览器确实会缓存表单提交,并且您需要设置正确的HTTP标头来阻止它。 –

回答

0

尝试使用redirect功能保证$this->load->view

你可以看到它here

+1

使用rederict更容易,我认为更有效率,成功messgaes只是使用闪存数据,反正它会在下一个服务器请求 – lemoncodes

+0

这是完全正确的 –

0

要么你可以使用重定向(preferabl)或使用服务器端头不存储后的数据:

header ("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 
header ("Pragma: no-cache"); // HTTP/1.0 
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); 

}