【问题标题】:How to clear form data after submission?提交后如何清除表单数据?
【发布时间】:2014-02-18 00:59:15
【问题描述】:

我在我的 CodeIgniter 网站中有一个带有文件输入的表单。当我填写表格并单击提交按钮时,它工作正常。但是,当我刷新浏览器时,会再次上传相同的表单数据。我怎样才能防止这种情况发生?

输入表格

<form name="image_upload" action="<?= base_url() ?>admin/image_move_upload" method="post" accept-charset="utf-8" enctype="multipart/form-data">  
    <ul>  
        <li class="ui-field"><label for="filename">File Name :</label></li>
        <li class="ui-input"><input type="text"  name="filename" placeholder=""></li>  
        <li class="ui-field"><label for="file">Image( *only .jpg) :</label></li> 
        <li class="ui-input"><input type="file" name="imagefile" value="" placeholder="" required=""></li>  
        <li><input type="submit"  name="Upload" class="ui-submit"></li>  
    </ul>  
</form>

控制器部分

function image_move_upload() {
    $data['errors'] = NULL;
    $data['success'] = NULL;

    if (isset( $_POST['Upload'] )) {
      $config_arr = array(
            'upload_path' => './uploads/slider/',
            'allowed_types' => 'jpg',
            'max_size' => '2048',
            'max_width' => '1024',
            'max_height' => '768',
            'encrypt_name' => true,
            'file_name'  => 'sanji.jpg',
        );
        $this->load->library('upload', $config_arr);
        if (!$this->upload->do_upload('imagefile')) {
            $data['errors'] = $this->upload->display_errors(); // this isn't working                
        } else {
            $data['qs'] = $this->upload->data();
            $data['success'] = "File Uploaded Successfully";
        }         
    }

    $data['main_content'] = 'admin/upload';
    $this->load->view('admin_layout', $data);
}

【问题讨论】:

  • 据我所知...恕我直言,要在提交后重置表单,您必须redirect header :)
  • 重定向到同一个控制器。
  • 可能相关:net.tutsplus.com/tutorials/php/… 诀窍是,您的 csrf 令牌将在随后的页面加载之间延迟。
  • 我认为您不必刷新页面...提交数据后页面会自动刷新。
  • @Ankur140290 提交表单后,它会加载没有数据的表单。但是当我刷新页面时,它会从缓存中获取先前输入的数据。我想防止这种情况发生

标签: php forms codeigniter


【解决方案1】:

使用发布/重定向/获取模式。 http://en.wikipedia.org/wiki/Post/Redirect/Get

【讨论】:

    【解决方案2】:

    通过刷新重定向到同一个控制器。使用以下代码。

    redirect('admin/image_move_upload', 'refresh');
    

    【讨论】:

      【解决方案3】:

      使用重定向函数而不是调用同一类的函数。

      所以,请使用redirect('admin/image_move_upload', 'refresh');

      【讨论】:

        猜你喜欢
        • 2021-09-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-22
        • 1970-01-01
        • 1970-01-01
        • 2013-01-25
        • 1970-01-01
        相关资源
        最近更新 更多