模拟验证码

css:

<style>

        * { margin: 0; padding: 0;}

           .warp { width: 400px;height: 200px;margin: auto;}

            .auth-code {width: 150px;height: 30px;border: 3px solid red;text-align: center;line-height: 30px;}

            .txt {width: 150px;height: 30px;line-height: 30px;font-size: 20px;}

            .gain-data { width: 100px;height: 35px;}

            .submit-data { width: 50px;height: 35px;}  

    </style>

布局:

<div class="warp">

        <p class="auth-code">4587</p>

        <input type="text" class="txt" placeholder="请输入验证码">

        <button class="gain-data">获取验证码</button>

        <button class="submit-data">提交</button>

    </div>

jquery代码

<script>

        //方法1:用数组存储数据// var ma=['12tg','34nm','90ml','32cc','67jj','12tg','34nm','95ml','38cc','69jj']

        // setInterval间歇定时器:相隔想用的时间,重复执行

        // setTimeout一次性定时器:延时执行只执行一次

 

        var int = null; //暂时存放定时器

        var time = 3; //自定义设置事件

        $('.gain-data').click(function () {

            $('.gain-data').prop('disabled', true) //'disabled',true可以点击

            if (int) clearInterval(int); //如果代码在一行if后面可以省略{}

            int = setInterval(function () { //开启定时器

                time--; //time=10递减

                $('.gain-data').text(time); //将time的值赋给按钮

                if (time == 0) { //判断time=0时

                    $('.gain-data').text('再次获取'); //给俺扭赋值

                    $('.gain-data').prop('disabled', false) //设置点击

                    clearInterval(int); //清除定时器

                    time = 3; //直接赋值  //var num = 100 num = 10 console.log(num);num=10

                }

            }, 1000)

            var str = 'mnbvcxzasdfghj0123klpoiuytrewq678MNBVCXZLKJH45GFDSAPOIUYT9REWQ'; //字符串  

            var len = str.length; //获取字符串长度

            var num = 4; //设置生成字符串长度

            var code = ''; //接受验证码

            for (var i = 0; i < num; i++) {

                var rand = Math.round(Math.random() * len - 1);

                code += str[rand]

            }

 

            //   var dd=$(this).index()

            //   $(this).prev().prev().text( `${ma[dd]}`)

            $(this).prev().prev().text(code)

        })

        $('.submit-data').click(function () {

            // var tt=$(this).prev().prev().prev().text();

            var tt = $(this).parent().children('.auth-code').text()

            var txt = $(this).parent().children('.txt').val();

            if (tt == txt) {

                alert('尊敬的用户您已验证成功')

            } else {

                alert('验证失败,请重新输入')

                $('.txt').val('')

            }

 

        })

    </script>

### 验证码生成与验证流程 验证码生成与验证通常分为两个部分:一是生成随机字符并将其可视化展示给用户;二是接收用户的输入并与原始字符进行比较以完成校验。以下是基于 Python 的具体实现方式。 #### 使用 `Pillow` 库生成验证码图像 为了生成带有文字的图片形式验证码,可以借助第三方库 Pillow 来绘制图形和文本[^1]。以下是一个完整的示例代码: ```python from PIL import Image, ImageDraw, ImageFont import random import string def generate_captcha(text_length=6): # 定义可能的字符集 characters = string.ascii_letters + string.digits # 创建空白画布 image = Image.new('RGB', (200, 80), color=(random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))) draw = ImageDraw.Draw(image) font = ImageFont.truetype("arial.ttf", size=40) # 字体文件需自行准备 captcha_text = ''.join(random.choices(characters, k=text_length)) # 绘制字符到图像上 for i, char in enumerate(captcha_text): x = 20 + i * 30 y = random.randint(10, 30) draw.text((x, y), char, fill=(random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)), font=font) return image, captcha_text image, text = generate_captcha() image.show() # 展示验证码图片 print(f"Captcha Text: {text}") # 打印实际验证码字符串用于测试 ``` 上述代码实现了动态生成包含字母和数字组合的验证码,并返回对应的明文供后续对比使用。 #### 用户输入后的验证码校验逻辑 当接收到用户提交的数据后,可以通过简单的字符串匹配来判断其正确与否。下面是一段演示如何执行这一过程的小程序片段: ```python def verify_captcha(user_input, actual_value): """Compare user input with the generated CAPTCHA value.""" if user_input.strip().lower() == actual_value.lower(): print("CAPTCHA verification succeeded.") return True else: print("Incorrect CAPTCHA entered. Please try again.") return False # Example usage of both functions together. if __name__ == "__main__": img, cap_val = generate_captcha() usr_inpt = input("Enter displayed CAPTCHA here:") result = verify_captcha(usr_inpt, cap_val) ``` 此脚本会先调用前面定义过的函数创建一张新的验证码图象及其关联的真实值,随后请求终端用户提供他们所看到的内容作为输入项来进行核对工作[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值