梦想杀死 发表于 2016-6-20 09:39:31

CI 如何防止表单重复提交

本帖最后由 梦想杀死 于 2016-6-28 16:58 编辑

这这样一个方法
function index () {
   ....
    做了一系列操作
    DB更新
   ......
   $this->load->view('login',$data);
}

为了防止表单的重复提交,打算用redirect,进行重定向,但是还有许多的数据要传,不知道怎么办了,不打算用URL的形式

大家有没有什么好的意见?
框架:CI-2.0.2

wkang956 发表于 2016-6-20 15:01:59

$_SESSION['success'] ='发表成功!';
                        // $this->session->set_userdata('success','发表成功!');
                        redirect(template.'/article/add_art');
                }else{
                        $this->add_art();
                }

Closer 发表于 2016-6-20 09:55:24

梦想杀死 发表于 2016-6-20 09:49
F5刷新呢?


1. 加入驗證碼機制
2. 加入 CSRF 且 $config['csrf_regenerate'] = TRUE; // 表單送出就更改 token 值 (這樣就無法重整或回上一頁)

但無論哪個都是擾民
也許他真的想要新增第二次一樣的東西 (表沒有唯一值的情況)
若表有唯一值就簡單了,送往新增的控制器,檢查是否有該數據
如有,就返回,並提示「已有數據」等訊息

 

梦想杀死 发表于 2016-6-22 16:26:16

wkang956 发表于 2016-6-20 15:01
$_SESSION['success'] ='发表成功!';
                        // $this->session->set_userdata('success','发表成功!');
                        red ...

重定向,我有许多数据传到页面怎么办?

Closer 发表于 2016-6-20 09:46:42

前端用 js 使按鈕按一次便失效

梦想杀死 发表于 2016-6-20 09:49:22

Closer 发表于 2016-6-20 09:46
前端用 js 使按鈕按一次便失效

F5刷新呢?

梦想杀死 发表于 2016-6-20 09:53:42

不要沉了:time::time::time:

梦想杀死 发表于 2016-6-20 10:12:03

Closer 发表于 2016-6-20 09:55
1. 加入驗證碼機制
2. 加入 CSRF 且 $config['csrf_regenerate'] = TRUE; // 表單送出就更改 token 值 ( ...

目前已经开启CSRF Token但是对于CI2来说,重复提交表单,不改变Token值,CI3有应该是
像你说的加 提示「已有數據」等訊息 这样的操作 对于目前来说,改动量太大了...

梦想杀死 发表于 2016-6-20 10:13:35

怎么感觉CI这个框架还有些有待改善的地方,用起来不方便,没用过其他的框架,也不知道其他的框架是否也会有同样的问题

Closer 发表于 2016-6-20 10:28:20

梦想杀死 发表于 2016-6-20 10:13
怎么感觉CI这个框架还有些有待改善的地方,用起来不方便,没用过其他的框架,也不知道其他的框架是否也会有 ...
CI 在 2.x 的時候停滯很久
因為原開發團隊沒有再做改版
後來才將主開發權轉到某教育單位 (轉交之前已發佈 3.x )

梦想杀死 发表于 2016-6-20 11:17:46

Closer 发表于 2016-6-20 10:28
CI 在 2.x 的時候停滯很久
因為原開發團隊沒有再做改版
後來才將主開發權轉到某教育單位 (轉交之前已發佈...

非常感谢!!!

Aloghli 发表于 2016-6-20 11:58:18

可以用Ajax技术啊要么提交完后跳转
页: [1] 2 3
查看完整版本: CI 如何防止表单重复提交