首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

jquery 拖拽拼图验证

基础概念

jQuery 拖拽拼图验证是一种基于 jQuery 的前端交互验证方式,用户需要通过拖拽将一个碎片拼接到正确的位置来完成验证。这种方式可以有效防止自动化脚本的攻击,提高网站的安全性。

优势

  1. 用户体验好:拖拽操作直观易懂,用户操作简单。
  2. 安全性高:相比传统的验证码,拖拽拼图验证更难被自动化脚本破解。
  3. 灵活性强:可以根据需求自定义拼图的样式和难度。

类型

  1. 固定位置拼图:拼图碎片的位置是固定的,用户需要将碎片拖动到指定位置。
  2. 随机位置拼图:拼图碎片的位置是随机的,增加了验证的难度。

应用场景

  1. 网站登录:在用户登录时进行验证,防止恶意登录。
  2. 表单提交:在用户提交重要表单时进行验证,确保提交者是人类用户。
  3. 支付验证:在进行支付操作前进行验证,防止欺诈行为。

示例代码

以下是一个简单的 jQuery 拖拽拼图验证的示例代码:

代码语言:txt
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>jQuery 拖拽拼图验证</title>
    <style>
        #puzzle {
            position: relative;
            width: 300px;
            height: 200px;
            border: 1px solid #ccc;
        }
        .puzzle-piece {
            position: absolute;
            width: 100px;
            height: 100px;
            background-color: #eee;
            border: 1px solid #ccc;
            cursor: move;
        }
        #target {
            position: absolute;
            width: 100px;
            height: 100px;
            background-color: #fff;
            border: 2px dashed red;
        }
    </style>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
    <div id="puzzle">
        <div class="puzzle-piece" style="left: 0px; top: 0px;"></div>
        <div class="puzzle-piece" style="left: 100px; top: 0px;"></div>
        <div class="puzzle-piece" style="left: 200px; top: 0px;"></div>
        <div class="puzzle-piece" style="left: 0px; top: 100px;"></div>
        <div class="puzzle-piece" style="left: 100px; top: 100px;"></div>
        <div class="puzzle-piece" style="left: 200px; top: 100px;"></div>
        <div id="target" style="left: 100px; top: 100px;"></div>
    </div>

    <script>
        $(document).ready(function() {
            var target = $('#target');
            var pieces = $('.puzzle-piece');

            pieces.draggable({
                revert: 'invalid',
                containment: '#puzzle'
            });

            pieces.on('dragstop', function(event, ui) {
                var piece = $(this);
                var offset = piece.offset();
                var targetOffset = target.offset();

                if (offset.left === targetOffset.left && offset.top === targetOffset.top) {
                    piece.css('background-color', '#fff');
                    target.css('border-style', 'solid');
                    // 验证成功
                    alert('验证成功!');
                } else {
                    piece.draggable('option', 'revert', true);
                }
            });
        });
    </script>
</body>
</html>

可能遇到的问题及解决方法

  1. 拖拽不流畅
    • 原因:可能是由于页面其他元素的干扰或者浏览器性能问题。
    • 解决方法:优化页面结构,减少不必要的 DOM 元素;使用 CSS3 动画代替 JavaScript 动画;确保浏览器版本较新。
  • 拖拽超出边界
    • 原因:可能是由于 containment 属性设置不正确。
    • 解决方法:确保 containment 属性设置为包含拼图容器,如 #puzzle
  • 拖拽后无法正确验证
    • 原因:可能是由于验证逻辑错误或者元素位置计算不准确。
    • 解决方法:仔细检查验证逻辑,确保元素位置计算准确;可以使用调试工具查看元素的实际位置。

通过以上方法,可以有效解决 jQuery 拖拽拼图验证中可能遇到的问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

js滑动拼图验证插件(验证码拼图怎么滑动)

