js登录滑动验证,不滑动无法登陆

js的判断这里是根据滑块的位置进行判断,应该是用一个flag判断

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%
    String basePath = request.getContextPath();
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>登录</title>

<link href="<%=basePath%>/res/css/bootstrap.min14ed.css?v=3.3.6"
    rel="stylesheet">
<link href="<%=basePath%>/res/css/font-awesome.min93e3.css?v=4.4.0"
    rel="stylesheet">

<link href="<%=basePath%>/res/css/animate.min.css" rel="stylesheet">
<link href="<%=basePath%>/res/css/style.min862f.css?v=4.1.0"
    rel="stylesheet">
<!--[if lt IE 9]>
    <meta http-equiv="refresh" content="0;ie.html" />
    <![endif]-->
<script>
    if (window.top !== window.self) {
        window.top.location = window.location;
    }
</script>
<style>
* {
    margin: 0;
    padding: 0;
}

body {
    font: 12px/1.125 Microsoft YaHei;
    background: #fff;
}

ul, li {
    list-style: none;
}

a {
    text-decoration: none;
}

.ani {
    transition: all .3s;
}

.wrap {
    width: 300px;
    height:;
    text-align: center;
    margin: 150px auto;
}

.inner {
    padding: 15px;
}

.clearfix {
    overflow: hidden;
    _zoom: 1;
}

.none {
    display: none;
}

#slider {
    position: relative;
    background-color: #e8e8e8;
    width: 300px;
    height: 34px;
    line-height: 34px;
    text-align: center;
}

#slider .handler {
    position: absolute;
    top: 0px;
    left: 0px;
    width: 40px;
    height: 32px;
    border: 1px solid #ccc;
    cursor: move;
}

.handler_bg {
    background: #fff
        url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NTc3MiwgMjAxNC8wMS8xMy0xOTo0NDowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo0ZDhlNWY5My05NmI0LTRlNWQtOGFjYi03ZTY4OGYyMTU2ZTYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTEyNTVEMURGMkVFMTFFNEI5NDBCMjQ2M0ExMDQ1OUYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTEyNTVEMUNGMkVFMTFFNEI5NDBCMjQ2M0ExMDQ1OUYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo2MTc5NzNmZS02OTQxLTQyOTYtYTIwNi02NDI2YTNkOWU5YmUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NGQ4ZTVmOTMtOTZiNC00ZTVkLThhY2ItN2U2ODhmMjE1NmU2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+YiRG4AAAALFJREFUeNpi/P//PwMlgImBQkA9A+bOnfsIiBOxKcInh+yCaCDuByoswaIOpxwjciACFegBqZ1AvBSIS5OTk/8TkmNEjwWgQiUgtQuIjwAxUF3yX3xyGIEIFLwHpKyAWB+I1xGSwxULIGf9A7mQkBwTlhBXAFLHgPgqEAcTkmNCU6AL9d8WII4HOvk3ITkWJAXWUMlOoGQHmsE45ViQ2KuBuASoYC4Wf+OUYxz6mQkgwAAN9mIrUReCXgAAAABJRU5ErkJggg==")
        no-repeat center;
}

