如何实现验证码的验证,如何用验证码
内容导航:
一、Java如何实现验证码验证功能
Java如何实现验证码验证功能呢?日常生活中,验证码随处可见,他可以在一定程度上保护账号安全,那么他是怎么实现的呢?Java实现验证码验证功能其实非常简单:用到了一个Graphics类在画板上绘制字母,随机选取一定数量的字母随机生成,然后在画板上随机生成几条干扰线。首先,写一个验证码生成帮助类,用来绘制随机字母:import
; import ; import ; import mage; import on; import eam; import ; import ;
public final class GraphicHelper { / * 以字符串形式返回生成的验证码,同时输出一个图片 * @param
width * 图片的宽度 * @param height * 图片的高度 * @param imgType * 图片的类型 * @param output
* 图片的输出流(图片将输出到这个流中) * @return 返回所生成的验证码(字符串) / public static String
create(final int width, final int height, final String imgType, OutputStream
output) { StringBuffer sb = new StringBuffer(); Random random = new Random();
BufferedImage image = new BufferedImage(width, height, _INT_RGB); Graphics
graphic = cs(); ((“F8F8F8”)); (0, 0, width, height); Color[] colors = new
Color[] { , , , , , , }; // 在 “画板”上生成干扰线条 ( 50 是线条个数) for (int i = 0; i < 50;
i++) { (colors[()]); final int x = (width); final int y = (height); final int
w = (20); final int h = (20); final int signA = an() ? 1 : -1; final int signB
= an() ? 1 : -1; (x, y, x + w * signA, y + h * signB); } // 在 “画板”上绘制字母 (new
Font(“Comic Sans MS”, , 30)); for (int i = 0; i < 6; i++) { final int temp =
(26) + 97; String s = ((char) temp); (s); (colors[()]); g(s, i * (width / 6),
height – (height / 3)); } (); try { (image, imgType, output); } catch
(IOException e) { kTrace(); } return (); } }
接着,创建一个servlet,用来固定图片大小,以及处理验证码的使用场景,以及捕获页面生成的验证码(捕获到的二维码与用户输入的验证码一致才能通过)。import
eam; import ception; import t; import et; import etRequest; import etResponse;
import on; @WebServlet(urlPatterns = “/verify/” ) public class
VerifyCodeServlet extends HttpServlet { private static final long
serialVersionUID = L; @Override protected void service(HttpServletRequest
request, HttpServletResponse response) throws ServletException, IOException {
// 获得 当前请求 对应的 会话对象 HttpSession session = n(); // 从请求中获得 URI ( 统一资源标识符 )
String uri = tURI(); (“hello : ” + uri); final int width = 180; // 图片宽度 final
int height = 40; // 图片高度 final String imgType = “jpeg”; // 指定图片格式 (不是指MIME类型)
final OutputStream output = Stream(); // 获得可以向客户端返回图片的输出流 // (字节流) //
创建验证码图片并返回图片上的字符串 String code = (width, height, imgType, output); (“验证码内容: ” +
code); // 建立 uri 和 相应的 验证码 的关联 ( 存储到当前会话对象的属性中 ) ute(uri, code); (ute(uri)); }
} 接着写一个HTML注册页面用来检验一下: .logo-container { margin-top: 50px ; } .logo-container
img { width: 100px ; } .message-container { height: 80px ; } .link-container {
height: 40px ; line-height: 40px ; } .link-container a { text-decoration: none
; }
效果如下图:在控制台接收到的图片中验证码的变化如下:当点击刷新页面的时候,验证码也会随着变化,但我们看不清验证码时,只要点击验证码就会刷新,这样局部的刷新可以用JavaScript来实现。在中,添加一个问号和一串后缀数字,当刷新时让后缀数字不断改变,那么形成的验证码也会不断变化,我们可以采用的一种办法是后缀数字用date代替,date获取本机时间,时间是随时变的,这样就保证了刷新验证码可以随时变化。代码如下:function
myRefersh( e ) { const source = ; // 获得原来的 src 中的内容 //( “source : ” + source )
; var index = ( “?” ) ; // 从 source 中寻找 ? 第一次出现的位置 (如果不存在则返回 -1 ) //( “index :
” + index ) ; if( index > -1 ) { // 如果找到了 ? 就进入内部 var s = ( 0 , index ) ; // 从
source 中截取 index 之前的内容 ( index 以及 index 之后的内容都被舍弃 ) //( “s : ” + s ) ; var
date = new Date(); // 创建一个 Date 对象的 一个 实例 var time = () ; // 从 新创建的 Date
对象的实例中获得该时间对应毫秒值 = s + “?time=” + time ; // 将 加了 尾巴 的 地址 重新放入到 src 上 //( ) ; }
else { var date = new Date(); = source + “?time=” + (); } }如回答不详细可追问
二、怎样用JavaScript实现验证码的验证
用JavaScript实现验证码的验证主要代码如下:
var code ; //在全局定义验证码
//产生验证码
= function createCode(){
code = “”;
var codeLength = 4;//验证码的长度
var checkCode = tById(“code”);
var random = new
Array(0,1,2,3,4,5,6,7,8,9,’A’,’B’,’C’,’D’,’E’,’F’,’G’,’H’,’I’,’J’,’K’,’L’,’M’,’N’,’O’,’P’,’Q’,’R’,
‘S’,’T’,’U’,’V’,’W’,’X’,’Y’,’Z’);//随机数
for(var i = 0; i < codeLength; i++) {//循环操作
var index = (()*36);//取得随机数的索引(0~35)
code += random[index];//根据索引取得随机数加到code上
}
= code;//把code值赋给验证码
}
//校验验证码
function validate(){
var inputCode = tById(“input”).se(); //取得输入的验证码并转化为大写
if( <= 0) { //若输入的验证码长度为0
alert(“请输入验证码!”); //则弹出请输入验证码
}
else if(inputCode != code ) { //若输入的验证码与产生的验证码不一致时
alert(“验证码输入错误!@_@”); //则弹出验证码输入错误
createCode();//刷新验证码
tById(“input”).value = “”;//清空文本框
}
else { //输入正确时
alert(“^-^”); //弹出^-^
}
}
三、怎么重新获取验证码
图形验证码怎么用: 登录铁路购票官网后,在登录名和密码的下方,是一大块验证码区域,中间写着“点此开始验证”。
点开后,验证码区域会出现8张图片,用户需根据文字提示,选出图中相对应的物品,这就是图形验证码。图片都是日常生活中常见的,如电线、帐篷、青蛙、仪表盘、篮球等。如果看不清图片,点击“刷新”,会出现另一组图片。记者登录时,验证码要求“请点击下图中所有的口哨”,8张图中,除了口哨,还有拖把、饮料等图。单击口哨后,图片被盖上了铁路logo的红戳,点击登录,成功进入购票页面。
图形验证码这样的验证方式虽然从未见过,但图片识别度较高,网友多次尝试刷新,均能正常
四、yii框架实现验证码为什么不要验证码
答:输入验证码是为了你的账号安全的角度考虑的(希望能帮到你,麻烦点击“好评”,谢谢你^_^)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/104040.html