文档章节

图片验证码的生成和验证

Atom-Pan
 Atom-Pan
发布于 2016/10/24 13:26
字数 334
阅读 19
收藏 0

前台代码:

<div id="login_validate_code">
  <input align="top" type="text" id="rand" value="验证码" style="width:100px;" 
    name="rand" maxlength="4" size="4"/>
  <img id="image" src="image.jsp" onclick="this.src=this.src+'?';" width="80" 
    height="25" align="top" alt="看不清,请点击图片" >
  </img>
</div>

用Jsp文件生成验证码:

<%@page contentType="image/jpeg" import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*"%>
<%!
  Color getRandColor(int fc, int bc) {
	Random random = new Random();
    if (fc > 255)
      fc = 255;
    if (bc > 255)
      bc = 255;
    int r = fc + random.nextInt(bc - fc);
    int g = fc + random.nextInt(bc - fc);
    int b = fc + random.nextInt(bc - fc);
    return new Color(r, g, b);
  }
  char getRandomChar(){
   String CHAR_STRING = "abcdefghjkmnpqrstuvwxyz";
   Random rand = new Random();
   int rand_value = rand.nextInt(23); 
  	return CHAR_STRING.charAt(rand_value);
  }
%>
<%
  response.setHeader("Pragma", "No-cache");
  response.setHeader("Cache-Control", "no-cache");
  response.setDateHeader("Expires", 0);
  int width = 70, height = 20;
  BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
  Graphics g = image.getGraphics();
  Random random = new Random();
  g.setColor(getRandColor(200, 250));
  g.fillRect(0, 0, width, height);
  g.setFont(new Font("DIALOG", Font.BOLD, 18));
  g.setColor(getRandColor(160, 200));
  for (int i = 0; i < 100; i++) {
    int x = random.nextInt(width);
    int y = random.nextInt(height);
    int xl = random.nextInt(12);
    int yl = random.nextInt(12);
    g.drawLine(x, y, x + xl, y + yl);
  }
  String sRand = "";
  for (int i = 0; i < 4; i++) {
  	char randChar =  getRandomChar();
    sRand += String.valueOf(randChar);
    g.setColor(new Color(20 + random.nextInt(110), 20 + random.nextInt(110), 20 + random.nextInt(110)));
    g.drawString(String.valueOf(randChar), 16 * i + 6, 16);
  }
  session.setAttribute("Rand", sRand);
  g.dispose();
  response.reset(); 
  ImageIO.write(image, "JPEG", response.getOutputStream());
  out=pageContext.pushBody();
%>

如何进行验证:

在生成验证码的代码中将验证码的值保存在Session中,后台进行验证时只需将用户输入的值和Session保存的值进行比较即可。

© 著作权归作者所有

下一篇: 游标
Atom-Pan
粉丝 0
博文 11
码字总数 3886
作品 0
厦门
程序员
私信 提问
【代码实现】PHP生成各种随机验证码

文章来源:PHP开发学习门户 (自行开发的个人网站) 验证码在WEB应用中非常重要,通常用来防止用户恶意提交表单,如恶意注册和登录、论坛恶意灌水等。本文将通过实例讲解使用PHP生成各种常见...

PHP开发学习门户
2014/10/07
807
0
Zend的Captcha机制

如何生成验证码图片?使用php的GD? ok,right。其实Zend的Captcha模块已经封装好了。这篇文章就说一下如何使用Zend的Captcha模块。 环境安装 首先Zend的Captcha需要安装GD。查看有没有安装G...

王二狗子11
2018/01/08
0
0
网站验证码的生成原理、难度控制,及python实现

图片验证码已经广泛的使用在各种反爬虫的场景中,验证码的的生成验证过程对于开发者来说是零成本的,对于用户体验来说可能稍差、但是对于爬虫来说是致命的和高成本的。 下面将介绍使用pytho...

python之战
03/22
0
0
springboot整合kaptcha验证码

前言: 关于kaptcha简介以及spring整合kaptcha,我在另一篇文章中已详细讲解,请参考:spring整合kaptcha验证码。 本文将介绍springboot整合kaptcha的两种方式。 开发工具及技术: 1、idea 2017...

贪挽懒月
2018/05/10
0
0
PHP验证码生成脚本--Securimage

Securimage是一个PHP验证码生成脚本,用来生成复杂的验证码图片。易于添加到现有网站表单中。Securimage能够实现从生成复杂的验证码图片到确保用户输入验证码的正确性。 Securimage的特性: ...

匿名
2009/12/02
8.1K
0

没有更多内容

加载失败,请刷新页面

加载更多

Dubbo-自适应拓展机制

背景 在 Dubbo 中,很多拓展都是通过 SPI 机制进行加载的,比如 Protocol、Cluster、LoadBalance 等,这些都是Dubbo的基础组件。这些基础组件的拓展不是在系统框架启动阶段被加载,而是拓展方...

rock-man
24分钟前
5
0
Kali安装fcitx输入法(五笔)

安装fcitx > sudo apt-get install fcitx-rime fcitx-config-gtk3 重启 > sudo reboot fcitx配置 效果就是这样 配置输入法切换 系统设置...

yeahlife
26分钟前
4
0
IE之css3效果兼容

本文转载于:专业的前端网站▷IE之css3效果兼容 一、兼容css阴影效果(ie滤镜) 1.Shadow,阴影 .shadow { -moz-box-shadow: 3px 3px 4px #000; -webkit-box-shadow: 3px 3px 4px #000; box-sha...

前端老手
29分钟前
4
0
NiushopB2C开源商城功能列表说明:

B2C单商户免费版:PC商城+微商城 B2C单商户标准版:PC商城+微商城组合套餐+阶梯优惠核销功能 B2C单商户企业版:PC商城+微商城拼团+组合套餐阶梯优惠+核销功能 B2C单商户分销版:PC商城+微商城...

niushop-芳
31分钟前
4
0
图片如何转GIF图片呢

如何将生活中拍摄的好玩有趣的图片制作成GIF动图呢?相信很多小伙伴都不知道要如何制作,其实制作方法非常的简单,下面分享一个图片转GIF动图的方法,希望这个方法能够帮助大家在与好友斗图时...

白米稀饭2019
38分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部