.handler_ok_bg {
    background: #fff
        url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NTc3MiwgMjAxNC8wMS8xMy0xOTo0NDowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo0ZDhlNWY5My05NmI0LTRlNWQtOGFjYi03ZTY4OGYyMTU2ZTYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDlBRDI3NjVGMkQ2MTFFNEI5NDBCMjQ2M0ExMDQ1OUYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDlBRDI3NjRGMkQ2MTFFNEI5NDBCMjQ2M0ExMDQ1OUYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDphNWEzMWNhMC1hYmViLTQxNWEtYTEwZS04Y2U5NzRlN2Q4YTEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NGQ4ZTVmOTMtOTZiNC00ZTVkLThhY2ItN2U2ODhmMjE1NmU2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+k+sHwwAAASZJREFUeNpi/P//PwMyKD8uZw+kUoDYEYgloMIvgHg/EM/ptHx0EFk9I8wAoEZ+IDUPiIMY8IN1QJwENOgj3ACo5gNAbMBAHLgAxA4gQ5igAnNJ0MwAVTsX7IKyY7L2UNuJAf+AmAmJ78AEDTBiwGYg5gbifCSxFCZoaBMCy4A4GOjnH0D6DpK4IxNSVIHAfSDOAeLraJrjgJp/AwPbHMhejiQnwYRmUzNQ4VQgDQqXK0ia/0I17wJiPmQNTNBEAgMlQIWiQA2vgWw7QppBekGxsAjIiEUSBNnsBDWEAY9mEFgMMgBk00E0iZtA7AHEctDQ58MRuA6wlLgGFMoMpIG1QFeGwAIxGZo8GUhIysmwQGSAZgwHaEZhICIzOaBkJkqyM0CAAQDGx279Jf50AAAAAABJRU5ErkJggg==")
        no-repeat center;
}

#slider .drag_bg {
    background-color: #7ac23c;
    height: 34px;
    width: 0px;
}

#slider .drag_text {
    position: absolute;
    top: 0px;
    width: 300px;
    -moz-user-select: none;
    -webkit-user-select: none;
    user-select: none;
    -o-user-select: none;
    -ms-user-select: none;
}

.unselect {
    -moz-user-select: none;
    -webkit-user-select: none;
    -ms-user-select: none;
}

.slide_ok {
    color: #fff;
}
</style>
</head>
<style>
.btn-primary {
    background-color: #0000FF;
}

.btn-primary:hover {
    background-color: #0000FF;
}

.btn-primary {
    background-color: #0000FF;
    border-color: #0000FF;
}
</style>
<body class="gray-bg">

    <div class="middle-box text-center loginscreen  animated fadeInDown">
        <div>

            <h3 style="margin-top: 100px;">欢迎登录</h3>

            <form class="m-t" role="form" action="<%=basePath%>/login"
                method="POST" onsubmit="return login();">
                <div class="form-group">
                    <input name="username" id="username" type="text"
                        class="form-control" placeholder="用户名" required="">
                </div>
                <div class="form-group">
                    <input type="password" name="password" id="password"
                        class="form-control" placeholder="密码" required="">
                </div>

                <div class="wrap" style="margin: 10px auto 10px">
                    <div id="slider">
                        <div class="drag_bg"></div>
                        <div class="drag_text" onselectstart="return false;"
                            unselectable="on">拖动滑块验证</div>
                        <div class="handler handler_bg"></div>
                    </div>
                </div>
                <input type="hidden" name="${_csrf.parameterName}"
                    value="${_csrf.token}">
                <button type="submit" style="background-color: #0000FF;" class="btn btn-primary block full-width m-b">登
                    录</button>

                <%
                    if (request.getParameter("error") != null) {
                %>
                <span id="" style="color: red;">账号或者密码错误!</span>
                <%
                    }
                %>
                <%
                    if (request.getParameter("logout") != null) {
                %>
                <span>已经安全退出!</span>
                <%
                    }
                %>
                <p class="text-muted text-center">
                    <a href="login.html#"><small>忘记密码了?</small></a> | <a
                        href="<%=basePath%>/register">注册一个新账号</a>
                </p>

            </form>
        </div>
    </div>
    <script src="<%=basePath%>/res/js/jquery.min.js?v=2.1.4"></script>
    <script src="<%=basePath%>/res/js/bootstrap.min.js?v=3.3.6"></script>

</body>
<script type="text/javascript"
    src="<%=basePath%>/res/js/jquery-1.12.4.min.js"></script>
