<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<title>Signin Template for Bootstrap</title>
<link href="https://cdn.jsdelivr.net/npm/@bootcss/v3.bootcss.com@1.0.29/dist/css/bootstrap.min.css" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/@bootcss/v3.bootcss.com@1.0.29/assets/css/ie10-viewport-bug-workaround.css" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/@bootcss/v3.bootcss.com@1.0.29/examples/signin/signin.css" rel="stylesheet">
</head>
<body>
<div class="container">
<form class="form-signin">
<h2 class="form-signin-heading">Please sign in</h2>
<input type="email" id="inputEmail" class="form-control" placeholder="Email address" required autofocus>
<input type="password" id="inputPassword" class="form-control" placeholder="Password" required>
<input style="width: 66%;float: left;" type="text" class="form-control" value="" placeholder="請輸入驗證碼(區分大小寫)"id ="text">
<canvas id="canvas" width="100" height="43" onclick="dj()"
style="border: 1px solid #ccc;border-radius: 5px;"></canvas>
<div class="checkbox">
<label>
<input type="checkbox" value="remember-me"> Remember me
</label>
</div>
<center>
<button class="btn btn-lg btn-primary" onclick="sublim()" type="submit">登陸</button>
<button class="btn btn-lg btn-primary " type="submit">注冊</button>
</center>
</form>
</div> <!-- /container -->
<!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
<script src="https://cdn.jsdelivr.net/npm/@bootcss/v3.bootcss.com@1.0.29/assets/js/ie10-viewport-bug-workaround.js"></script>
<script>
var show_num = [];
draw(show_num);
function dj(){
draw(show_num);
}
function sublim(){
var val=document.getElementById("text").value;
var num = show_num.join("");
if(val==''){
alert('請輸入驗證碼!');
}else if(val == num){
alert('提交成功!');
document.getElementById(".input-val").val('');
draw(show_num);
}else{
alert('驗證碼錯誤!\n你輸入的是: '+val+"\n正確的是: "+num+'\n請重新輸入!');
document.getElementById("text").value='';
draw(show_num);
}
}
function draw(show_num) {
var canvas_width=document.getElementById('canvas').clientWidth;
var canvas_height=document.getElementById('canvas').clientHeight;
var canvas = document.getElementById("canvas");//獲取到canvas的對象,演員
var context = canvas.getContext("2d");//獲取到canvas畫圖的環境,演員表演的舞台
canvas.width = canvas_width;
canvas.height = canvas_height;
var sCode = "A,B,C,E,F,G,H,J,K,L,M,N,P,Q,R,S,T,W,X,Y,Z,1,2,3,4,5,6,7,8,9,0,q,w,e,r,t,y,u,i,o,p,a,s,d,f,g,h,j,k,l,z,x,c,v,b,n,m";
var aCode = sCode.split(",");
var aLength = aCode.length;//獲取到數組的長度
for (var i = 0; i <= 3; i++) {
var j = Math.floor(Math.random() * aLength);//獲取到隨機的索引值
var deg = Math.random() * 30 * Math.PI / 180;//產生0~30之間的隨機弧度
var txt = aCode[j];//得到隨機的一個內容
show_num[i] = txt;
var x = 10 + i * 20;//文字在canvas上的x坐標
var y = 20 + Math.random() * 8;//文字在canvas上的y坐標
context.font = "bold 23px 微軟雅黑";
context.translate(x, y);
context.rotate(deg);
context.fillStyle = randomColor();
context.fillText(txt, 0, 0);
context.rotate(-deg);
context.translate(-x, -y);
}
for (var i = 0; i <= 5; i++) { //驗證碼上顯示線條
context.strokeStyle = randomColor();
context.beginPath();
context.moveTo(Math.random() * canvas_width, Math.random() * canvas_height);
context.lineTo(Math.random() * canvas_width, Math.random() * canvas_height);
context.stroke();
}
for (var i = 0; i <= 30; i++) { //驗證碼上顯示小點
context.strokeStyle = randomColor();
context.beginPath();
var x = Math.random() * canvas_width;
var y = Math.random() * canvas_height;
context.moveTo(x, y);
context.lineTo(x + 1, y + 1);
context.stroke();
}
}
function randomColor() {//得到隨機的顏色值
var r = Math.floor(Math.random() * 256);
var g = Math.floor(Math.random() * 256);
var b = Math.floor(Math.random() * 256);
return "rgb(" + r + "," + g + "," + b + ")";
}
</script>
</body>
</html>