我有这个问题,在我提交表格后,我执行了“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
答案 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);
}