<script type="text/javascript" src="<%=basePath%>/res/js/jquery.md5.js"></script>
<script type="text/javascript">
    $(function() {
        $(‘#username‘).val();
    });

    function login() {
        if($(".drag_bg").width()<260){
            return false;
        }
        var password = $(‘#password‘).val();
        password = $.md5(password);
        console.log(password);
        $(‘#password‘).val(password);
        return true;
    }
</script>
<script>
    (function(window, document, undefined) {
        var dog = {//声明一个命名空间,或者称为对象
            $ : function(id) {
                return document.querySelector(id);
            },
            on : function(el, type, handler) {
                el.addEventListener(type, handler, false);
            },
            off : function(el, type, handler) {
                el.removeEventListener(type, handler, false);
            }
        };
        //封装一个滑块类
        function Slider() {
            var args = arguments[0];
            for ( var i in args) {
                this[i] = args[i]; //一种快捷的初始化配置
            }
            //直接进行函数初始化,表示生成实例对象就会执行初始化
            this.init();
}
Slider.prototype = {
            constructor : Slider,
            init : function() {
                this.getDom();
                this.dragBar(this.handler);
            },
            getDom : function() {
                this.slider = dog.$(‘#‘ + this.id);
                this.handler = dog.$(‘.handler‘);
                this.bg = dog.$(‘.drag_bg‘);
            },
            dragBar : function(handler) {
                var that = this, startX = 0, lastX = 0, doc = document, width = this.slider.offsetWidth, max = width
                        - handler.offsetWidth, drag = {
                    down : function(e) {
                        var e = e || window.event;
                        that.slider.classList.add(‘unselect‘);
                        startX = e.clientX - handler.offsetLeft;
                        console.log(‘startX: ‘ + startX + ‘ px‘);
                        dog.on(doc, ‘mousemove‘, drag.move);
                        dog.on(doc, ‘mouseup‘, drag.up);
                        return false;
                    },
                    move : function(e) {
                        var e = e || window.event;
                        lastX = e.clientX - startX;
                        lastX = Math.max(0, Math.min(max, lastX)); //这一步表示距离大于0小于max,巧妙写法
                        console.log(‘lastX: ‘ + lastX + ‘ px‘);
                        if (lastX >= max) {
                            handler.classList.add(‘handler_ok_bg‘);
                            that.slider.classList.add(‘slide_ok‘);
                            dog.off(handler, ‘mousedown‘, drag.down);
                            drag.up();
                        }
                        that.bg.style.width = lastX + ‘px‘;
                        handler.style.left = lastX + ‘px‘;
                    },
                    up : function(e) {
                        var e = e || window.event;
                        that.slider.classList.remove(‘unselect‘);
                        if (lastX < width) {
                            that.bg.classList.add(‘ani‘);
                            handler.classList.add(‘ani‘);
                            that.bg.style.width = 0;
                            handler.style.left = 0;
                            setTimeout(function() {
                                that.bg.classList.remove(‘ani‘);
                                handler.classList.remove(‘ani‘);
                            }, 300);
                        }
                        dog.off(doc, ‘mousemove‘, drag.move);
                        dog.off(doc, ‘mouseup‘, drag.up);
                    }
                };
                dog.on(handler, ‘mousedown‘, drag.down);
            }
        };
        window.S = window.Slider = Slider;
    })(window, document);
    var defaults = {
        id : ‘slider‘
    };
    new S(defaults);
</script>
</html>
时间: 2024-08-30 14:02:39

js登录滑动验证,不滑动无法登陆的相关文章

前端滑动验证+拼图滑动验证效果

相信大家都玩过B站,B站在登陆的时候有个拼图滑动验证,今天就整合一下前端实现的滑动验证 拖动滑动验证(无背景图片) <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>拖动滑块验证</title> </head> <bod

selenium模板实现实现滑动验证

1心得体会 之前还没有听说过selenium模板,现在发现这个模板挺牛逼的.能自动模拟用户操作浏览器,不过缺点就是慢了写,但是不需要自己写cookie.headers这些了,毕竟是用真实的浏览器去模板.主要是好不是很熟练,还需要多敲代码. 2.selenium介绍 selenium是一款自动化测试工具,支持很多主流的浏览器.只要浏览器安装了依赖驱动就行. 下面代码是模拟访问百度操作 1 from selenium import webdriver 2 driver = webdriver.Chr

Spring Boot 整合滑动验证

极验是一种利用生物特征与人工智能技术解决人机交互安全问题的技术,旨在解决安全验证问题,例如:账号登录.短信验证.批量注册等,目前极验.网易易盾比较出众. 在这里主要使用的极验Geetest和springboot 框架整合. 1.首先到极验官网注册账号获取ID和KEY,这里赘述. 2.到极验官网下载,使用SDK,点击下载,如果你使用时Git工具, #git clone https://github.com/GeeTeam/gt3-java-sdk.git 3.引入SDK到Springboot项目中

滑动验证

代码 from selenium import webdriver # 用来驱动浏览器的 from selenium.webdriver import ActionChains # 破解滑动验证码的时候用的 可以拖动图片 import time from PIL import Image import random option = webdriver.ChromeOptions() option.add_argument('disable-infobars') driver = webdriv

图片滑动验证的实现

有时候在页面登录或者注册的时候,为了防止不是机器人操作,会让用户手动来滑动图片验证.我在做项目时用到了这个功能,这里记录一下自己的想法和做法. 实现的效果如图所示: 好了,现在来说说想法. 关于图片滑动验证一般是要前后端来交互的.首先是要后台处理好图片,然后将处理出来的图片返回到前台.后台随机抽取一张模板图片,也就是完整的图片,然后通过代码来操作将一块区域的图扣出来,将扣掉的地方填成灰色或者黑色,这样,素材就有了. 在返回到前台时,要将图片转码为base编码.在前台接收时,要使用如下方式来讲ba

js登录与注册验证

经常写js验证,感觉很麻烦,这次就把他整理贴出来,以后可以直接用了.具体介绍这里不罗嗦了,直接贴代码,相信大家都能理解代码的含义 登录验证: Jsp页面代码: <form action="userLogin.action" method="post" onsubmit="return login();" id="loginForm"> <h3>用户登录</h3> <br /> 用

java登陆验证码与JS无刷新验证

最近公司的项目的登陆模块由我负责,所以就做了个登陆小功能进行练手,其包括了用jQuery对用户名和密码进行不为null验证,和出于安全性考虑加了一个验证码的校验 别的不说先上代码 controller层 CreateImage.java package com.controller; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage;

C# Selenium 破解腾讯滑动验证

什么是Selenium? WebDriver是主流Web应用自动化测试框架,具有清晰面向对象 API,能以最佳的方式与浏览器进行交互. 支持的浏览器: Mozilla Firefox Google Chrome Microsoft Internet Explorer Opera Safari Apple iPhone Android browsers 具体学习相关的地址: 简书:https://www.jianshu.com/search?q=c%23%20Selenium&page=1&

Android基础控件——SeekBar的使用、仿淘宝滑动验证

学习,学习,学以致用 SeekBar是一个拖动条控件,最简单的案例就是我们的调节音量,还有音频视频的播放,传统的SeekBar样式,如图 传统的实现太简单,不足以让我们到能装逼的地步.本来是打算实现滴滴出行滑动完成订单的效果,可惜找不到效果图,今天也就用淘宝的滑动验证来作为实例 SeekBar:使用progressDrawable属性自定义SeekBar 拖动块:使用thumb属性更改,其实就是一张图片 文字:使用RelativeLayout嵌套在一起 其效果是 android:max:设置进度

js登录验证与提交

<script> var refer='https://www.juhe.cn/myData/index/checked/0'; var active ='' $(document).ready(function(){ nslog(1200); if(active!='') { nslog(1201); layer.msg('账号激活成功', {icon: 1,time: 1500}, function(){}); } $("#loginBtn").click(functi