用户
 找回密码
 入住 CI 中国社区
搜索
查看: 4216|回复: 20
收起左侧

[HELP] CI 如何防止表单重复提交

[复制链接]
发表于 2016-6-20 09:39:31 | 显示全部楼层 |阅读模式
本帖最后由 梦想杀死 于 2016-6-28 16:58 编辑

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

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

大家有没有什么好的意见?
框架:CI-2.0.2
发表于 2016-6-20 15:01:59 | 显示全部楼层
$_SESSION['success'] ='发表成功!';
                        // $this->session->set_userdata('success','发表成功!');
                        redirect(template.'/article/add_art');
                }else{
                        $this->add_art();
                }
发表于 2016-6-20 09:55:24 | 显示全部楼层


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 ...

重定向,我有许多数据传到页面怎么办?
发表于 2016-6-20 09:46:42 | 显示全部楼层
前端用 js 使按鈕按一次便失效
 楼主| 发表于 2016-6-20 09:49:22 | 显示全部楼层
Closer 发表于 2016-6-20 09:46
前端用 js 使按鈕按一次便失效

F5刷新呢?
 楼主| 发表于 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这个框架还有些有待改善的地方,用起来不方便,没用过其他的框架,也不知道其他的框架是否也会有同样的问题
发表于 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 的時候停滯很久
因為原開發團隊沒有再做改版
後來才將主開發權轉到某教育單位 (轉交之前已發佈  ...

非常感谢!!!
发表于 2016-6-20 11:58:18 | 显示全部楼层
可以用Ajax技术啊  要么提交完后跳转

本版积分规则