当前位置: 首页 > news >正文

课堂网站开发短视频seo营销

课堂网站开发,短视频seo营销,传奇手游网站,做网站的术语用canvas手写一个数字、字母混合的行为验证码 实现效果源码 实现效果 源码 import Taro from "tarojs/taro"; import { View, Canvas, Input, Button } from "tarojs/components"; import { useState, useEffect } from "react"; // 画随机线函…

用canvas手写一个数字、字母混合的行为验证码

  • 实现效果
  • 源码

实现效果

在这里插入图片描述

源码

import Taro from "@tarojs/taro";
import { View, Canvas, Input, Button } from "@tarojs/components";
import { useState, useEffect } from "react";
// 画随机线函数
function drawline(canvas, context) {// 随机线的起点x坐标是画布x坐标0位置,y坐标是画布高度的随机数context.moveTo(Math.floor(Math.random() * canvas.width),Math.floor(Math.random() * canvas.height));// 随机线的终点x坐标是画布宽度,y坐标是画布高度的随机数context.lineTo(Math.floor(Math.random() * canvas.width),Math.floor(Math.random() * canvas.height));// 线条的款context.lineWidth = 0.5;// 线条的描边属性:颜色透明度context.strokeStyle = "rgba(50,50,50,0.3)";// 在画布上画线context.stroke();
}// 画随机点函数
function drawDot(canvas, context) {let px = Math.floor(Math.random() * canvas.width),py = Math.floor(Math.random() * canvas.height);context.moveTo(px, py);context.lineTo(px + 1, py + 1);context.lineWidth = 0.1;context.stroke();
}const Captcha = () => {const [text, setText] = useState("");const [value, setValue] = useState("");useEffect(() => {drawCaptcha();}, []);const drawCaptcha = () => {const nums = ["1","2","3","4","5","6","7","8","9","0","A","B","C","D","E","F","G","H","I","J","K","L","M","N","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","p","q","r","s","t","u","v","w","x","y","z",];// 创建 canvas 画布,并设置宽高const context = Taro.createCanvasContext("myCanvas");// canvas.width = 98;// canvas.height = 45;const canvas = {width: 98,height: 45,};// 画布填充色context.setFillStyle("#00BEFD");// 清空画布context.fillRect(0, 0, canvas.width, canvas.height);// 设置字体颜色context.fillStyle = "white";// 设置字体context.font = "25px Microsoft YaHei";const rand = [],x = [],y = [];// 绘制校验码到画布上for (let i = 0; i < 4; i++) {rand.push(rand[i]);rand[i] = nums[Math.floor(Math.random() * nums.length)];x[i] = i * 20 + 10;y[i] = Math.random() * 20 + 20;context.fillText(rand[i], x[i], y[i]);}// 画2条随机线,可以根据需要增减,画随机线主要是为了提高识别难度,防范机器识别for (let i = 0; i < 2; i++) {drawline(canvas, context);}// 画20个随机点,随机点的意义同随即线for (let i = 0; i < 20; i++) {drawDot(canvas, context);}context.draw();const currentText = rand.join("").toUpperCase();setText(currentText);console.log("res", currentText);};const validateCode = () => {if (value.toUpperCase() === text) {console.log("正确");} else {console.log("错误");}};return (<View><Canvasid="myCanvas"canvasId="myCanvas"style="width: 100px; height: 50px;"/><span onClick={drawCaptcha}>看不清换一张</span><InputcursorSpacing={100}onInput={(e) => setValue(e.target.value)}placeholder="输入验证码"value={value}/><Button onClick={validateCode}>验证</Button></View>);
};export default Captcha;
http://www.yidumall.com/news/51968.html

相关文章:

  • 汉中网站建设汕头seo外包平台
  • 网站怎么做推广和优化如何找友情链接
  • 八百客crm管理系统seo建站优化推广
  • 厦门建设局网站改到哪搭建网站的五大步骤
  • wordpress 导出数据seo排名优化哪家好
  • 事业单位网站建设费入什么科目seo的方式有哪些
  • 广东营销型网站建设报价渠道推广策略
  • 网站正在建设中模板 htmlseo教程 百度网盘
  • 工业设计网站哪个最怎么在百度上发布信息
  • 成都响应式网站开发谷歌搜索入口365
  • 网站源码和模板的区别百度邮箱注册入口
  • 建立网站的目录结构时最好的做法是公司seo是什么级别
  • 网站托管公司需要留电话号码的广告
  • 知名个人网站中牟网络推广
  • 自适应网站举例站长推广网
  • 紫金网站制作目前搜索引擎排名
  • 网站建设 010百度蜘蛛池自动收录seo
  • wordpress 小说网站快手作品免费推广软件
  • 做情趣导航网站可以吗网站优化主要优化哪些地方
  • 山东济南疫情最新消息今天绍兴seo推广
  • 网站弹出广告的是怎么做的向日葵seo
  • 长春火车站电话人工服务热线广东seo外包服务
  • 做毕业设计一个网站的数据来源网络营销网站推广方法
  • b2c商城网站近期国际热点大事件
  • 个人主页html下载简述什么是seo及seo的作用
  • 论坛程序做导航网站广告资源对接平台
  • 重庆万州网站建设外链发布网站
  • 自己做网站咋做自建站平台
  • 微信网站怎么做下载附件企业网站营销的实现方式
  • 做网站更新维护工资高吗泉州seo排名扣费