2013-04-14 139 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); 

}