关于安全性,前后台共同验证

简介:

前台过滤

复制代码
teachers_jq.on('click', '.teacher:not(.trained)', function (event) {
        var jq = $(event.target);
        var id = jq.data('id');
        var name = jq.text();
        var params = {
            train:train,
            user_id:id,
            user_name:name
        }
        $.ajax({
            type:"POST",
            url:"/default/index/ajax/do/ajaxtrainmem",
            data:params,
            success:function(response){
                if(response==0){
                  alert("请重试!");
                }else if(response==2){
                  alert("已存在,请勿重复点击!");
                }else{
                    jq.addClass('trained');
                    trained_jq.fc_tagbox().add_tag(name, id);
                    hide_detail();
                }
            }
        });
    });
复制代码

通过:not(.trained)过滤,避免多次点击,触发事件!

 

后台过滤,如果真多次触发了,后台进行过滤

复制代码
$data["user_id"] = trim($this->_getParam("user_id"));
                    $data["user_name"] = trim($this->_getParam("user_name"));
                    $traininfo = trim($this->_getParam("train"));
                    list($data['training_id'] , $data['training_name'] , $data['training_level'] , $data['training_passtime'] , $data['training_startime'] , $data['training_endtime'] , $data['training_note'] , $data['semester_id'] , $data['semester_name'] , $data['year']) = explode("#", $traininfo);
                    $where['lx_trainingmember.user_id = ?'] = array('type'=>1,'val'=>$data["user_id"]);
                    $where['lx_trainingmember.training_id = ?'] = array('type'=>1,'val'=>$data['training_id']);
                    
                    $aTrain = $daoTraining->getTraAndMem($where);
                    if($aTrain){
                        echo 2;
                    }else{
                        $res = $daoTraining->addTrainingmember($data);
                        if ($res) {
                            echo 1;
                        }else{
                            echo 0;
                        }
                    }
复制代码

验证数据库中是否已存在数据,存在就返回2,提示重复点击了。

 

效果如下:



本文转自TBHacker博客园博客,原文链接:http://www.cnblogs.com/jiqing9006/p/3794881.html,如需转载请自行联系原作者


相关文章
|
5天前
|
SQL 缓存 API
在API接口数据获取过程中,如何确保数据的安全性和隐私性?
在API接口数据获取过程中,确保数据的安全性和隐私性至关重要。本文介绍了身份认证与授权、防止SQL注入和XSS攻击、加密传输、API版本控制、限流与熔断、压力测试与性能优化、备份与恢复以及法律和伦理考量等关键措施,帮助开发者和管理者有效保护API接口的数据安全和隐私性。
|
10天前
|
存储 监控 安全
|
3月前
|
安全 jenkins 持续交付
Jenkins 用于验证用户的 3 种安全机制
【8月更文挑战第27天】
69 5
|
3月前
|
数据安全/隐私保护
数据安全用户系统问题之实人认证信息在用户模型中体现的如何解决
数据安全用户系统问题之实人认证信息在用户模型中体现的如何解决
|
5月前
|
JSON 监控 安全
构建安全的用户身份验证系统
【6月更文挑战第21天】 本文介绍了如何使用Flask和JWT构建安全的用户身份验证系统。JWT是一种流行的网络身份验证标准,由头部、载荷和签名三部分组成。在Flask中,通过安装`Flask`和`PyJWT`库,可以创建一个简单的身份验证系统,包括登录路由和受保护的资源路由。文章提供了示例代码,展示如何实现登录、验证JWT令牌、用户注册和令牌刷新。同时,强调了使用HTTPS、日志记录和安全性增强措施的重要性,以确保应用程序的安全性。文章结尾提醒开发者持续改进和评估安全性,遵循最佳实践。
34 0
|
5月前
|
JSON 测试技术 API
API接口测试指南:确保接口稳定性与可靠性的实践
API接口测试是确保软件产品质量的重要组成部分。通过遵循本指南中的测试步骤和最佳实践,开发者可以有效地验证API的功能、性能和安全性,从而提升软件的整体质量和用户满意度。
|
存储 前端开发 安全
强化用户体验与安全性:前端单点登录和统一认证的最佳实践与区别
互联网发展了这么多年,各种更新皆为了提供更好更安全的上网环境。同时为了提供更好的用户体验、减少用户反复输入用户名和密码的繁琐操作,并确保账户安全,前端领域中的单点登录(SSO)和统一认证(Unified Authentication)成为了重要概念。
强化用户体验与安全性:前端单点登录和统一认证的最佳实践与区别
|
6月前
|
监控 安全 测试技术
最终用户验证:关键一环
最终用户验证:关键一环
|
6月前
|
存储 数据库 数据安全/隐私保护
用户认证过程的详细解析,保护你的数据安全
用户认证过程的详细解析,保护你的数据安全
82 3
|
6月前
|
数据采集 存储 安全
数据功能验证
数据功能验证
104 4