0

フォームを送信した後、「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
}

現在、通常のプロセスではエラーはありませんが、成功して「F5」を押すか、ページを更新すると、データが再度送信され、DBに再度挿入されます。なぜそれがすでに発生しているのか本当にわかりませんフィールドデータから実際の投稿データまで全てクリアしておりますので、ご存知の方がいらっしゃいましたら是非シェアをお願い致します

ところで、単なるヘッドアップです。私form_validationはカスタムメイドのもので、CI のネイティブ form_validation を拡張します

4

3 に答える 3

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);

}
于 2013-04-14T05:31:24.490 に答える
0

リダイレクト (preferabl) を使用するか、サーバー側ヘッダーを使用して投稿データを保存しないようにすることができます。

header ("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header ("Pragma: no-cache"); // HTTP/1.0
于 2013-04-14T04:17:28.917 に答える
0

redirect関数の代わりに使用してみてください$this->load->view

ここで見ることができます

于 2013-04-14T03:35:50.027 に答える