大家在很多网站上应该见过这样的验证方式,用户需要拖动一个小滑块并将小滑块拼接到背景图上空缺的位置才能完成验证,这种拖动验证码时基于用户行为的,比传统在移动端有更好的体验,减少用户的输入。...大家在很多网站上应该见过这样的验证方式,用户需要拖动一个小滑块并将小滑块拼接到背景图上空缺的位置才能完成验证,这种拖动验证码时基于用户行为的,比传统在移动端有更好的体验,减少用户的输入。...目前市面上做的好的拖动验证、用户行为验证有极验验证码、网易易盾验证等,这些第三方验证一般需要收费,本文给大家介绍一款免费的拖动验证码,使用PHP+javascript实现。...主要技术应用 1、php抠图 2、js canvas画图 3、破解干扰 4、使用webp图片格式 使用方法 首先引入相关的js和css文件: 然后在需要放置滑块验证码的位置加入如下代码: 这是一个用来点击弹出滑块验证码的按钮...当然拖动验证码的安全性其实并不怎么样,它利 ,然后通过session来验证 演示下载参考这下这里:http://t.cn/EyskTlc 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn

8.8K20

微信小程序(游戏)----拖拽拼图(拖拽和切换功能的实现)

效果图 touchstart 获取当前触摸位置的坐标(x,y); 记录触摸点下view的各项坐标值; 记录触摸点下view的起点坐标,背景坐标,以及触摸点的坐标; 设置拖拽view为显示状态、设置起始坐标以及背景坐标为记录对应个坐标...this.currentY = e.touches[0].pageY; } touchmove 记录移动触摸点的当前坐标; 计算当前触摸点和起始触摸点的差距坐标; 记录当前触摸点下的view的各项坐标对象; 设置拖拽...currentPY: _this.originPY }) } touchend 切换背景坐标,将最后触摸点下view的背景坐标切换为开始触摸点下view的背景坐标; 设置拖拽...}) } }) } } }) }; } } 判断是否拼图成功...通过 JSON.stringify 方法将 this.typeArr 和 this.newTypeArr 转化比较,判断是否拼图成功!

1.6K30
  • 实现拼图滑动验证码

    实现拼图滑动验证码 拼图滑动验证码的纯前端简单实现,重要部分都已标注注释,如果需要配合后端可以参考此思路,后端处理图片生成一个带缺口的背景图与一个符合缺口的拼图,并将取得拼图块的位置记录到SESSION...,将图片与拼图传给前端展示,当用户拖动并松开鼠标后将鼠标轨迹与停留位置发送到后端,后端从SESSION中取得位置信息并与前端传递的位置进行对比,有需要的话可以分析此用户轨迹用以区分人机,如果位置偏差小于一定阈值则认为拼图成功...DOCTYPE html> 滑动拼图验证码 <link rel="stylesheet" type="text/css" href...撤销事件 if(Math.abs(slideBlock.offsetLeft - slideBlockMask.offsetLeft)验证成功..."); // 偏移距离小于2则认为成功 else alert("验证失败"); // 否则失败 slideBlock.style.left

    1.9K11

    Android实现滑块拼图验证码功能

    滑块拼图验证码应该算是很常见的功能了,验证码是可以区分用户是人还是机器。可以防止破解密码、刷票等恶意行为。本文将介绍Android拼图滑块验证码控件的实现过程。希望能帮助到大家。...实现步骤: 1、定义自定义属性; 2、确认目标位置,这里使用的是阴影图片来遮盖背景图片; 3、创建与目标位置相结合的滑块图片; 4、设置目标阴影图片和滑块图片可以随机旋转,并保持一致; 5、创建拖拽条...,使滑块随着拖拽条的拖拽而移动; 6、判断是否验证成功。...,使滑块随着拖拽条的拖拽而移动 //滑块监听 mSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener...mDY.testPuzzle(); } }); 6、判断是否验证成功 /** * 验证是否拼接成功 */

    1.7K10

    jquery validation engine ajax验证,jQuery Validation Engine 表单验证「建议收藏」

    说明 required validate[required] 表示必填项 groupRequired[string] validate[groupRequired[grp]] 在验证组为 grp 的群组...integer validate[custom[integer]] 验证整数 phone validate[custom[phone]] 验证电话号码 email validate[custom[email...]] 验证 E-mail 地址 url validate[custom[url]] 验证 url 地址,需以 http://、https:// 或 ftp:// 开头 ipv4 validate[custom...[ajax[ajaxName]] 自定义 ajax 验证 ‘ajaxName’: { ‘url’: ‘phpajax/ajaxValidateFieldUser.php’, /* 验证程序地址 */...‘extraData’: ‘name=eric’, /* 额外参数 */ ‘alertTextOk’: ‘验证通过时的提示信息’, ‘alertText’: ‘验证不通过时的提示信息’, ‘alertTextLoad

    1.5K20
    领券