Codeigniter阻止'确认表单重新提交'

fkvaft9z  于 2022-12-07  发布在  其他
关注(0)|答案(6)|浏览(168)

我知道防止"confirm form resubmission“警告的首选方法是使用GET。但是当使用Codeigniter时,您通常会倾向于使用POST(从某种意义上说,大多数表单帮助函数都不起作用)。
在使用Codeigniter时,防止出现“确认表单重新提交”警告的最佳方法是什么?

**EDIT:**人们有好的想法,但我的问题是,这是一个搜索页面,我希望表单被重新提交。我不能使用重定向,因为这将清除POST数据。

b09cbbtk

b09cbbtk1#

尝试在控制器中重定向到其自身,重定向将服务于该作业,因为下次它将不会获得要提交的表单,

1yjd4xko

1yjd4xko2#

Suhindra是正确的。
例如,处理blog帖子输入的controller方法以下面的代码结束--重定向到加载页面的位置,而不是直接加载页面:

$this->session->set_flashdata('info', 'blog post created');
$this->load->helper('url');
redirect("/blogs/$posts_id", "refresh");
hivapdat

hivapdat3#

你可以取消设置成功后的形式值和工作完成。检查我的答案,我有同样的问题:
Clear form data after success codeigniter using php not jquery

8ftvxx2r

8ftvxx2r4#

使用redirect("./conrtollerName/SETTING/","refresh");代替$this->load->view('SETTING');

yi0zb3m4

yi0zb3m45#

发送请求后清除缓存

$this->output->set_header('HTTP/1.0 200 OK');
$this->output->set_header('HTTP/1.1 200 OK');
$this->output->set_header('Last-Modified: ' . gmdate("D, d M Y H:i:s") . ' GMT');
$this->output->set_header('Cache-Control: no-store, no-cache, must-revalidate');
$this->output->set_header('Cache-Control: post-check=0, pre-check=0');
$this->output->set_header('Pragma: no-cache');
$this->load->view('header', $data);
$this->load->view('nav', $data);
$this->load->view('searchdesigns', $data);
$this->load->view('footer', $data);
fxnxkyjh

fxnxkyjh6#

用于代码点火器。

$post_data = $this->session->userdata('post_data');
if ($post_data == $_POST){
    $this->session->unset_userdata('post_data');
    redirect(current_url(), 'refresh');
}else{
    $this->session->set_userdata('post_data', $_POST );
}

对于php,请使用

$post_data = $_SESSION['post_data'] ?? null;
if ($post_data == $_POST){
    unset($_SESSION['post_data']);
    redirect(current_url(), 'refresh');
}else{
    $this->session->set_userdata('post_data', $_POST );
}

相关问题